Ver Mensaje Individual
  #5 (permalink)  
Antiguo 16/12/2011, 14:41
Avatar de jpa
jpa
 
Fecha de Ingreso: diciembre-2011
Ubicación: A Coruña
Mensajes: 10
Antigüedad: 12 años, 5 meses
Puntos: 2
Respuesta: Cambiar metadatos con header() dependiendo del contenido

Gracias por tu respuesta macrofbb, pero esa parte la tenía clara. La duda estaba en qué debería poner en ese archivo (o en el mismo index, que también podía ser) para obtener el contenido de esas metaetiquetas distinto según el contenido.

Al final no he utilizado la función header(), pero he conseguido el resultado que buscaba de la siguiente manera (por si le vale a alguien más).

Además de lo que ya dije en el primer mensaje, para seleccionar el idioma de la págian utilizo lo siguiente:

Código PHP:
<!-- Selección de Idioma*/ -->

<?php  
    session_start
();  


    if(!isset(
$_SESSION['idioma']) || !empty($_GET['lang']))
    {  
        if(empty(
$lang))
        {  
            
$lang="es";
$lang = isset($_GET['lang']) ? $_GET['lang'] : "es";
        }  
        
$_SESSION['idioma']=$lang;  
    }  
    switch (
$_SESSION['idioma']) {  
    case 
$_SESSION['idioma']: require("lang/".$_SESSION['idioma']."/".$_SESSION['idioma'].".php"); break; }  
?>
Este código está en el fichero code.php, que se incluye al principio de todo el index.php

Código PHP:
<?php
//SE INCLUYE EL FICHERO core.php QUE CREAMOS
include ("resources/core.php");
?>

<!DOCTYPE html>

<html>

<div id="contenedor">

<?php 
//INCLUIR CABECERA 
include ("cabecera.php"); 

//INCLUIR MENU PRINCIPAL 
include ("menu.php"); 
?> 

<?php 
//INCLUIR EL CONTENIDO DE LA PÁGINA 
include ('content.php'); 
?> 

<?php 
//INCLUIR EL PIE DE PÁGINA 
include ("pie.php"); 
?>

</div>

</html>


Con él lo que consigo es que, dependiendo de la opción de idioma escogida el texto que se muestre sea en un idioma u otro. Para ello tengo un fichero por idioma donde defino los arrays de las variables de las distintas páginas.

La idea es aprobechar estos ficheros para crear en ellos otros arrays de $keywords y $description que, dependiendo de la variable $content que se pasa en la url para mostrar el contenido, muestren una cosa u otra.

La idea es, que sin pasar más variables pueda modificar la descripción y las palabras clave de cada sección de la página. Además, estas palabras serán traducidas junto con el contenido de la página.

Así, por ejemplo, en el archivo es.php que incluye los textos en español, incluyo lo siguiente:

Código PHP:
$keywords = array (
    
"default" => "keywords, para, cuando, content no tiene valor",
    
"contenido/nosotros.php" => "keywords, para, apratado, nosotros",
    
"contenido/contacto.php" => "keywords, para, apartado, contacto",
    
"contenido/productos.php" => "keywords, para, apartado, productos",
    );
$description = array (
    
"default" => "descripción para cuando content no tiene valor",
    
"contenido/nosotros.php" => "descripción para el apratado: nosotros",
    
"contenido/contacto.php" => "descripción para el apartado: contacto",
    
"contenido/productos.php" => "descripción para el apartado: productos",
    ); 

Por otra parte, en el documento core.php incluyo lo siguiente justo después del código que antes señalé:

Código PHP:
<!--Metadatos según contenido -->

<?php 

if(!isset($_GET['content']))
    {
    
$content="default";
    }
    else {
$content $_GET['content']; 
}
?>
<meta name="keywords" content="<?php echo $keywords[$content]; ?>" />
Así, cuando cargo la página principal, $content todavía no tiene valor, y al ver el código encuentro esto:

Código HTML:
<!--Metadatos seg�n contenido -->



<meta name="keywords" content="keywords, para, cuando, content no tiene valor" />

<meta name="description" content="descripción para cuando content no tiene valor" /> 
Pero cuando estoy en el apartado "contacto" el código de la página es el siguiente:


Código HTML:
<!--Metadatos seg�n contenido -->



<meta name="keywords" content="keywords, para, apartado, contacto" />

<meta name="description" content="descripción para el apartado: contacto" /> 
¡Conseguido!

Supongo que a algunos les parecerá trivial, pero yo no he visto hacer esto antes, y espero que a otros les sirva.

Un saludo a todos.