Nota: el tratamiento que se le da en este artículo al término “vista” no es el mismo que el que se le da en el patrón MVC.
Hoy en día, muchos sitios web ofrecen
la posibilidad de ver una página no sólo en HTML, sino en PDF, RTF
y RSS. Y los webmasters que se quieren subir al carro de la
web semántica ofrecen también la información en formato RDF.
Desde el punto de vista del HTML, el como una vista alternativa del , En la creación de sitios web con Por ejemplo, este blog se apoya sobre Smarty. El script index.php extrae de la base de datos los $posts = array( [0] = array ( "titulo" => "¿Te entiende Google? Web semántica y PLN",
[1] = array ( "titulo" => "La crisis de la web 2.0", $smarty->assign("posts", $posts); //Pasa a la plantilla la variable $posts Como podrás suponer, el código para obtener el array es a la plantilla y se renderiza. La plantilla permite programar No es complicado entender la idea. Pongamos por ejemplo que en el blog tengo 4 páginas: index (el índice, que Pues bien, el patrón Multivista Una buena manera de implementar esto Una de las vistas podríamos llamarla "por defecto" (HTML), que se mostraría si una de las plantillas Por supuesto, el usuario no tiene que En los tres ejemplos de vista que hemos que ya hemos comentado al comienzo, y en RDF con y otras propiedades. Este sistema ofrece una metodología El segundo método que veremos, más
navegador interpreta las etiquetas <link
rel="alternate">
contenido (habitualmente RSS). Desgraciadamente no se usa todo lo que
se debería (por ejemplo, las vistas en PDF y RTF que ofrece Joomla!
No tienen su link rel
sino un enlace normal en la página). Pero ¿y por dentro del sitio
web, en el CMS, cómo se implementa de una forma ordenada este modelo
multivista? Propongo dos modelos, compatibles entre sí: el primero,
más sencillo, basado en los motores de plantillas, y el segundo,
basado en la programación orientada a objetos. Este segundo modelo
se puede apoyar también en motores de plantillas, y ofrece, además,
la posibilidad de implementar programación personalizada para cada
plantilla. Vamos a verlo detenidamente.Introducción a los motores de plantillas
motores de plantillas (como por ejemplo Smarty), la idea es separar
el código (en nuestro caso PHP) de la interfaz (casi siempre HTML).
La manera de usar estos sistemas de plantillas es sencilla: a través
de código se extraen (de la base de datos, la entrada del usuario,
etc) y manipulan los datos. Los datos se pasan de la forma más
atómica posible a la plantilla, y ésta es un documento HTML con una
sintaxis especial que permite imprimir el valor de esas variables e
implementar una lógica sencilla.
últimos post y guarda los datos en un array multidimensional, de la
forma:
"texto" => "<p>A Google no le interesa entenderme...",
"fecha" => "03-02-2009 12:05:30"),
"texto" => "<p>Pensaba escribir un post sobre la crisis...",
"fecha" => "31-12-2008 16:55:28")
);
$smarty->display("index.tpl"); //Invoca al motor de Smarty para que renderice la plantilla
bastante sencillo, ya que la base de datos almacena la información en
un formato muy similar (tablas relacionales). Una vez obtenido, se le pasa la variable
$post
bucles para que recorra este array de posts, dándole formato a
cada uno:
{foreach $posts as $p}
<div id="post">
<h1>{$post.titulo}</h1>
<h3>Publicado a las {$post.fecha} por Isra</h3>
{$post.texto}
</div>
{/foreach}
muestra los últimos posts), post (muestra un posts en concreto y sus
comentarios), tag (últimos etiquetados con una determinada tag) y
archivo (todos los posts de un mes concreto). Por tanto, tendré 4
scripts y 4 plantillas.Una vista por cada formato
propone tener un conjunto de las plantillas (en este caso
index, post, tag y archivo) por cada vista que queramos
implementar: HTML, RSS, RDF. En el caso del formato PDF no podríamos
implementarlo con este sistema, ya que Smarty trabaja sobre texto
plano. Para ello usaremos el segundo modelo (orientado a objetos).
es, en vez de tener un directorio templates con las cuatro
plantillas, crear subdirectorios en templates para cada vista, que
contuviesen las plantillas:Antes
Después
de la vista requerida faltase. Desde el punto de vista del usuario,
podemos darle la oportunidad de elegir qué vista prefiere, a través
de la URL:
escribir manualmente la URL, sino se pueden dar enlaces para cambiar
de vista. [img de joomla o plone]
puesto, todos los formatos tienen la capacidad de enlazarse entre sí: HTML con
las etiquetas <link
rel="alternate">
RSS con los elementos link
de channel
rdf:about
sencilla, implementable sin grandes cambios en el CMS y fácilmente
escalable.
complejo y potente, lo dejamos para otro día
Ah, y por supuesto, este patrón se puede utilizar para gestionar skins y versiones imprimibles de las páginas.
Muy buen comentario, sencillo y directo.
Las tecnologías, incluso las más sencillas, si son bien utilizadas ofrecen un abanico de posibilidades muy amplio.
En clase veremos el patrón MVC pero nos centraremos más en la parte del Modelo y del Control. Aunque ya sabes que todas las ideas que encuentres o desarrolles sobre lo que comentas serán más que bien venidas
Espero impaciente el segundo
.
Pingback: PHPTAL, un digno competidor de Smarty | Israel Viana blog