En el post anterior hablé sobre los sistemas de templates y en especial de Smarty, la idea general es que no hace falta aprender un nuevo lenguaje de programación intermedio para las plantillas sino que con PHP puro es suficiente.
Yo considero que lo más importante es ser ordenado y de esta forma podemos separar la lógica de la programación del diseño.
Usando Savant 3
Lo que me gusta de este sistema de templates es que tiene las ventajas de Smarty sin sus problemas, en primer lugar nos ofrece las ventajas del uso de cache y sobre todo no exige que aprendamos un nuevo lenguaje de programación sino que usa nuestro PHP de siempre para mantener el esquema de programación MVC, lo pueden bajar AQUI
Uso de clases
Como dije antes ser ordenado permite separar la lógica de la programación del diseño, esto sumado al uso de clases y web modular. Veamos un ejemplo primero de lo que NO debemos hacer:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php $link = mysql_connect("localhost", "nobody"odigo">$link = mysql_connect("localhost", "nobody"); mysql_select_db("mydb", $link); $result = mysql_query("SELECT nombre, email FROM agenda", $link); echo "<table border = '1'> \n"; echo "<tr> \n"; echo "<td><b>Nombre</b></td> \n"; echo "<td><b>E-Mail</b></td> \n"; echo "</tr> \n"; while ($row = mysql_fetch_row($result)){ echo "<tr> \n"; echo "<td>$row[0]</td> \n"; echo "<td>$row[1]</td> \n"; echo "</tr> \n"; } echo "</table> \n"; ?> |
Ese desastre esta bien como ejemplo o cuando recién empezamos con PHP, esa ensalada de código no le sirve de nada al diseñador, veamos como sería eso mismo pero separando la lógica del diseño:
1 2 3 4 5 6 7 8 9 10 11 12 | <?php query_posts($query_string); ?> <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <div class="post"> <h2><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></h2> <div class="entry"> <?php the_content(); ?> </div> <p class="postmetadata">Posted in <?php the_category(', '); ?></p> </div> <?php endwhile; else: ?> <p>Sorry, no posts matched your criteria.</p> <?php endif; ?> |
En este caso copiado de WordPress, que para mi es uno de los mejores en lo que refiere al uso de MVC, si abrimos el archivo usando Dreamweaver, el diseñador podrá editarlo sin problemas basta que respete la ubicacion de las condiciones if y el bucle while (tal como ocurriría con Smarty pero sin sus complicaciones).
La conexión de base de datos se coloca en un archivo config.inc.php por ejemplo, y el manejo de la conexión en si se hace mediante una clase destinada a dicho fin, también es posible mediante clases separarlo en una cabecera PHP con la creación del objeto y luego el código html:
1 2 3 4 5 6 7 8 9 10 11 12 | <?php ///// no tocar ///// $noticia = new noticia(); if ($noticia->cuantos<=0) { ///// no tocar ///// ?> <p><b>No se encontraron noticias</b></p> <?php } else { for ($i=0; $i<$noticia->cuantos; $i++) { ?> <h2><?=$noticia->titulo?></h2> <p><span class="fecha"><?=$noticia->fecha?></span></p> <p><?=$noticia->texto?></p> <?php } ?> |
Con dejarle algunas indicaciones al diseñador que no debe tocar ciertas líneas, además de usar nombres muy claros para nuestra variables (titulo, fecha, texto, etc) le damos suficiente ayuda para que sepa que parte tocar y como organizarlo.
Hola Miguel,
Oye estoy tratando de aprender PHP y pues he querido proponerme hacer un sencillo CMS no nada como JOOMLA que lleva años haciendose pero si algo que pues me enseñe a manejar el contenido a mantener formatos con plantillas y demás.
Mi objetivo es irme haciendo un CMS sencillo que pueda administrar yo, sería posible recibir alguna ayuda de tu parte, algún tutorial que me recomiendes? Es posible contactarte por gmail? (es lo que más uso dbranco@gmail.com)
Armar un CMS no resulta muy complicado ya que buena parte ya esta hecha, por ejemplo si necesitas un editor ya tienes varios muy buenos como CKEditor, también existen sistemas para administrar templates, así que tu trabajo se reduce simplemente a grabar en la base de datos las páginas y luego llamar esos contenidos con unas consultas SQL.
Eso más o menos lo entiendo, pero lo que no veo o me cuesta (ya que no estoy acostumbrado a aplicaciones webs) es como ir cambiando de contenido de un sitio a otro y manteniendo la template, más si el contenido es muy largo como hago para ir cortando y pegando una misma imagen de fondo o tabla.
Otra cosa que se me hace un poco esotérica es por ejemplo Joomla y sus módulos, tú puedes programar tus propios módulos y luego añadirlos siguiendo una serie de reglas a éste, el resultado es impresionante ya que simplemente te preocupaste de la parte de programar el comportamiento del módulo, el diseño lo hizo otro y tu módulo va mostrando sus distintas páginas siguiendo el diseño inicial, esas cosas me desconciertan un poco.
Se que es una pregunta muy compleja y mucho que explicar pero tal vez con alguna tarea o tutorial que me ilumine pues comenzaría a arrancar.
Sobre lo primero en CSS busca la propiedad background-repeat, background-position entre otras. Sobre lo segundo no es complicado crear un módulo o un componente, pero debes dominar MVC, puedes ver eso en http://www.vojtechovsky.net/joomla/component-helloworld-2-create-tutorial-guide-en.html y http://docs.joomla.org/Tutorial:Creating_a_Hello_World_Module_for_Joomla_1.5
Acabo de descubri este sitio y me parece que no tenes idea de la ayuda que le brindas a todos los que no entendemos mucho y buscamos ayuda. Gracias por compartir tu conocimiento y capacidad.