Títulos dinámicos en PHP y MySQL
Títulos dinámicos en PHP y MySQL. Para actualizar etiquetas de títulos, meta descripciones, elementos de enlaces canónicos, etc. de diferentes páginas, a menudo usamos un CMS que tiene toda esa parte trabajada de manera dinámica.
Nota:
Por ejemplo, si usamos complementos de WordPress o módulos de Drupal para hacer el trabajo, generalmente tenemos un proceso que es eficiente y bien optimizado.
Generar títulos dinámicos en PHP y MySQL
Los CMS con utilidades de SEO integradas son geniales. Sin embargo, ¿qué sucede cuando tiene la tarea de implementar todos los elementos HTML pertinentes página por página en un sitio web basado en PHP con un <head>
estático? Entonces vamos a darle solución.
Crear un <head>
dinámico
En la mayoría de los casos, cada archivo PHP estático, ya sea index.php, contacto.php, nosotros.php, etc. Hará referencia al mismo archivo header.php
a través de una declaración de inclusión (include o require). Veamos un ejemplo.
<?php
include('header.php');
?>
Agregar include o require
La declaración de inclusión le dice al servidor que cualquier código dentro de header.php también debe incluirse en el archivo que se solicita. De esta manera, no tenemos que escribir mucho del mismo HTML en cada página de contenido.
Por lo tanto, tenemos este archivo estático del que podemos extraer el código necesario. Tenga en cuenta que el archivo header.php no contiene necesariamente solo el HTML <head>.
Generalmente, incluirá cualquier código que sea reutilizable en la parte superior del documento HTML en todo el sitio web (incluido el logotipo, la navegación, el banner, etc.).
Veamos un ejemplo:
<html lang="en">
<head>
<title>Page Title Here</title>
<meta name="description" content="Meta description goes here.">
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="wrapper">
. . .
¿Como crear títulos dinámicos en PHP y MySQL
Para implementar títulos y meta descripciones dinámicos en cada página del sitio web debemos de manejar alguna consulta SQL y declaraciones condicionales. Veamos un ejemplo.
<html lang="en">
<head>
<title><?php echo $pageTitle; ?></title>
<meta name="description" content="<?php echo $pageDescription; ?>">
<?php
// If canonical URL is specified, include canonical link element
if($pageCanonical)
{
echo '<link rel="canonical" href="' . $pageCanonical . '">';
}
// If meta robots content is specified, include robots meta tag
if($pageRobots)
{
echo '<meta name="robots" content="' . $pageRobots . '">';
}
?>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="wrapper">
. . .
Ahora que tenemos un <head> con elementos que se basan en variables definidas en la página, hemos hecho la mayor parte del trabajo «difícil». Pasemos a definir estas variables específicas de página.
Definir variables PHP específicas de la página
El segundo paso es definir cada página de nuestro sitio, todos los archivos PHP individuales, necesitaremos como mínimo, dos variables ($pageTitle
y $pageDescription
) antes de nuestra instrucción include(header.php).
Para validar estas variables, escribiremos algunos condicionales para detectar casos en los que estas variables no están definidas; pero por ahora, tendremos mucho cuidado al definirlos en cada página. También tenemos la opción de definir dos variables adicionales ($pageCanonical
y $pageRobots
).
¿Como definir una cadena en títulos dinámicos?
Para definir una variable, usamos la sintaxis: $variable = "Esto es una cadena";
. Avancemos y asignemos valores a nuestras cuatro variables para la página de inicio. Además, trabajaremos con el archivo index.php
<?php
// Define variables for SEO
$pageTitle = 'Orange Widgets | The Best Orange Widgets';
$pageDescription = 'Visit AwesomeOrangeWidgets.com to find the best orange widgets in all the lands (Oz included).';
$pageCanonical = 'http://www.awesomeorangewidgets.com/';
// We don't want the search engines to see our website just yet
$pageRobots = 'noindex,nofollow';
// Include header file
include('header.php');
. . .
?>
Si pudieron observar hemos definido nuestro título, meta descripción, URL canónica y contenido de meta robots con cuatro variables de PHP.
Segunda forma: Usando While
Como ya habrá notado, el motor principal es un bucle que extrae información de base de datos. Sin embargo, debemos de generar los datos directamente dentro del ciclo y almacenarlo en alguna variable para su uso futuro. Y solo entonces comience cualquier salida.
<?php
$query = mysqli_query($con," SELECT * FROM posts WHERE id = '$id' ");
while ($row = mysqli_fetch_array($query))
{
$page_title = $row['page_title'];
$page_content = $row['page_content'];
}
?>
Luego de obtener los resultados desde la base de datos podemos plasmar los resultados en una determinada página en el cual deseamos colocar y titulo y meta dinámico a través de una consulta SQL.
<html>
<head>
<title><?php echo $page_title; ?></title>
</head>
<body>
<?php echo $page_content; ?>
</body>
</html>
Conclusión
En este articulo hemos aprendido a generar títulos dinámicos usando PHP y como fuente de información una base de datos como ser MySQL o MariaDB y/o cualquier otra base de datos.
Generalmente para extraer valores de una base de datos podemos apoyarnos de alguno ciclo, como ser: Ciclo While, ciclo foreach u otro ciclo.
Todo esto apoyados de una consulta SQL en específico para dinamizar nuestros títulos en cada página en PHP.
Para las conexiones SQL se recomienda usar PDO por su seguridad y flexibilidad, incluso PDO PHP puede conectarse con SQL SERVER para trabajar sin problemas.
Muy interesante el artículo. Lo he usado en el título pero me ha dado nuevas ideas para implementar.