Foros del Web » Programando para Internet » PHP »

Sistema de templates

Estas en el tema de Sistema de templates en el foro de PHP en Foros del Web. Hola a todos, Estoy haciendo un sistemita en PHP que me permita cargar cualquier diseño en mi sitio web de forma fácil y sencilla. Quiero ...
  #1 (permalink)  
Antiguo 28/06/2005, 18:10
Avatar de Takitei  
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 1.231
Antigüedad: 20 años, 2 meses
Puntos: 5
Sistema de templates

Hola a todos,

Estoy haciendo un sistemita en PHP que me permita cargar cualquier diseño en mi sitio web de forma fácil y sencilla.

Quiero que mi template sea un archivo HTML simple, con su respectiva hoja de estilos e imágenes.

La estructura es la siguiente

/index.php (aqui es donde cargaré el template)
/templates/index.html (este es el template, el diseño)
/templates/style.css (hojas de estilo)
/templates/images/TODAS LAS IMAGENES AQUI (carpeta con las imágenes)

El problema radica en lo siguiente: si hago un include(templates/index.html) no me llamará a todas las imágenes y tampoco a los estilos CSS.

¿Hay alguna forma de incluir el index.html (template) llamando también todo lo que se encuentre en esa carpeta?...
__________________
Takitei
Ingeniarte.com
DannyHerran.com
"Dadme un punto de apoyo y moveré la tierra" - Arquímedes.
  #2 (permalink)  
Antiguo 29/06/2005, 01:02
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 20 años, 3 meses
Puntos: 102
.. no capté del todo... pero no puedes poner el tu página la línea <link href="style.css" rel="stylesheet" type="text/css">??.. con eso incluirías la hoja de estilo.. .. para las imágenes ¿no puedes cambiarle la extención y ponerle a el comienzo del archivo un include("otra_cosa");...

Quizá sean burradas lo que digo... pero como dije, no capté bien la situación... más, contestandote concretamente a el cómo incluir todo lo que contenga una carpeta... necesitarías abrir el manejador de archivos, leerlos e incluirlos... ve www.php.net/opendir ...

Espero te sirva de algo. Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #3 (permalink)  
Antiguo 29/06/2005, 06:51
Avatar de Takitei  
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 1.231
Antigüedad: 20 años, 2 meses
Puntos: 5
Te explico mejor lo que quiero hacer. Estoy haciendo un CMS o script prefabricado para mi uso personal, de tal forma que cuando tenga que hacer una página para alguna empresa, no deba programarla desde cero; simplemente tomo mi script, cambio el template, los textos y tengo todo listo en unos días.

Para ello necesito que los templates se carguen sin tener que hacer mucho trabajo. Mi sitio funciona básicamente sobre el index.php. En el index.php se deberá cargar el template que se encuentre dentro de la carpeta "templates" de mi sitio.

Mis templates están compuestos por los siguientes archivos:

/templates/index.html (este es el template, el diseño)
/templates/style.css (hojas de estilo)
/templates/images/TODAS LAS IMAGENES AQUI (carpeta con las imágenes)

Yo en index.php debo llamar al template que se encuentre en la carpeta "templates" de esta forma:

Código PHP:
include('templates/index.html'); 
Pero esto no funciona, porque al incluir index.html, las imágenes no se muestran y tampoco los estilos. Se parece mucho al sistema que usa el PHP NUKE o Mambo; donde los templates están en una carpeta aparte hechos en HTML simple.

Mi pregunta es: ¿Cómo puedo hacer para que al llamar al index.html me llame también las imágenes y los estilos?

Me estuve dando cuenta de que Mambo en su template, llama a las imágenes con rutas absolutas, igualmente lo hace con los estilos. Hacen algo asi:

<img src="<?php echo WEBSITE_URL ?>/templates/images/cube.gif" />

Creo que esta sería la solución, sin embargo, por curiosidad me gustaría saber si no existe alguna forma de hacerlo sin tener que cambiar las rutas.
__________________
Takitei
Ingeniarte.com
DannyHerran.com
"Dadme un punto de apoyo y moveré la tierra" - Arquímedes.
  #4 (permalink)  
Antiguo 29/06/2005, 07:00
 
Fecha de Ingreso: noviembre-2003
Mensajes: 383
Antigüedad: 21 años
Puntos: 2
Ten siempre en cuenta en que rama de tu arbol de directorios estas.

supongo que /index.htm esta en la raiz de tu sitio entonces para que /templates/index.html vea las imagenes tienes que llamarlas como /templates/images/nombreImagen.
  #5 (permalink)  
Antiguo 29/06/2005, 07:39
Avatar de Takitei  
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 1.231
Antigüedad: 20 años, 2 meses
Puntos: 5
Si, eso era lo que había pensado. Gracias!
__________________
Takitei
Ingeniarte.com
DannyHerran.com
"Dadme un punto de apoyo y moveré la tierra" - Arquímedes.
  #6 (permalink)  
Antiguo 29/06/2005, 07:40
 
Fecha de Ingreso: diciembre-2003
Mensajes: 218
Antigüedad: 20 años, 11 meses
Puntos: 0
Bueno si te sirve de algo mira como lo hice yo.

Espero q te sirva.

Estructura

/index.php (Donde cargo el objeto template)
/class.php (La clase de Templates)
/themes/header.html (Uno de los ficheros HTML).
...

index.php
Código PHP:
<?php

// include template parser class

require_once('class.php');

// define class parameters

$tags=array('title'=>'Template System',
            
'navbar'=>'navbar.html',
            
'footer'=>'pie.html');

// instantiate a new template parser object specifying a cache file valid for 2 hours

$tp=new SpynTPL('themes/');
//$tp->activaCache();
$tp->Fichero('header.html');
$tp->Asigna($tags);        //Asignamos Array
$tags=array('title'=>'Template Sy',
            
'navbar'=>'navbar.html',
            
'footer'=>'pie.html');
$tp->Asigna($tags);        //Asignamos Array
$tp->Asigna('pie',"ESTO ES EL PIE"); // Asignamos una variable
//$tp->Fichero('noticia.html');

// display finished page

echo $tp->Muestra();

?>
header.html
Código PHP:
<html>
<
head>
<
title>{title}</title>
</
head>
<
body bgcolor="#d6d6d8">
<
center>
<
table width="760"  border="1" cellspacing="0" cellpadding="0" height="500">
  <
tr>
    <
th background="{tpldir}images/imgLogo.jpg" height="200" align="center" valign="middle">
        <
font size="+4" color="#FFFFFF">{title}</font><br><font size="-2">{slogan}</font></th>
  </
tr>
<
block
<
tr>
<
td>{title} --> {title}</td>
</
tr>
</
block>
  <
div id="navbar">{navbar}</div>
{
footer
Lo q tengo es una variable predefinida por defecto al crear el template q es la ubicacion del template. Aunq yo no hago includes de html.
Un saludo.
__________________
SymbianForever
SymbianForever.com, todo sobre y para tu symbian
aNieto2K | Themes para WordPress
De todo un poco
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:17.