Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] título dinámico y etiquetas meta

Estas en el tema de título dinámico y etiquetas meta en el foro de PHP en Foros del Web. Hola a todo el que lea… quiero pedir ayuda para poder ver como incorporar metadatos de forma dinámica a mi página web, como título y ...
  #1 (permalink)  
Antiguo 25/06/2016, 06:55
Avatar de marciano_79  
Fecha de Ingreso: agosto-2009
Mensajes: 88
Antigüedad: 14 años, 8 meses
Puntos: 0
título dinámico y etiquetas meta

Hola a todo el que lea… quiero pedir ayuda para poder ver como incorporar metadatos de forma dinámica a mi página web, como título y descripción…

Código HTML:
Ver original
  1. <meta name="title" content="aquí estará mi título"/>
  2. <meta name="description" content="aquí está la descripción”/>

Pero había pensado en algo así…

Código PHP:
Ver original
  1. <meta name="title" content="<?php echo $titulo; ?>"/>
  2. <meta name="description" content="<?php echo $description; ?>"/>

Entonces el gran asunto es que tengo muchas páginas que pasan por get de forma dinámica pero todas tienen la misma descripción en sus metas lógicamente…

Mis páginas reciben la información de una base de datos mysql, donde extraigo el titulo y descripción de cada contenido, y esa información obtenida me gustaría llevarla de forma dinámica a mis meta… como puedo lograr esto? Alguien me puede echar una manito con ideas o con un código porfavor… desde ya muy agradecido...
  #2 (permalink)  
Antiguo 25/06/2016, 07:24
Avatar de rodrypaladin
Moderador
 
Fecha de Ingreso: abril-2010
Ubicación: Madrid
Mensajes: 2.127
Antigüedad: 14 años
Puntos: 468
Respuesta: título dinámico y etiquetas meta

Si en tu bd en cada página que tienes en la base de datos le añades un propio meta, solo tienes que llamarlo luego en dicha página. ¿ Te refieres a eso ?
__________________
No te olvides de dar +1 a quien te echa un cable ;)
  #3 (permalink)  
Antiguo 25/06/2016, 07:39
Avatar de marciano_79  
Fecha de Ingreso: agosto-2009
Mensajes: 88
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: título dinámico y etiquetas meta

HOla gracias por responder... Mi idea sería que en mi archivo header.php donde tengo para incluir metadatos exista un script que tome mi url http://localhost/articulos.php?cat=vinos y extraiga a su vez el título del artículo y la descripción del contenido que ya esta y lo incorpore a mis metas… no sé si cómo indicas podría realizarlo…
  #4 (permalink)  
Antiguo 25/06/2016, 12:00
Avatar de rodrypaladin
Moderador
 
Fecha de Ingreso: abril-2010
Ubicación: Madrid
Mensajes: 2.127
Antigüedad: 14 años
Puntos: 468
Respuesta: título dinámico y etiquetas meta

Puedes crear una función con el head de tu página, y pasarle a la función por parámetros el título y la descripción dinámica

A ver si te vale:

Código PHP:
Ver original
  1. <?php
  2.     function mostrarHead($titulo, $descripción) { ?>
  3.  
  4.             <meta charset="UTF-8">
  5.             <title><?php echo $titulo; ?></title>
  6.             <meta name="Description" content="<?php echo $descripcion; ?>">
  7.  
  8.     <?php
  9.     }
  10.  ?>
  11.  
  12. <!DOCTYPE html>
  13. <html lang="en">
  14. <head>
  15.     <?php mostrarHead("Titulo de la pagina", "Descripcion de la página"); ?> // esto tendría que venir de la tabla de la bd en la que guardes esos datos
  16. </head>
  17. <body>
  18.    
  19. </body>
  20. </html>

Te lo he puesto en la misma página pero ponlo en otro archivo y llama con include
__________________
No te olvides de dar +1 a quien te echa un cable ;)
  #5 (permalink)  
Antiguo 25/06/2016, 17:56
Avatar de marciano_79  
Fecha de Ingreso: agosto-2009
Mensajes: 88
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: título dinámico y etiquetas meta

Estimado gracias por tu ayuda, pero no me resulta... lo más lógico es que cometo un error al incluir el codigo que me distes, tambien tengo la duda que si al llamar los datos de mi BD al head.php tendria que unir varias tablas que tengo, una de los articulos y otra de galerias... y ahi me pierdo más aún... por ahora lo que hise es ordenar mis archivos "creo" que de mejor manera... te los dejare por si talvez puedas ver alguna forma mejor que yo pueda entender todo esto... solo si realmente puedes, mefrustra el no comprender, mis archivos para prueba son metadatos.php, head.php, galerias.php y galeria-fotografica.php

head.php
Código PHP:
Ver original
  1. <!doctype html>
  2. <html lang="es-ES">
  3. <head>
  4. <head profile="http://www.midominio.com">
  5. <?php
  6. include('panel/_setup.php');
  7. include "php/metadatos.php";
  8. ?>
  9.  
  10. <link href="includes/css/bootstrap.min.css" rel="stylesheet" type="text/css">
  11. <link href="includes/css/menu.css" rel="stylesheet" type="text/css">
  12. <link href="includes/css/stylenew.css" rel="stylesheet" type="text/css">
  13. <script src="includes/js/bootstrap.min.js" type="text/javascript"></script>
  14. <script src="includes/js/jquery-1.11.2.min.js" type="text/javascript"></script>
  15.  
  16. </head>
  17.  
  18. <?php include "php/navimenu.php";?>
  19. </header>

metadatos.php
Código HTML:
Ver original
  1. <meta name="Title" content="titulo que corresponda para cada página">
  2. <meta name="Description" content="descripcion que corresponda para cada página">
  3. <meta name="keywords" content="palabra1, palabra2,  palabra3, etc">

galerias.php
Código PHP:
Ver original
  1. <?php
  2. include('panel/_setup.php');
  3. include "php/head.php";
  4. ?>
  5.  
  6. <div id="principal">
  7. <?php
  8.     if( isset( $_GET['cat'] ) ){  
  9.         $id = $_GET['cat'];
  10.         $consulta ="SELECT
  11.             categoria.IDCATEGORIA,
  12.            categoria.NOMBRE_CATEGORIA,
  13.            galerias.IDGALERIA,
  14.             galerias.TITULO,
  15.            DATE_FORMAT( galerias.FECHA_ALTA, '%d/%m/%Y' ) AS FECHA,
  16.            galerias.DESCRIPCION
  17.            
  18.         FROM galerias
  19.         INNER JOIN categoria ON categoria.IDCATEGORIA = galerias.FKCATEGORIA_ID
  20.        
  21.         WHERE categoria.NOMBRE_CATEGORIA = '$id'
  22.         ORDER BY FECHA_ALTA DESC ";  
  23.        
  24.         echo"<title>Galería Fotográfica $id </title>";             
  25.         echo "<h1>Fotografía</h1>";
  26.        
  27.     }
  28.     echo '<div id="listado">';
  29.     $filas = mysqli_query($cnx, $consulta);
  30.     while( $columna = mysqli_fetch_assoc($filas)){
  31.               $id = $columna['IDGALERIA'].'-'. $columna['TITULO'];
  32.               $subconsulta = "SELECT ARCHIVO, NOMBRE FROM fotos WHERE FKGALERIA='$id' AND ESTADO='visible' ORDER BY RAND() LIMIT 1";
  33.               $filas2 = mysqli_query($cnx, $subconsulta);
  34.               $datos = mysqli_fetch_assoc($filas2);
  35.               $nombre_archivo = $datos['ARCHIVO'];
  36.               echo '<div>';  
  37.               echo "<h2>$columna[TITULO]</h2>";
  38.               echo "<div>$columna[FECHA]</div>";
  39.               if( $nombre_archivo != null ){
  40.                   echo "<img src='fotos/$nombre_archivo' alt='$datos[NOMBRE]'/>";
  41.               }
  42.               echo "<p>". nl2br( $columna['DESCRIPCION'])."</p>";
  43.               echo "<a href='galeria-fotografica.php?gal=$id'>VER GALERIA</a>";
  44.               echo '</div>';
  45.              
  46.           }
  47.           echo '</div>';
  48.    
  49. ?>
  50. </div>
  51. <?php include "php/pie_pagina.php";?>

galeria-fotografica.php
Código PHP:
Ver original
  1. <?php
  2. include('panel/_setup.php');
  3. include "php/head.php";
  4. ?>
  5. <div id="principal">     
  6.  <?php
  7.     if( isset( $_GET['gal'] ) ){
  8.         $id = $_GET['gal'];
  9.         $consulta = "SELECT DESCRIPCION, TITULO FROM galerias WHERE IDGALERIA ='$id'";
  10.         $filas = mysqli_query($cnx, $consulta);
  11.         $columna = mysqli_fetch_assoc($filas);
  12.         echo "<title>Fotografía, $columna[TITULO]</title>";
  13.         echo "<h2>$columna[TITULO]</h2>";
  14.         echo "<p>$columna[DESCRIPCION]</p>";
  15.         echo '<a href="javascript:history.back(-1);" title="Ir la página anterior">VOLVER ATRAS</a>';
  16.         echo '<div id="ver_galeria">';     
  17.        
  18.         $consulta ="SELECT * FROM FOTOS WHERE FKGALERIA='$id' AND ESTADO='visible' ORDER BY POSICION";
  19.         $filas = mysqli_query($cnx, $consulta);
  20.         while( $columna = mysqli_fetch_assoc($filas)){
  21.             echo '<div>';
  22.             echo '<img src="fotos/'.$columna['ARCHIVO'].'" alt="'.$columna['NOMBRE'].'" />';
  23.            
  24.             echo '</div>';
  25.           }
  26.           echo '</div>';           
  27.         }
  28.        
  29. mysqli_close($cnx);    
  30. ?>
  31. </div>
  32. <?php include "php/pie_pagina.php";?>

gracias nuevamente y seguire tratando con lo que me distes... saludos..!
  #6 (permalink)  
Antiguo 26/06/2016, 06:38
Avatar de rodrypaladin
Moderador
 
Fecha de Ingreso: abril-2010
Ubicación: Madrid
Mensajes: 2.127
Antigüedad: 14 años
Puntos: 468
Respuesta: título dinámico y etiquetas meta

Que error te aparece ??
__________________
No te olvides de dar +1 a quien te echa un cable ;)
  #7 (permalink)  
Antiguo 30/06/2016, 06:40
Avatar de marciano_79  
Fecha de Ingreso: agosto-2009
Mensajes: 88
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: título dinámico y etiquetas meta

Hola no habia visto tu respuesta.. mira la verdad no logre hacer que me funcionara la consulta... pero ahora estoy con un metodo que me tiene casi casi de mi finalidad... lógicamente mi problema radica en darle el valor a una variable, y que esta la tome directamente de una consulta ya ejecutada.... mira te muestro lo que hecho.

tengo una archivo confg.php donde incluyo registros de mi base de datos (practicamente seran datos por defecto) pero que de igual forma los puedo adminstrar por mi panel de control.

Código PHP:
$config = array(
    
"title"=>"$columna[TITULO_HEAD]",
    
"subtitulo"=>"subtitulo defecto",
    
"url"=>"http://{$_SERVER['HTTP_HOST']}/",

    
"friendlyurls"=>false
    
); 
tengo el archivo head.php donde cargo mis metas..

Código PHP:
ob_start();

$paginaActual = basename($_SERVER['PHP_SELF']);

?>

<title><?php echo $config['title']; ?> | <?= $titulo ?></title>
<base href="<?php echo $config['url']; ?>">
<meta name="description" content="<?= $description ?>">
y en todas mis páginas "cualquiera.php"

Código PHP:
// esta variables estan fuera del body
$titulo =  'aqui quiero que se recoja la informacion de [TITULO]'
$description ='aqui quiero que se recoja la informacion de [DESCRIPCION]';
$keywords str_replace " "","strtolower($description) ) . $comunkeywords;


// este es el resultado de una consulta que esta dentro de body
echo "<h1>$columna[TITULO]</h1>";
echo 
"<p>$columna[DESCRIPCION]</p>"
bueno esa es la idea ojala se comprenda, ya que no veo la gracias de escribir a cada página los títulos y descripción en el código a mano por asi decirlo... crees poder ayudarme aqui? gracias de antemano..
  #8 (permalink)  
Antiguo 30/06/2016, 14:10
 
Fecha de Ingreso: febrero-2016
Mensajes: 36
Antigüedad: 8 años, 2 meses
Puntos: 2
Respuesta: título dinámico y etiquetas meta

Entiendo que lo primero que tendrás que hacer es la consulta a la base de datos para recoger la información de esa pagina dinámica.
Cuando realices la consulta, asigna los valores a las distintas variables que necesites, y luego compón la pagina.
  #9 (permalink)  
Antiguo 30/06/2016, 18:33
Avatar de marciano_79  
Fecha de Ingreso: agosto-2009
Mensajes: 88
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: título dinámico y etiquetas meta

las consultas ya estan realizadas... por algo estoy preguntando como asignar los valores, si supiera como hacerlo logicamente no preguntaria no?
  #10 (permalink)  
Antiguo 01/07/2016, 00:54
 
Fecha de Ingreso: febrero-2016
Mensajes: 36
Antigüedad: 8 años, 2 meses
Puntos: 2
Respuesta: título dinámico y etiquetas meta

A ver.. Lo digo mas que nada porque tienes una archivo "head" que lo estas usando antes de la consulta a la base de datos, mas que nada por eso.

La asignación de variables es de la misma forma que recoges el titulo de la base de datos o el contenido.

No soy el mas idóneo para escribirte el código, pero si para darte la idea.

A ver si esto te vale:

Si tu tienes una BBDD con varias columnas, titulo, contenido, descripción y metas, que hacen referencia a los contenidos de tu web.

Cuando llamas a la pagina dinamicamente, tipo index.php?pagina="VINO",

Lo primero, y digo literalmente, LO PRIMERO (Bueno, la Seguridad de la web es lo primero, validación, etc...) que tienes que hacer es ejecutar la consulta y recoger los contenidos de esa base de datos.
Esos datos de la consulta los recogerás en un array asociativo del tipo $PAGINA, que estará compuesto por toda la fila de valores de esa consulta que ejecutaste (que dices que ya tienes, como puede ser $PAGINA['titulo'], $PAGINA['contenido'], $PAGINA['descripcion', etc...]).
Y una vez recogidos estos valores, lo aplicas al código para crear el head, el contenido o lo que quieras.

La programación no es solo conocer un lenguaje, la programación es el concepto o la idea.
Si tienes clara la idea, el lenguaje es lo de menos...

Con esto, me vengo a referir, que en tu código estas creando un head antes de recoger la información de la BBDD.
No se puede construir una casa por el tejado.
Y si tecleas en "San Google" como asignar los valores de una consulta a una variable en PHP, creo que tendrás para leer dos días.
"como asignar el valor de una consulta a una variable en PHP" esta búsqueda produce mas de 410 mil resultados.

Última edición por ica1977; 01/07/2016 a las 01:01
  #11 (permalink)  
Antiguo 01/07/2016, 11:50
Avatar de marciano_79  
Fecha de Ingreso: agosto-2009
Mensajes: 88
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: título dinámico y etiquetas meta

Si ica1977 si comprendo lo que me dices, el head lo tengo por debajo de la consulta... el orden esta en mi archivo galeria.php de esta forma...

galeria.php
Código PHP:
include('conx.php');
include(
"php/comun.php"); // en comun.php tengo tomado tambien con include confg.php
aqui la consulta BD y definicion de variables

include("head.php"); 
el tema esque no me tomaba la informacion para los metas de la página que se visualisaba realmente... no queria usar $_GET pero no se me ocurre de que otra forma se podria...

Código PHP:
if( isset( $_GET['gal'] ) ){
        
$id $_GET['gal'];
 
$constgaleria "SELECT TITULO, DESCRIPCION FROM galerias WHERE IDGALERIA ='$id'";
 
$filas mysqli_query($cnx$constgaleria);
 
$columna mysqli_fetch_assoc($filas);

 
$titulo "$columna[TITULO]";
 
$description "$columna[DESCRIPCION]";
 
$keywords str_replace " "","strtolower($description) ) . $comunkeywords;
 } 
si conoces otra forma de llamar a mis paginas sin GET se agardece.! saludos!

Última edición por marciano_79; 01/07/2016 a las 12:03

Etiquetas: etiquetas, meta, mysql
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 00:02.