Foros del Web » Programando para Internet » PHP »

Título de la página con "includes"

Estas en el tema de Título de la página con "includes" en el foro de PHP en Foros del Web. Hola, Tengo escasísimos conocimientos de php -por no decir nulos-, y ni siquiera sé si esta pregunta está bien aquí o su ubicación ideal sería ...
  #1 (permalink)  
Antiguo 20/01/2005, 07:58
 
Fecha de Ingreso: octubre-2004
Mensajes: 12
Antigüedad: 19 años, 6 meses
Puntos: 0
Título de la página con "includes"

Hola,

Tengo escasísimos conocimientos de php -por no decir nulos-, y ni siquiera sé si esta pregunta está bien aquí o su ubicación ideal sería un foro de html, pero ahí va:

Cuando, mediante un include, introduzco un archivo en otro (explicación a grosso modo que espero comprendáis), ¿cómo puedo hacer para que se muestre, en el título, el del archivo incluido, y no el del archivo "continente"?
  #2 (permalink)  
Antiguo 20/01/2005, 08:07
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pero .. el "título" de tu "include("nose.php")" (nose.php) .. donde está o como es definido? .. está "a pelo" en el HTML del mismo? (<title>nombre</title>) ... o como?

Un saludo,
  #3 (permalink)  
Antiguo 20/01/2005, 08:52
 
Fecha de Ingreso: enero-2005
Ubicación: Valparaiso - Chile
Mensajes: 116
Antigüedad: 19 años, 3 meses
Puntos: 0
Depende, si la pagina que llama al include no tiene nada de html y solo es php, al momento de incluir el otro archivo y que alli dentro alla un <title> </title> deberia aparecerte ese titulo.

Si en cambio la pagina que llama al include tiene html y su propio <title> </title> aunque este vacio o no tenga, no vas a poder cambiar el titulo tan simplemente, pq lo que ahce la funcion include es simplemente PEGAR un segmento de codigo en el archivo que la llama, no carga la pagina independientemente.

Ahora bien, con un poquito de trabajo y formularios quiza podrias hacer que se cambie el titulo, algo asi como un

esto es el archivo pagina1.php
----------------------
.
.
.
<?
if (isset($HTTP_POST_VARS["cambiatitulo"]))
{
?>
<title>nuevo titulo</title>
</
}
else
{
?>
<title> titulo normal de pagina1.php </title>
<?
}
?>
.
.
.
<?
if (condicion para la cual hay que hacer el include("pagina2.php"))
{
?>
<form name="form1" action="pagina1.php" method="post">
<input type="hidden" name="cambiatitulo" value="ok">
</form>
<?
include ("pagina2.php");
} //aqui termina el if
?>


-----------

espero que este claro.
Saludos.
  #4 (permalink)  
Antiguo 20/01/2005, 09:52
 
Fecha de Ingreso: octubre-2004
Mensajes: 12
Antigüedad: 19 años, 6 meses
Puntos: 0
Cita:
Iniciado por Cluster
Pero .. el "título" de tu "include("nose.php")" (nose.php) .. donde está o como es definido? .. está "a pelo" en el HTML del mismo? (<title>nombre</title>) ... o como?

Un saludo,
Hola!

Sí, a pelo... (<title>nombre</title>)
  #5 (permalink)  
Antiguo 20/01/2005, 09:56
 
Fecha de Ingreso: octubre-2004
Mensajes: 12
Antigüedad: 19 años, 6 meses
Puntos: 0
Cita:
Iniciado por Yoko_cl
Depende, si la pagina que llama al include no tiene nada de html y solo es php, al momento de incluir el otro archivo y que alli dentro alla un <title> </title> deberia aparecerte ese titulo.
Hola!

Es una página que de php tiene simplemente los includes, por lo que aunque quite los <title></title> sigue igual.

Cita:
Si en cambio la pagina que llama al include tiene html y su propio <title> </title> aunque este vacio o no tenga, no vas a poder cambiar el titulo tan simplemente, pq lo que ahce la funcion include es simplemente PEGAR un segmento de codigo en el archivo que la llama, no carga la pagina independientemente.
Ajam, me lo imaginaba

Cita:
Ahora bien, con un poquito de trabajo y formularios quiza podrias hacer que se cambie el titulo, algo asi como un

esto es el archivo pagina1.php
----------------------
.
.
.
<?
if (isset($HTTP_POST_VARS["cambiatitulo"]))
{
?>
<title>nuevo titulo</title>
</
}
else
{
?>
<title> titulo normal de pagina1.php </title>
<?
}
?>
.
.
.
<?
if (condicion para la cual hay que hacer el include("pagina2.php"))
{
?>
<form name="form1" action="pagina1.php" method="post">
<input type="hidden" name="cambiatitulo" value="ok">
</form>
<?
include ("pagina2.php");
} //aqui termina el if
?>


-----------

espero que este claro.
Saludos.
Seguro que está claro para alguien con un mínimo de conocimiento... Yo le voy a echar un vistazo profundo y te comento. Gracias por adelantado
  #6 (permalink)  
Antiguo 20/01/2005, 14:35
 
Fecha de Ingreso: octubre-2004
Mensajes: 12
Antigüedad: 19 años, 6 meses
Puntos: 0
Bueno, enterarme lo que se dice enterarme...Así asá... Pero necesitaría hacerlo, en concreto, en un include como éste, al que llamo con http://xxx.xxx.xx/paginacontinente.p...paginaaincluir

-------
<?

if (empty($sec))

{

require ('./cezgs/');

}

else

{

include("./fichas/$sec.php");

}

?>
----------

Última edición por karnevi; 20/01/2005 a las 15:12
  #7 (permalink)  
Antiguo 20/01/2005, 17:25
 
Fecha de Ingreso: enero-2005
Ubicación: Valparaiso - Chile
Mensajes: 116
Antigüedad: 19 años, 3 meses
Puntos: 0
Sabes que no entiendo muy bien lo que quieres poner, ese codigo es el que estas usando o lo recreaste? pq si es el que estas usando que es eso de fichas/$sec.php ese $ esta de mas.

podrias poner todo el codigo de la pagina donde tienes este IF.
  #8 (permalink)  
Antiguo 21/01/2005, 05:51
 
Fecha de Ingreso: octubre-2004
Mensajes: 12
Antigüedad: 19 años, 6 meses
Puntos: 0
Cita:
Iniciado por Yoko_cl
Sabes que no entiendo muy bien lo que quieres poner, ese codigo es el que estas usando o lo recreaste? pq si es el que estas usando que es eso de fichas/$sec.php ese $ esta de mas.

podrias poner todo el codigo de la pagina donde tienes este IF.
Este código lo utilizo para, en una página base, y según la opción que seleccionen los visitantes, que muestre una página u otra, y si está vacío el campo, que vaya a la página predeterminada.

Es decir, y no sé si se pueden poner en este foro direcciones de páginas (si no se puede ya lo borrará el moderador):

http://computeremuzone.com/cezgs/ficha.php?sec=columns
Muestra la ficha del juego Columns.

http://computeremuzone.com/cezgs/ficha.php?sec=stratos
Muestra la del juego Stratos

Pero si pone http://computeremuzone.com/cezgs/ficha.php
mostraría la página que hubiese definido ahí como general, aunque no definí ninguna, haciendo el mismo efecto que poniendo
http://computeremuzone.com/cezgs/ficha.php?sec=general
porque sería la página predeterminada (en otras secciones de la web sí tengo asignada una página predeterminada, llamada general.php).

La cuestión es que, en este código, pueda hacer lo de mostrar el título de la página 2 (./fichas/columns.php o ./ficha/stratos.php) y no el título de ficha.php.

Última edición por karnevi; 21/01/2005 a las 05:53
  #9 (permalink)  
Antiguo 21/01/2005, 05:58
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Lo ideal es que tu "include()" (la página que llamas) no tenga un "<title>" .. sino que sea tu paginacontiente.php .. la que gestione todo eso ..

De hecho ya le pasas una variable de "control" para definir que "include()" llamar en tu variable "sec" .. Bajo esa varaible puedes hacer tu array/Switch/if ... para decir que titulo usar

Ejemplo

Código PHP:
<?
if ($_GET['sec']=="unaseccion"){
$titulo="El título de la seccion tal";
}

<
html>
<
head>
<
title><? echo $titulo ?></title>
</head>
<body>
<?

if (empty($sec))

{

require (
'./cezgs/');

}

else

{

include(
"./fichas/$sec.php");

}

?>
<body>
</html>
</head>
Bajo este esquema .. tu $sec.php (tus páginas que llamas con el include) NO deben tener nada de HTML de cabeceras ni pié .. sólo lo que realmente correspondería al "<body>" de estas .. si requieres de algo diferente para algún "<head>" de algún script en concreto .. se puede combinar más estructuras condicionales para esa parte .. El caso es "armar" bajo un mismo "marco" (entorno .. diseño ..) tu aplicación y esta llamará a los "módulos" .. así no tienes que "repetir" tu "diseño" en todos los scripts de las seciones centrandote en el desarrollo del proceso en si de la "sección".

Si te fijas .. tu método de llamar a una "seccion" por $sec.php .. ademas que puede resultar peligroso .. no ganamos nada con esta solución .. es decir . .igualmente tienes que tener al menos un "array" que contendrá el nombre de tus secciones y tu título para esa página. De esta forma .. ademas puedes validar comodamente que te ingresen un blablabal.php?sec=algoquenoexiste .. y sólo permitir abrir los .php que realmente corresponden ..

Te recomiendo leer sobre estructura de webs "modulares" en estos artículos (por orden)

http://www.forosdelweb.com/f18/faqs-php-530600-post265278/
y luego
http://www.zonaphp.com/articulo34.php

Un saludo,
  #10 (permalink)  
Antiguo 21/01/2005, 06:09
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
La cuestión es que, en este código, pueda hacer lo de mostrar el título de la página 2 (./fichas/columns.php o ./ficha/stratos.php) y no el título de ficha.php.
Sinceramente creo que deberías resolver el problema enfocandolo como te he comentado en mi anterior mensaje y leyendo los tutoriales sobre "web modulares" que ahí veras.

De todas formas .. puedes abrir una página cualquiera (por ejemplo stratos.php) que contenga tu HTML y su <title> .... </title> para "parsearla" y obtener ese dato para tomarlo como variable y usarlo tipo <title><? echo $titulo_obtenido ?></title>

Por ejemplo con esta función:
http://www.zend.com/codex.php?id=233&single=1

Pero .. fijate bien que HTML vas a generar .. si dices que tu script_de_seccion.php ya tiene una estructura tipo:
Código PHP:
<html>
<
head>
<
title>el titulo</title>
</
head>
<
body>
blablabla
</body>
</
html
Y tu ahora vas a insetart eso mismo dentro de una estrutura HTML ya dada .. vas a generar una pagina HTML nada "legal" .. es decir . no válida .. algo tipo:

Código PHP:
<html>
<
head>
<
title>el titulo</title>
</
head>
<
body>
<
html>
<
head>
<
title>el titulo</title>
</
head>
<
body>
blablabla
</body>
</
html>
</
body>
</
html
Como veras .. esto NO ES HTML valido pese que algunos navegadores lo "pasen" y a ti te funcione ..

Un saludo,
  #11 (permalink)  
Antiguo 28/01/2005, 07:11
 
Fecha de Ingreso: octubre-2004
Mensajes: 12
Antigüedad: 19 años, 6 meses
Puntos: 0
Muchas gracias por la ayuda, Cluster. A ver si pongo esto en práctica.
El problema es el tiempo, que entre otras cosas ha hecho que conteste 7 días después de tu mensaje, y sin siquiera echarle un vistazo... Por ello no puedo ponerme a reestructurar la página como debiera y debo ir tirando con apaños.

A ver si saco algo en claro de tus mensajes. Saludos.
  #12 (permalink)  
Antiguo 29/01/2005, 09:08
 
Fecha de Ingreso: octubre-2004
Mensajes: 12
Antigüedad: 19 años, 6 meses
Puntos: 0
Hola de nuevo...

Bien, he echado una ojeada al post sobre webs modulares y he creado una página de prueba, siguiendo más o menos el estilo de la mía ( http://computeremuzone.com/prueba )...

Tengo un par de dudas:

1. ¿Cómo hago lo de que salga el nombre de la página incluida aquí?
2. Imagina que tengo unas 500 páginas html a incluir en esta estructura (son muchas, no sé exactamente cuántas)... ¿Tendría que poner... 500 cases??
switch ($id) {
case 1:
include("prueba1.php");
break;
case 2:
include("prueba2.php");
break;
case 3:
include("prueba3.php");
break;
default:
include("prueba_defecto.php");

Gracias y un saludo.

Última edición por karnevi; 30/01/2005 a las 02:22
  #13 (permalink)  
Antiguo 30/01/2005, 12:36
 
Fecha de Ingreso: octubre-2004
Mensajes: 12
Antigüedad: 19 años, 6 meses
Puntos: 0
Bueno, mientras esperaba la contestación he seguido investigando, y he ido comprendiendo algunas cosas. Dejando a un lado las instrucciones de las webs modulares que me recomiendas -a las cuáles volveré cuando tenga tiempo para reestructurar correctamente la página (ya estuve haciendo pruebas como dije en el mensaje anterior, pero me encuentro con ciertas dificultades estructurales que tendré que resolver cuando tenga más tiempo), vuelvo a la cuestión principal que ahora me atañe para remendar la web... ¿Cómo poner el título que yo quiera según el archivo incluido?

La solución que me das me obliga a definir en el código php todos los archivos posibles a incluir, y para lo que yo lo quería eso significaría unas 500 líneas.
¿No hay algún modo de que, según el archivo incluido, salga uno u otro título?

Por mi parte hice algunas pruebas (quitando <head> y demás de los archivos a incluir, como me dijiste)...

Podría conseguirlo poniendo dos variables, por ejemplo sec y tit. Así,
http://computeremuzone.com/prueba-fi...it=silmarilion
Después sería poner <title><? echo $tit ?></title> y ya estaría.

O bien nombrar bien los archivos para que coincidiese con lo que quiero y poner simplemente:
http://computeremuzone.com/prueba-fi...ec=silmarilion y <title><? echo $sec ?></title>

Ya he comprendido el funcionamiento de esas cosas, lo que partiendo de mi ignorancia previa para mí es un logro. Pero esto no solventa nada, porque sería una carga enorme de trabajo poner todos los enlaces con el ...&tit=..., o imposible si en el nombre del archivo pusiese el del juego completo.

Intenté también poniendo:
<?
{
$titulo="lo que sea";
}
?>
en el archivo a incluir, pero no funciona obviamente porque se carga, en todo caso, después de que haya sido leído el <title>...</title>.

Así que, para finalizar, reitero una vez más:
¿Cómo lo hago sin tener que definir en el código del index todos los archivos que tienen la posibilidad de ser incluidos?
  #14 (permalink)  
Antiguo 31/01/2005, 07:05
 
Fecha de Ingreso: octubre-2004
Mensajes: 12
Antigüedad: 19 años, 6 meses
Puntos: 0
Bueno, deduzco que no hay solución, o que no la sabes. Gracias de todos modos.
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 16:20.