Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Insertar include como plantilla en php

Estas en el tema de Insertar include como plantilla en php en el foro de PHP en Foros del Web. Tengo un archivo index.php dentro de unas carpetas categorias/1/estado/1/index.php Pero para no copiar y pegar el mismo html (background, css, divs, etc..) cree un archivo ...
  #1 (permalink)  
Antiguo 04/02/2016, 17:17
 
Fecha de Ingreso: enero-2016
Ubicación: Venezuela
Mensajes: 139
Antigüedad: 8 años, 3 meses
Puntos: 3
Insertar include como plantilla en php

Tengo un archivo index.php dentro de unas carpetas categorias/1/estado/1/index.php Pero para no copiar y pegar el mismo html (background, css, divs, etc..) cree un archivo en mi htdocs llamado plantilla.php

Y pues en el index.php de categorias/1/estado/1/index.php lo llamo de manera:
Código PHP:
<?php  
include("../../../../plantilla.php"); ?>
Pero al entrar a mi index.php que esta dentro de las carpetas me salen las imagenes como si no existieran obviamente ya que las tengo en una carpeta htdocs/img/ y pues esta en la carpeta de estados como ya lo dije..
Pero bueno al grano, como hago para que en cada uno de los archivos index que coloque esto se conecte de manera que no tenga que colocar la carpeta img en dicha carpeta, hay alguna manera de hacerlo?
  #2 (permalink)  
Antiguo 04/02/2016, 17:30
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Insertar include como plantilla en php

El problema radica si siempre usas rutas tipo ../../imagenes/etc.gif, lo correcto es que uses una ruta absoluta, e.g. /imagenes/etc.gif donde la barra inicial / significa la raíz de tu sitio web.

Esto mismo debes aplicarlo por cada recurso web que utilices, scripts, estilos, imágenes, etc.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 04/02/2016, 20:46
 
Fecha de Ingreso: enero-2016
Ubicación: Venezuela
Mensajes: 139
Antigüedad: 8 años, 3 meses
Puntos: 3
Respuesta: Insertar include como plantilla en php

Cita:
Iniciado por pateketrueke Ver Mensaje
El problema radica si siempre usas rutas tipo ../../imagenes/etc.gif, lo correcto es que uses una ruta absoluta, e.g. /imagenes/etc.gif donde la barra inicial / significa la raíz de tu sitio web.

Esto mismo debes aplicarlo por cada recurso web que utilices, scripts, estilos, imágenes, etc.
Coloqué esto:
Código PHP:
<?php include("/plantilla.php"); ?>
y me da como error en el navegador esto:
Código:
Warning: include(/plantilla.php): failed to open stream: No such file or directory in C:\xampp\htdocs\categoria\1\estado\1\index.php on line 3

Warning: include(): Failed opening '/plantilla.php' for inclusion (include_path='.;C:\xampp\php\PEAR') in C:\xampp\htdocs\categoria\1\estado\1\index.php on line 3
  #4 (permalink)  
Antiguo 04/02/2016, 20:57
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 9 meses
Puntos: 263
Respuesta: Insertar include como plantilla en php

eso es porque el recurso no esta donde dices que está, lo que te indicaron no fue para que quitaras los símbolos, si no para que movieras el directorio o el archivo principal, ya que el archivo que llama a la plantilla esta dentro de 4 directorios, imagina la fallita que esto te va a dar, lo ideal seria que estuvieran cuando mucho en un directorio de separación,

por ejemplo:

www (raiz del sitio)
|
|->images
|->css
|->js
|->Plantillas -> plantilla.php
archivo.php
archivo2.php


de esa manera el archivo.php llamaria a la plantilla de esta manera:

Código PHP:
Ver original
  1. include('Plantillas/plantilla.php');

y es menos problematico, claro todo esto va a depender de la estructura de directorios de tu web. Saludos
__________________
[email protected]
HITCEL
  #5 (permalink)  
Antiguo 04/02/2016, 21:50
 
Fecha de Ingreso: enero-2016
Ubicación: Venezuela
Mensajes: 139
Antigüedad: 8 años, 3 meses
Puntos: 3
Respuesta: Insertar include como plantilla en php

Cita:
Iniciado por xfxstudios Ver Mensaje
eso es porque el recurso no esta donde dices que está, lo que te indicaron no fue para que quitaras los símbolos, si no para que movieras el directorio o el archivo principal, ya que el archivo que llama a la plantilla esta dentro de 4 directorios, imagina la fallita que esto te va a dar, lo ideal seria que estuvieran cuando mucho en un directorio de separación,

por ejemplo:

www (raiz del sitio)
|
|->images
|->css
|->js
|->Plantillas -> plantilla.php
archivo.php
archivo2.php


de esa manera el archivo.php llamaria a la plantilla de esta manera:

Código PHP:
Ver original
  1. include('Plantillas/plantilla.php');

y es menos problematico, claro todo esto va a depender de la estructura de directorios de tu web. Saludos
Claro, pero tengo como 20 carpetas de la misma manera, pero no hay alguna manera de conectar el include con la raíz y que todo salga bien?
  #6 (permalink)  
Antiguo 04/02/2016, 22:27
 
Fecha de Ingreso: diciembre-2015
Mensajes: 529
Antigüedad: 8 años, 3 meses
Puntos: 39
Respuesta: Insertar include como plantilla en php

Colocando "/" antes del archivo/carpeta llegas a la raíz del directorio.
  #7 (permalink)  
Antiguo 05/02/2016, 00:28
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Insertar include como plantilla en php

Cita:
Iniciado por byrong Ver Mensaje
Coloqué esto:
Código PHP:
<?php include("/plantilla.php"); ?>
Bueno, olvidé decirlo: por favor no apliques la misma "solución" a scripts que se ejecuten en el servidor porque son dos cosas diferentes.

En el navegador la barra inicial / significa una cosa totalmente diferente a la barra inicial / en el sistema operativo, la estructura de archivos pues.

Debes entender que ambos mecanismos son idénticos, pero también resuelven a destinos concretos muy distintos entre si.

No es lo mismo la raíz del sistema operativo / a la raíz de un sitio web.

Para obtener el mismo efecto en PHP puedes usar la variable $_SERVER['DOCUMENT_ROOT'] que equivaldría a la raíz física de tu sitio web: no la raíz física de todo tu sistema de archivos.

Lo que en web podría ser /ruta/al.archivo en PHP sería $_SERVER['DOCUMENT_ROOT'].'/ruta/al.archivo' ¿se entiende?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 05/02/2016, 08:57
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: Insertar include como plantilla en php

Cita:
Iniciado por pateketrueke Ver Mensaje
Lo que en web podría ser /ruta/al.archivo en PHP sería $_SERVER['DOCUMENT_ROOT'].'/ruta/al.archivo' ¿se entiende?
Esto me lleva a plantearme una duda, que expongo aquí porque se está tratando este tema:

¿Hay alguna forma de "equiparar" la ruta de la raíz del servidor para conseguir los siguiente?:

En local, para pruebas, los archivos están en la raíz dentro de una carpeta y en el servidor la ruta es otra, algo tal que así:

Local: C:\wampp\www\proyecto_numero_1\ (por ejemplo)
Servidor: /home/usuario/carpeta_de_publicacion/ (puede ser htdocs, www, public_html...)

¿Cómo se podría hacer para realizar los includes de forma que sirvan tanto para un sitio como para el otro y además para cualquier carpeta?

En mi caso concreto, las rutas sería algo así:

Código PHP:
Ver original
  1. //En el servidor de producción
  2.       require_once ("/home/usuario/www/carpeta_x/carpeta_include/archivo_a_incluir.php");
  3. //En local, servidor de pruebas
  4.       require_once ("C:/wampp/www/proyecto_x/carpeta_x/carpeta_include/archivo_a_incluir");

Es decir, habría que "equiparar" /home/usuario/www/ con C:/wampp/www/proyecto_x/ ya que a partir de ahí la ruta sería igual.

A ver si me quitáis esta duda que me lleva rondando ni sé el tiempo.

Gracias de antemano.
  #9 (permalink)  
Antiguo 05/02/2016, 09:30
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Insertar include como plantilla en php

Eso ya lo resuelve la variable que te indico, en ambos ambientes tendrá el valor adecuado de acuerdo a la configuración del vhost, no es un valor fijo por si tenías duda.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #10 (permalink)  
Antiguo 05/02/2016, 12:46
 
Fecha de Ingreso: enero-2016
Ubicación: Venezuela
Mensajes: 139
Antigüedad: 8 años, 3 meses
Puntos: 3
Respuesta: Insertar include como plantilla en php

Cita:
Iniciado por pateketrueke Ver Mensaje
Eso ya lo resuelve la variable que te indico, en ambos ambientes tendrá el valor adecuado de acuerdo a la configuración del vhost, no es un valor fijo por si tenías duda.
Listo amigo, gracias.
Adjunto lo que hice:
Código PHP:
$rutainicio $_SERVER['DOCUMENT_ROOT']; //Cree esta variable porque si lo ponia directo me tiraba un error
include("$rutainicio/templates/plantilla.php"); 
Y listo, saludos.
  #11 (permalink)  
Antiguo 05/02/2016, 17:06
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: Insertar include como plantilla en php

Cita:
Iniciado por pateketrueke Ver Mensaje
Eso ya lo resuelve la variable que te indico, en ambos ambientes tendrá el valor adecuado de acuerdo a la configuración del vhost, no es un valor fijo por si tenías duda.
Gracias por tu respuesta pateketrueke, pero, por lo menos en el caso concreto en el que me encuentro, no es así, ya que en local me da:

C:\wampp\www\

y debería ser:

C:\wampp\www\proyecto_numero_1\

En el servidor sí aparece correcto:

/home/usuario/carpeta_de_publicacion/

Y es que me resulta tan extraño que no sé qué es lo que puede estar pasando, por eso ha sido el entrometerme en este hilo para preguntarlo.

No sé, si se te ocurre qué puede ser, ya me dirás. Muchas gracias de nuevo.
  #12 (permalink)  
Antiguo 05/02/2016, 17:16
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Insertar include como plantilla en php

Yo lo que dije es cierto:
Cita:
valor adecuado de acuerdo a la configuración del vhost
La idea es que el vhost apunte a la raíz del sitio web, y por lo que entiendo ¿en ambos hosts ingresas con http://localhost/ y nada más?

Es decir, PHP te dará el valor que se resuelve por configuración, no es competencia de PHP sino de tu servidor web.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #13 (permalink)  
Antiguo 06/02/2016, 03:39
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: Insertar include como plantilla en php

Cita:
Iniciado por pateketrueke Ver Mensaje
Yo lo que dije es cierto:


La idea es que el vhost apunte a la raíz del sitio web, y por lo que entiendo ¿en ambos hosts ingresas con http://localhost/ y nada más?

Es decir, PHP te dará el valor que se resuelve por configuración, no es competencia de PHP sino de tu servidor web.
Gracias de nuevo por tu respuesta pateketrueke, por supuesto que lo que dijiste es cierto, no lo he puesto en duda en ningún momento, lo único que digo es que a mi no me funciona, supongo que será porque tengo diferentes proyectos dentro de la carpeta de publicación del servidor.

Por esto último, y como en local no uso vhost, para acceder a los proyecto en pruebas, lo hago de esta forma:

http://localhost/proyecto_numero_1/ (aquí la carpeta de publicación según la configuración del servidor es justo la anterior a proyecto_numero_1, es decir, si accedo a localhost, veo la lista de todos los proyectos)

y en el servidor, así:

http://www.dominio.com (y aquí la carpeta de publicación es directamente la que se ve al acceder)

No sé si se te pueda ocurrir alguna forma de "equiparar" las dos rutas...

Estaba pensando que quizá si modifico el archivo hosts o creo vhost para cada proyecto... ¿qué opinas?

Edito: Me olvido de crear vhost, me empieza a dar problemas de acceso, tipo 403 y eso me va a dar más quebraderos de cabeza que soluciones, además, tendría que crear uno por cada proyecto y son un montón, espero que haya alguno otra forma, si no, me tendré que conformar con dejarlo como está.

Última edición por rbczgz; 06/02/2016 a las 07:20
  #14 (permalink)  
Antiguo 06/02/2016, 08:37
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Insertar include como plantilla en php

Cita:
Estaba pensando que quizá si modifico el archivo hosts o creo vhost para cada proyecto... ¿qué opinas?
Lo correcto es configurar tu vhost, no hay mejor solución.

Aunque igual podrías intentar corregir dicha ruta manualmente si sabes en qué sistema operativo o ambiente te encuentras:
Código PHP:
Ver original
  1. $root = $_SERVER['DOCUMENT_ROOT'];
  2. define('BASE_URL', basename($root) === 'www' ? "$root/x/y/z" : $root);

Y así puedes usar dicha constante BASE_URL para corregir tus includes.

Cita:
Edito: Me olvido de crear vhost, me empieza a dar problemas de acceso, tipo 403 y eso me va a dar más quebraderos de cabeza que soluciones, además, tendría que crear uno por cada proyecto y son un montón, espero que haya alguno otra forma, si no, me tendré que conformar con dejarlo como está.
El temor es el principal obstáculo del progreso, así como hablas te da miedo aprender cosas nuevas y progresar en tu manera de programar: así no vas a llegar nada lejos.

Hay muchas formas de tener vhosts de manera muy rápida y sencilla, sólo es cuestión de configurar el servidor una sola vez, etc.

Deberías consultas en el foro de Apache para que te expliquen cómo.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #15 (permalink)  
Antiguo 06/02/2016, 15:09
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: Insertar include como plantilla en php

Cita:
Iniciado por pateketrueke Ver Mensaje
Lo correcto es configurar tu vhost, no hay mejor solución.
Tienes razón, pero ahora mismo me supone demasiado tiempo y no dispongo de él, no obstante, lo haré en cuanto pueda dedicarle el tiempo que se necesita.

Cita:
Iniciado por pateketrueke Ver Mensaje
Aunque igual podrías intentar corregir dicha ruta manualmente si sabes en qué sistema operativo o ambiente te encuentras:
Código PHP:
Ver original
  1. $root = $_SERVER['DOCUMENT_ROOT'];
  2. define('BASE_URL', basename($root) === 'www' ? "$root/x/y/z" : $root);

Y así puedes usar dicha constante BASE_URL para corregir tus includes.
Muchísimas gracias, ha sido la solución perfecta, por lo menos hasta que pueda hacer lo que me comentas de configurar los vhost.

Cita:
Iniciado por pateketrueke Ver Mensaje
El temor es el principal obstáculo del progreso, así como hablas te da miedo aprender cosas nuevas y progresar en tu manera de programar: así no vas a llegar nada lejos.

Hay muchas formas de tener vhosts de manera muy rápida y sencilla, sólo es cuestión de configurar el servidor una sola vez, etc.

Deberías consultas en el foro de Apache para que te expliquen cómo.
Muchas gracias por el consejo, lo haré, de hecho, ya he configurado en varias ocasiones vhost, pero hace demasiado tiempo y no lo recuerdo bien, creo recordar que era muy sencillo, solo añadir unas líneas en el httpd.conf o en el httpd.vhost.conf y en el archivo hosts de windows ¿estoy en lo cierto?

El problema es que ahora no puedo dedicarme a revisar permisos y demás, por eso buscaba una solución alternativa más rápida y sencilla y la tuya ha sido francamente genial.

Muchas gracias de nuevo.

Etiquetas: html, include, plantilla
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 15:04.