NokTemplate. Fácil, rápida y en castellano.

Publicado en Templates por Nok el marzo 4th, 2003

Partiendo en bloques

Hasta ahora utilizamos plantillas que se encontraban en archivos separados, pero que sucede si queremos, para falicitar el diseño, trabajar con varios templates en un mismo archivo?. Por ejemplo una tabla, en el ejemplo anterior utilizamos 2 plantillas separadas para poder recrear la tabla, lo que imposibilita ver "todo junto" en el diseño. Para solvertar estos, NokTemplate brinda la posibilidad de definir Bloques dentro de las plantillas para trabajar como si cada uno de estos bloques fueran templates en si mismos. En la ultima actualizacion de la clase se posibilita la definición de bloques anidados, es decir uno dentro de otro, lo que facilita la visualización en el editor HTML.

Para definir un bloque dentro de una plantilla o template, se utilizan unos tags especiales ya predefinidos por NokTemplate, estos son para el inicio del bloque y para el fin. Presten atencion al fotmato de los tags, ya que debe ser de esa manera unicamente, respetando espacios, mayúsculas y minúsculas, porque de otra manera NokTpl no reconocera los bloques como tales. Esta restriccion es por motivos de eficiencia en el uso y no abuso de las expresiones regulares, simplemente por eso.
Bueno, veamos como se constituyen los bloques dentro de nuestra plantilla, en este caso utiltabla.html que contiene 2 bloques anidados que nos servirán para formar nuevamente la tabla del ejemplo anterior. Recordemos tambien que nuevamente utilizaremos la plantilla cuerpo.html.

utiltabla.html<!-- inicioBloque: tTabla -->
<table>
<tr>
<td>NOMBRE</td>
<td>APELLIDO</td>
</tr>
{FILAS}
<!-- inicioBloque: tFila -->
<tr>
<td>{EL_NOMBRE}</td>
<td>{EL_APELLIDO}</td>
</tr>
<!-- finBloque: tFila -->
</table>
<!-- finBloque: tTabla -->

Una vez que tenemos tenemos las plantilla con sus respectivos bloques dentro, pasemos al código:

PHP:
  1. <?php
  2. // Incluimos la Clase.
  3. include ('Class.NokTemplate.php');
  4.  
  5. // Creamos una instancia del objeto.
  6. // Definimos el lugar donde se encuentran los templates.
  7. $html = new NokTemplate('./templates');
  8.  
  9. // Cargamos los templates necesarios y le asignamos una clave,
  10. // o sea tCuerpo hace referencia a cuerpo.html y tUtilTabla a utiltabla.html
  11. $html->cargar('tCuerpo','cuerpo.html');
  12. $html->cargar('tUtilTabla','utiltabla.html');
  13.  
  14. // Aqui viene lo diferente:
  15. // Una vez cargados los templates, definimos los bloques.
  16. // Le indicamos que existen dos bloques dentro de tUtilTabla.
  17. // tTabla y tFila. A partir de ahora, estos seran tratados como templates.
  18. $html->definirBloque('tTabla', 'tUtilTabla')
  19. $html->definirBloque('tFila', 'tUtilTabla');
  20.  
  21. //Luego el código sigue practicamente igual
  22.  
  23. // Asignamos a TITULO un texto.
  24. $html->asignar('TITULO','Ejemplo número 3')
  25.  
  26. // Formaremos una tabla a partir de un array asociativo.
  27. // Que contiene la información de las personas. Este podría ser el
  28. // caso de el result de una consulta a un motor de base de datos.
  29. $datos = array('Jose' => 'Perez',      'Carlos' => 'Gonzales',      'Anibal' => 'Hugo');   
  30.  
  31. // Con un bucle formamos la tabla. 
  32. foreach ($datos as $nombre => $apellido)
  33. { 
  34.         // Asignamos nombre y apellido correspondientemente 
  35.         $html->asignar('EL_NOMBRE', $nombre)
  36.         $html->asignar('EL_APELLIDO', $apellido);     
  37.        
  38.         // Ahora al expandir la variable FILAS con el template tFila 
  39.         // le indicamos por medio del signo '+' o '.' que le 
  40.         // agregue o concatene al contenido ya existente en FILAS el contenido de tFila 
  41.         // con sus respectivas variables expandidas. O sea, vamos agregando filas a la tabla
  42.         // a medida que se ejecuta el bucle
  43.         $html->expandir('FILAS', '+tFila')
  44. }
  45.  
  46. // Una vez armada la tabla, volcamos el contedido de la tabla
  47. // dentro de la variable CONTENIDO 
  48. $html->expandir('CONTENIDO', 'tTabla');
  49.  
  50. // Para ir terminado expandimos el contenido del template tCuerpo
  51. // en una variable cualquiera, que puede no estar en ningun Template.
  52. // Simplemente para intercambiar los valores de las variables que contenga
  53. // tCuepo, que en este caso son TITULO y CONTENIDO.
  54.  
  55. $html->expandir('FINAL', 'tCuerpo');
  56.  
  57. // Y por último imprimimos la varible que contiene todo ya procesado.
  58. $html->imprimir('FINAL');
  59. ?>

Como ven no cambia mucho el manejo entre tener bloques o archivos separados, por lo que todo depende que es lo que se necesite. Por ejemplo los bloques se pueden utilizar para ubicar dentro de un solo archivo varios bloques que son muy chicos y que no vale la pena tenerlos en archivos separados, por ejemplo mensajes largos de texto, que son engorrosos de poner en el código de la aplicación, tal es el caso de "Gracias por suscribirse a... etc." y otros mensaje que es mas como tenerlos guardados en archivos que ponerlos en la aplicación.

Páginas: 1 2 3 4 5 6

30 comentarios

30 respuestas a 'NokTemplate. Fácil, rápida y en castellano.'

Suscríbete a los comentarios con RSS o realiza un TrackBack a 'NokTemplate. Fácil, rápida y en castellano.'.

  1. Edgar Leon dijo,

    el marzo 14th, 2006 a las 9:46 pm

    Hola, Mil gracias por la colaboracion

    El link no funciona
    http://www.jpw.com.ar/noktemplate

    Saludos

  2. Webstudio dijo,

    el marzo 14th, 2006 a las 10:05 pm

    Muchas gracias por el comentario… el link correcto, actualmente, es:

    http://www.jpw.com.ar/noktpl.php

    Ya lo corregí en el artículo.

  3. Edgar Leon dijo,

    el marzo 15th, 2006 a las 12:55 pm

    Mil Gracias

  4. Jocelin dijo,

    el marzo 23rd, 2006 a las 7:38 pm

    Hola!!! Buenas taredes me gustaría saber si tu me puedes decir en donde puedo encontrar un turtorial completo para ir desarrollando un aplicación web con php y mysql. Tengo que desarrollar una aplicación cliente servidor para una pizzería tipo (pizza hot u otras), con una sede central y varias sucursales. Nunca he usado php, pero me lo pidieron en eso.

    Gracias por tu atencion

  5. juan carlos dijo,

    el marzo 28th, 2006 a las 6:01 am

    Hola saludos a todos:

    Estoy unsando las funciones de protocolo de PHP

    ftp_connect() en Lycos y me dice que no esiste esa funcion

    la pregunta es:
    como puedo ptrobar este tipo de funciones?
    juan carlos

    os dej0o mi dire por si alguien me puede aclarar algo
    j.carlos.ochoa@terra.es

  6. jcxnet dijo,

    el marzo 29th, 2006 a las 10:33 am

    Hola, excelente publicación !!!
    el link para descargar la clase no funciona…. en realidad todo el sitio :(
    Espero que se solucione pronto.
    Saludos

  7. chavo dijo,

    el mayo 18th, 2006 a las 4:59 pm

    necesito aprender a manejar los templates , me pueden dar una mano, muhcas gracias

  8. yovi dijo,

    el junio 30th, 2006 a las 11:50 am

    hola muchas gracias por informaciones que nosotros los novatos necesitamos tanto

  9. Coli dijo,

    el julio 12th, 2006 a las 11:13 am

    Buenas mi pregunta es si hay que ubicar la plantilla, dentro del directorio php o donde?

    muchas gracias
    .

  10. carlso dijo,

    el septiembre 21st, 2006 a las 4:02 pm

    espera ver unos ejemplos cuando menos, aun la explicaciones buena, pero con ejemplos seria mejor, gracias

  11. Luis dijo,

    el septiembre 22nd, 2006 a las 7:40 pm

    Tengo una Duda en la Pag 3, la Parte PHP debe ir en el Mismo Directorio que “class.NokTemplate.php”, y q los templates deben ir en “/templates/contenido.html” y “/templates/cuerpo.html”, y al Archivo PHP le eh puesto “index.php”, pero de Da Errores, alguien puede ayudarme???, que estoy haciendo Mal???

  12. Swab dijo,

    el octubre 5th, 2006 a las 6:08 pm

    Gracias por Los Templates, están interesantes para uno que es novato en esto, están claros, muchas gracias!!!

  13. fidel dijo,

    el octubre 11th, 2006 a las 5:44 pm

    yo tengo un problema envio datos a una base de datos de un text area asi:

    angel
    hernandez

    y cuando los obtengo otra vez de la bd mysql aparecen asi
    angelhernandez

  14. David dijo,

    el noviembre 30th, 2006 a las 9:43 am

    En el código de php veo claro como asigna las variables NOMBRE y TITULO, pero si lo que estamos haciendo es asignar variables, ¿Como se le esta asignado a {CONTENIDO} el bloque entero contenido.html? Intuyo que lo que se hace es expandir una plantilla (tContenido) sobre la variable CONTENIDO, o lo que se podría decir como “asignar” una plantilla a una variable de otra plantilla.

    Esta es más o menos mi duda sobre el funcionamiento de asignar y expandir plantillas, casi me lo he resuelto, pero los comentarios vuestros no vienen nunca de más.
    Así entre todos le podemos sacar mas partido a las plantillas.

    Muchas gracias.

    http://lamardivina.com

  15. Patricia dijo,

    el enero 15th, 2007 a las 4:56 pm

    Hola. Quise bajar la clase de NokTemplate desde el link que se indica (http://www.jpw.com.ar/noktemplate) y el server me da el sig. error: “Limite de transferencia mensual superado”.
    Hay posibilidad de que me lo envíen por mail? Me interesó bastante poder probar esta clase… gracias!

  16. Webstudio dijo,

    el enero 22nd, 2007 a las 5:04 pm

    Al parecer hay un problema con el sitio donde está alojada la clase NokTemplate. Voy a hablar con el creador de la clase para ver si es posible que restaure el sitio en el mediano plazo, o sino, veremos de hospedar la clase aquí en zonaPHP.

  17. Nok dijo,

    el febrero 2nd, 2007 a las 2:20 pm

    Estimados, Se ha resuelto el inconveniente en el sitio, ya esta disponible nuevamente, aunque tanto el foro, como el libro de visitas se encuentra cerrado por el momento.

    Saludos
    Nok!

  18. narcus dijo,

    el febrero 14th, 2007 a las 5:15 pm

    Saludos.
    Tengo problemas para insertar datos con php a traves de un formulario en la base datos mysql. Tiene que ver si el servidor esta en Apache o CGI ?. Alguien me podía faciliar el script para insertar datos.

  19. Dieguin dijo,

    el agosto 5th, 2007 a las 6:24 pm

    En el ejemplo 2 me tira un error diciendo:
    “Notice: Undefined index: FILAS in d:\easyphp1-8\www\pruebas\class.NokTemplate.php on line 293″
    lo solucione inicializando la variable FILAS a ” con:
    $html->asignar(FILAS,”);
    No se si a a alguien mas le sucedio esto, pero espero que le sirva.

  20. kreikol dijo,

    el agosto 16th, 2007 a las 10:51 am

    Buenas, muchas gracias por el aporte!!

    Una preguntilla… habrá más artículos relacionados con este tema??

    Un saludo, a cuidarse!

  21. JhonMunevar dijo,

    el octubre 17th, 2007 a las 1:52 pm

    Hola… tengo un problema y es que no me carga el template… no me muestra ningun error de PHP si la clase saca errores, pero igual no me muestra nada, nada, que puede ser.. les recomiendo mucho…

  22. Luis dijo,

    el julio 1st, 2008 a las 8:34 am

    Hola,
    Como se puede programa las templates para hacer una pagina con capas. cabecera,capaizda, capacentro, capaderecha, pie y poder situar imagenes, enlaces etc. Algo parecido a Drupal.

    Hay mas tutoriales sobre NokTemplate?

    Saludos, Luis

  23. Lionel dijo,

    el agosto 28th, 2008 a las 12:46 pm

    Excelente, muy comprencible y practico….
    Gracias :-)

  24. Francisco Castro dijo,

    el marzo 27th, 2009 a las 6:10 pm

    Hola muy bueno el articulo pero dime una cosa cuando se estarias subiendo el siguiente articulo?

  25. karina dijo,

    el mayo 31st, 2009 a las 1:41 am

    Hola!!! el link no funciona… :(

  26. wilinton dijo,

    el junio 2nd, 2009 a las 4:36 pm

    hola el link no funciona
    me gustaria obtener el nuevo

    y un buen manual para crear un foro

  27. gato756 dijo,

    el junio 3rd, 2009 a las 4:39 pm

    El link y todo el sitio no funcionan

  28. el7Eraldo dijo,

    el septiembre 15th, 2009 a las 12:48 pm

    Hola:
    Un saludo de una persona que no tiene idea y quiere aprender, investigando he dado con esta página.

    Me parece excelente, pero tengo un comentario:
    “No esta a mi alcance pues no explica bien a paso donde y en que lugar se deben de insertar”.

    Les dejo un saludo a todos los que se dedican a distribuir información sin costo alguno
    Si pueden mejorar eso me encantaría.

  29. Jose Tapia dijo,

    el marzo 19th, 2010 a las 1:56 am

    Muchisimas gracias por este excelente tuto y por el gran aporte que haces, de verdad sos un grosso. si alguien necesita info de voz ip o asterisk tengo un blog en: http://www.voipsystemscr.com/blog.

    Gracias, saludos desde Costa Rica


  30. el octubre 31st, 2011 a las 5:51 pm

    me podes colaborar con la libreria, por correo.

    Dispensable para estudiar este tema.

    Gracias.

Deja un comentario