kiwoo

Crear un sencillo portfolio con PHP y XML

En primer lugar vamos a mostrar una lista de nombres de proyectos usando los tags <ul> y <li> de html, es decir una lista no ordenada.

En el código php debemos parsear el documento XML y a continuación construir la lista en un bucle:

<?php
$xml = simplexml_load_file("portfolio.xml") or die("feed not loading");
print_r($xml); //solo para ver que hay
?>
<html>
<head>
<title>Mi portfolio</title>
</head>
<body>
<h1>Mi portfolio</h1>
<ul>
<?php
//mostrar la lista de proyectos
foreach($xml->project as $project){
    print "<li>".$project->name."</li>";
}
?>
</ul>
</body>
</html>

A partir de ese paso podemos añadir toda la información que queramos, como por ejemplo la imagen miniatura:

print "<li>";
print "<img src='".$project->thumb."'/>";
print $project->name."</li>\n";

La 'gracia' es combinar el código php con las marcas de html, es decir construir el html mediante php.

Para concatenar strings (cadenas de texto) en php usamos el simbolo '.' (un punto)

Sofisticando un poco más el ejemplo queremos que al clicar en un proyecto nos lleve a una pagina nueva, por ejemplo detalle.php, donde se mostrará toda la información del proyecto.

Esta página detalle.php será la misma para todos los proyectos, pero pasaremos en la url el parámtro que indicará cual de los proyectos es el que queremos mostrar, de la siguiente manera:

detalle.php?id=2

Esto es lo que se llama en HTML pasar una variable por GET

El primer paso es construir el link en cada uno de los elementos.

    print "<a href='detalle.php?id=".$i."'>";

Después creamos el archivo detalle.php.
Para "recoger" el parámetro id usamos la siguiente instrucción:

$id=$_GET['id'];

Como vamos a usar este valor como un índice numérico en un array debemos convertirlo a un entero:

$id=(int)($_GET['id']);

La página detalle completa podria ser así:

<?php
$xml = simplexml_load_file("portfolio.xml") or die("feed not loading");

$id=(int)($_GET['id']); //es necesario convertir el string a un número

$myproject=$xml->project[$id];
//print_r($myproject);
?>
<html>
<head>
<title>
<?php print $myproject->name ?>
</title>
</head>
<body>
<div id='content'>
<h1><?php print $myproject->name ?></h1>
<div id='desc'>
<?php print $myproject->desc ?>
</div>
<div id='foto'>
<img src='<?php print $myproject->image ?>'/>
</div>
</div>
</body>
</html>

 

 

AdjuntoTamaño
xml_php_portfolio.zip596.92 KB

Comentarios

Enviar un comentario nuevo

El contenido de este campo se mantiene privado y no se mostrará públicamente.
  • Las direcciones de las páginas web y las de correo se convierten en enlaces automáticamente.
  • Etiquetas HTML permitidas: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <br> <p> <pre>
  • Saltos automáticos de líneas y de párrafos.

Más información sobre opciones de formato