Una duda sobre include y title

v3sTi4

Imáginemos que tenemos una página que está estructurada de la siguiente forma:

  • index.php
    --> Contiene: Cabecera (logo), Menu y un Cuerpo.

El Cuerpo es un include:
include('cuerpo.php');

Este include, irá variando, pero claro, está variando el cuerpo. Hasta aquí tengo todo claro, pero mi duda es "quiero cambiar también el "title"".

Es decir, en el index.php siempre el title es title = "mi página" y claro, independimiente del include que haya el title no cambia y a mi me gustaría que cambiara de acuerdo con el contenido del include.

¿Es posible?
Gracias

cabron

Pues si te he entendido bien, lo que deberías hacer es definir en el archivo que incluyes, una constante que se llame $TITULO por ejemplo, y en tu indice.php, poner el título con echo("<title>$TITULO</title>");

Así para que te cambie el título al cambiar el archivo que incluyes, solo tienes que cambiar el valor de esa constante en el archivo que incluyes.

SeiYa

#2 no, está mal, date cuenta que el cuerpo va debajo del title y lo primero que hará será mostrar el contenido de la variable que es vacío y está definido después.

Lo que puedes hacer es usar js para hacer un document.title = '...';

cabron

#3:

Es que no termino de entender lo que quiere hacer.

Si el cuerpo que incluye, es html puro y duro, y lo mete después del title, entonces como dices tú, estaría mal mi solución.

Ahora, si el archivo que incluye tiene funciones que utiliza para imprimir el html del cuerpo (lo que yo he pensado que quería decir), e incluye el fichero al principio del todo y antes de haber puesto el tag title, entonces si le valdría.

erdanblo

Lo que dice cabron esta bien.

Por que suponemos que los enlaces lo haces de esta manera:

index.php?sec=noticias
index.php?sec=chat

Bien, en tittle pones podrias definir un array con los valores de cada una, si por ejemplo:

array Titulos (
'noticias' => 'Todas nuestras noticias aquí reunidas!';
'chat' => 'Chatea y habla con el resto de putotes';
);

(La sintaxis es posible que este mal, miratela, es que el C# este me esta haciendo un formato a bajo nivel de todo lo que recuerdo xDDD)

Luego haces:
<tittle><?=$Titulos[$_GET['sec']];?></tittle>

Y ya en cuerpo, pues como lo hagas, con un array que incluya las secciones, o usando switch, etc...

v3sTi4

#5
Los enlaces no los hago de esa manera, antes si los hacía de esa manera, ahora utilizo mod_rewrite y las urls varían mucho.

Lo que comenta #2 no me sirve porque $title no aparece definido hasta el el body y la idea de #5 poniendo un array antes que me defina $titulos cogiendo el valor de la url, al utilizar mod_rewrite no me vale.

Probaré a buscar información sobre lo que dice #3, aunque js no se aún :S

Salu2 y gracias

erdanblo

Si te vale, por que a nivel de php, te da igual hacerlo así:

dominio.com/index.php?sec=noticias
domonio.com/index.php?sec=chat

que hacerlo así:

dominio.com/noticias
dominio.com/chat

Si no, vete el planteando en reforzar tu base, por que estas muyyyyyy verde...

v3sTi4

#2

Incluyo así:
< html>
< head>
<title > $titlulo </til tle>
</ head>
< body>
Aquí iría un contenido de un menu y cosas así
include('cuerpo.php');
</bod y>
</ html>

Más o menos sería algo así, por lo que vemos el cuerpo.
Por tanto en 'cuerpo.php' no puedo definir $title porque debería de ser antes. O me estoy liando más aún :-S

v3sTi4

#7
Sí vale llamar de las 2 formas, lo que pasa que luego los buscadores lo que siguen es la forma del enlace.

Si tu llamas index.php?sec=hola, en el navegador no se te cambia automaticamente a /hola
Y por tanto, esto afecta al SEO.

erdanblo

No se como haces la secciones, pero yo al menos en principio no le encuentro lógica.

En cuanto a lo que te digo, internamente, a php le da igual la URL que uses, las variables estan ahí.

SeiYa

A ver, acabamos ya rápidamente:

Donde quieres cambiar el title haces:

< script type="text/javascript" >
document.title = '<?=$title?>';
< /script >

Si quieres usar php únicamente, antes del < title> tendrías que calcular el título de la web con JS.

A mi me pasaba para mi sección de noticias, quería dar a la web el mismo título que a la noticia y para hacerlo tenía que hacer o bien la consulta a la BBDD al comienzo de todo (lo cual rompía todo mi código) o bien usar JS.

v3sTi4

#10 está claro que internamente haces la consulta index.php?sec=contenido y es lo mismo que si haces directamente /contenido.html

El problema está que los buscadores van a seguir la url en el modo que tu lo pongas, es decir, yo en el menu pongo index.php?sec=contenido, el buscador me detectará la url de esa forma, en cambio, si utilizo /contenido.html el buscador me cogerá esa url.

El mod rewrite no actua automáticamente en "secciones fijas", las urls en este caso las tienes que pre-establecer (pro así decirlo), en cambio en las noticias si podría usar lo que dices porque ahí automáticamente a pesar de usar internamente index.php?sec=contenido me lo transformará. Pero no en las secciones fijas como pueda ser: "historia", "tradiciones"...

Gracias

erdanblo

Tranquilo, algo de Mod_Rewrite se, y por eso te digo, que no me estas entendiendo nada y o si me entiendes, es que no pillas del todo como va Mod_Rewrite.

SeiYa

Vamos a ver, yo en mi web, wallack.es lo tengo de tal forma:

http://wallack.es/Secciones/Noticias/prison-break-y-heroes-en-descarga-directa.html
http://wallack.es/Secciones/Registro.html

Y es todo mod_rewrite.

Sin embargo si entras en la noticia verás como cuando te carga la noticia te cambia el título de la web :P

v3sTi4

#13
El problema no va a estar en secciones "dinámicas", sino en "estáticas".

Insisto en lo de antes, no es lo mismo una sección fija (que no va cambiar jamás como es historia.html)

Si el enlace a esa sección lo hago como "index.php?sec=historia" los buscadores me van a coger esa url y no "historia.html" porque no hago uso de ese mod_rewrite.

SIN EMBARGO, en las dinámicas (como noticias) ahí si puedo usar lo que erdanblo me dice, pero en las otras no.

O es así, o estoy muy equivocado de mod_rewrite

v3sTi4

#14 el problema está en que las "secciones fijas" y no en las "dinámicas" de modo que de usar $title, la variable debe estar definida previamente y llamarla así porque el "include" es mucho después del title.

Lo mejor, es como me comenta #13 pero ya he explicado porque creo que no me conviene usar esos arrays, al utlizar mod rewrite en las secciones fijas, ahí no hay php interno que valga porque los buscadores me leerán esa url.

erdanblo

Me la pela que la sección sea fija o dinámica, de todos modos, he llegado a un punto que no entiendo nada de como tienes estructurada la web, por que de ser lo que pienso, la palabra CAOS se queda pequeña, asi que bueno.

Suerte!.

v3sTi4

#18 ya lo solucioné
Al final tenias razón, comprendí mal la función mod_rewrite pero haciendo unas pruebas ví la solución.

Grcias

Usuarios habituales

  • v3sTi4
  • erdanblo
  • SeiYa
  • cabron