Estructura (parte2)

Bueno, el caso esta así:
Todas las páginas están basadas en una plantilla, para que así al modificar una se modifiquen todas. Te lo pondré con un ejemplo:
Supón que tienes ciertas páginas - index.php y hola.php, el archivo index esta basado en una plantilla principal donde se pusieron los include, que son por ejemplo menu.php y top.php
El index.php sale muy bien ya que los archivos menu y top se encuentran EN LA MISMA CARPETA principal donde esta tu index, sin embargo, el archivo hola.php se encuentra (por ejemplo) dentro de la carpeta SALUDOS. Por lo cual el archivo hola.php, en su código tiene los include pero como <? Include ('menu.thp')?> Algo así, por lo que esta haciendo referencia a un archivo que SUPUESTAMENTE DEBERÍA ESTAR EN LA MISMA CARPETA DE SALUDOS, cosa que no es así por que est basado en una plantilla.
En este caso si modifico mi plantilla y le pongo como tu dijiste ../menu.php lo que pasara es que ahora el index no funcionara ya que esta haciendo referencia a una carpeta que esta arriba del index, y sin embargo ahora el archivo hola.php si funcionara ya que el archivo menu.php SI ESTA AHORA UNA CARPETA ARRIBA. Espero que me haya dado a entender.
Lo que quiero es que el la función include() pueda hacer algo para que el archivo sea el mismo, así tenga 10 subdirectorios y el menu.php este hasta arriba, quiero que cualquier página que realice haga referencia a ese archivo.
Como te digo, todo esta basado en plantillas por lo que si modifico de menu.php a ../menu.php se modificarían absolutamente todas las páginas, y lo que quiero es que este donde este la página, en cualquier subdirectorio siempre me haga referencia al menu.php.
Espero que me haya dado a entender je je, es que todo esto de repente me hace bolas, pero bueno. Así es esto. Gracias brother.

1 Respuesta

Respuesta
1
En esos casos creo que tendrías el mismo problema, no estoy seguro. El problema esta con los paths a las imágenes y a los links. Y no a la referencia del archivo.
Por ejemplo:
Si tuvieras el top.php en la raíz del sitio, desde cualquier lugar lo incluirías de esta misma manera:
$tmp=$_SERVER['HTTP_HOST'];
$tmp=$tmp."top.php";
include_once($tmp);
Con eso lo incluyes desde cualquier lugar de forma indistinta, pero tendrías que utilizar el mismo mecanismo para el resto de los paths.
Por ejemplo:
Tendrías Una variable $Path, que sería igual a:
$Path=$_SERVER['HTTP_HOST'];
Y la referencias todo el tiempo, por ejemplo para un link a /imagenes/algo.php
Harías lo siguiente:
<a href="<? echo $tmp;?>/imagenes/algo.php
">link a imagenes </a>
o por ejemplo:
<img src="<? echo $tmp;?>/imagenes/algo.jpg
">
De esa manera lograrías la funcionalidad que deseas.
Lo de bases de datos es más sencillo porque no te preocupas por los archivos, Por ejemplo "articulos" una vez que ya hiciste bien el abm de artículos, haces un solo archivo que los procese a todos para mostrarlos en el sitio, esto a lo sumo podrían significar 4 o 5 archivos que los haces una sola vez y te olvidas para siempre, así hayan 10, 20, 100 o 5000 artículos, lo mismo para los documentos, descargas etc.
Mira, de hecho he encontrado un documento donde puedes hacer eso pero en lenguaje ASP. Checalo, yo no he encontrado nada más que de ASP y no de PHP.
http://www.desarrolloweb.com/articulos/291.php
Con bases de datos ¿cómo?
Con respecto al anterior, no podría hacerlo manual, eso es "supuestamente" lo que te hace ahorrar tiempo una plantilla en dreamweaver, si tu pones un mensaje <hola ¿cómo estas?> En una plantilla, y haces un archivo llamado index.php con esa plantilla, cuando veas el index en el explorador te mostrara ese mensaje. Si cambias el mensaje en tu plantilla como por ejemplo <Hola ¿Cómo has estado? Esperemos que muy bien> automáticamente te cambia el index.
Eso es precisamente lo que pasa, yo tengo indicado en mi plantilla el archivo menu.php de la carpeta raíz, al crear un nuevo documento dentro de una subcarpeta la plantilla te seguirá diciendo que tu archivo se encuentra dentro de la misma carpeta del archivo que creaste. Yo había escuchado decir que también se puede con el include hacer que siempre sea fijo el archivo al que llamas, o sea que aunque haya 100 subdirectorios siempre siga siendo menu.php, menu.php, y no menu.php, ../menu.php, ../../menu.php.
Yo no he encontrado como, seguiré buscando después por que ahorita creo que ya hasta la cabeza me dolió je je. Nos vemos.
mmm, bueno en eso de las bases de datos no entendí muy bien, bueno a nada le entendí, pero algo se me ocurrirá por que de bases de datos, ni idea.
No veo cual es el problema, has lo que te dije, pero hazlo todo a mano no utilices artilugios automatizados de dreamweaver.
Por ejemplo, tienes el index.php que esta muy bien, ok...
Luego creas una carpeta SALUDOS, dentro de ella colocas una copia del index.php que no te funcionará porque los paths son incorrectos, entonces a todos los paths les cambias con el prefijo ../ y listo, esa sera la nueva plantilla para la capeta SALUDOS
Y para todas aquellas que estén a una distancia de 1,
Lo mismo para las que sean sub carpetas, pues de nuevo modificaras una sola vez pero en este caso ../../ y listo.
Pero el index.php nunca lo tocaste... mmmm ahora me doy cuenta de tu problema je je
Tu tienes paths en los archivos a incluir también! Demonios! Jaja recién me doy cuenta.
Entonces no te queda otra que duplicar y cambiar los paths, es decir top.php lo dulicas a top_level1.php y a ese nuevo archivo le cambias los paths.
Aaaahhhh otra solución, si manejas las imágenes con una hoja de estilos los paths serán relativos a ella, solucionandote el 80% del inconveniente!
20% serían los links... ¿mmm paths absolutos? Naaa
Yo creo que deberías hacerlo con bases de datos. Te ahorrará muchos problemas...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas