Título: Incluir metadatos de forma dinámica Publicado por: Marciano_79 en 26 Junio 2016, 02:43 am Hola a todos... quiero que me echen una mano con este tema, como dice el titulo quiero obtener metadatos diferentes para cada página de mi sitio web.. como el titulo, descripción y keywords... la mayoría de mis paginas pasan por GET (no todas) y para ser honesto buscando por todo google no pude dar a como realizar esta tarea... porfavor alguien que me pueda dar una idea, orientación o pueda compartir un código, quedaría muy agradecido... estos son mis archivos de una galería de fotos.. head.php, metadatos.php, galerias.php y galeria-fotografica.php
head.php Código
metadatos.php Código
la idea "talvez" seria que quedara algo así, si es que sirve para mi propósito metadatos.php Código
galerias.php Código
galeria-fotografica.php Código
desde ya muchas gracias a quien me pueda ayudar... Saludos! Título: Re: Incluir metadatos de forma dinámica Publicado por: gAb1 en 26 Junio 2016, 04:50 am No estoy seguro de como es la estructura de tu sitio, supongo que tienes un archivo main.php donde incluyes todas las demás páginas.
Tampoco sé como estás haciendo esto, el incluir cada página según la url. Una manera eficiente para esto y además para saber que metadatos incluir, es usar un array whitelist con los nombres de los url permitidos, cada uno apuntando a su archivo .php para luego incluirlos en main.php con un array_key_exists (o cualquier otra manera para hacer esto). Yo lo hago de la siguiente manera: En index.php tengo un array donde tengo listadas todas las páginas y url de mi sitio. Por ejemplo, para saber cual es el títutlo de la página hago lo siguiente: Código
(nota: lo que hago en $title es pasar la url a una clase que coge el texto de memcached o de la db si es la primera vez y todavía no está cacheado) De esta manera ya sabes en que página estás y puedes saber que información incluir de manera dinámica. También te sirve por si quieres incluir css, js, contenido, etc... especifico de la página, con un simple if: Código
Un consejo a la hora de imprimir de php a html, usa el shorthand que viene activado por defecto en php 5.4: Código
Cuando hay bastantes se nota la diferencia. Solo sirve para imprimir, para todo lo demás abre con los tags completos. Título: Re: Incluir metadatos de forma dinámica Publicado por: Marciano_79 en 27 Junio 2016, 02:07 am Hola… muchas gracias por tu respuesta.!! Mira la verdad aún no defino cual sería la mejor forma de estructurar mi sitio… esto es porque quiero la mejor opción para traer los metas, por ello has tocado un punto muy importante que se me olvido señalar en un principio… por ahora las paginas solo las veo por un archivo, navimenu.php donde tengo un menú de esta forma…
Código
Tenía en mente preparar la estructura de forma modularisada, creando un archivo conf.php definiendo módulos por defecto, etc… algo así. Código
Pero no estoy seguro, ni creo que sea lo mejor… tu me podrías ayudar hacer bien la estructura así como lo haces tú, para que me quede de mejor forma, prefiero tu ejemplo lógicamente ya que tú tienes más control sobre él y yo podría comprender de mejor forma… si me puedes ayudar siempre y cuando tengas tiempo, como tendría que preparar bien mi index.php, a demás de crear el archivo main.php para incluir las paginas…? desde ya muy agradecido por tu tiempo.! saludos.. Título: Re: Incluir metadatos de forma dinámica Publicado por: gAb1 en 29 Junio 2016, 05:28 am El index.php lo empezarias de la siguiente manera:
1. Con el require de tu framework, si usas uno. 2. Seguidamente inicializas tus clases. 3. Coges el url de $_SERVER['REQUEST_URI'] (comprobandolo y limpiandolo). 4. Inicias la sesion (si hay usuarios). 5. Y haces la comprobación del login. Hasta aquí tendrías algo así: Código
Si vas a tener usuario, ahora mismo sabríamos si el usuario se ha identificado o no. Si no está identificado entonces $client sera FALSE, pero si lo ha hecho entonces $client será un objeto de clase con la información del usuario (y podremos llamar las funciones de la clase client()). Ahora viene lo de las url: 1. Hay que comprobar, con un if por ejemplo, si el usuario se ha logueado o no, para mostrar unas páginas u otras. 2. Crear un array para cada caso, que será un whitelist de lás páginas disponibles. Sería algo así el código: Código
Como puedes ver, ahora tenemos un array con todas las páginas permitidas. Lo siguiente sería saber cual es el título de la página, y todo lo demás que dependa de la página actual, como los meta: Código
Como te comenté anteriormente, tengo una clase abstracta que inicializa un idioma basado en diferentes factores (primero la opción que haya elegido el usuario en su cuenta y segundo el idioma de su navegador), una vez inicializada la función se le pueden pasar keys (que en este caso sería la url) y te devuelve el texto correspondiente. Tu puedes hacerlo como quieras. Y por ultimo se incluye el main.php: Código
Bien, ahora vamos a usar el define() de arriba del todo, esto es basicamente para que los archivos no se accedan directamente y solo puedan ser mostrados mediante el index.php. También aprovecho para mostrarte como incluir las páginas dentro de main.php: La estructura del archivo main.php es muy simple, primero se comprueba con defined (por lo indicado arriba) y luego se empieza la estructura normal del html. Ahora incluir las páginas, yo te recomiendo que lo hagas dentro de la etiqueta <main> (que debería ir dentro de <body>): main.php: Código
Otra cosa importante son los archivos estáticos, como imagenes, jscripts, css, etc. Estos deberían ir en un subdominio, propiamente llamano static.tuweb.com y que preferiblemente tenga php desactivado, más que nada por si permites subir archivos que no se ejecuten. Pero la razón por la que hay que hacer esto así es porque tu dominio principal no va a aceptar urls normales, como por ejemplo /jscripts/scripts.js o /images/logo.jpg ya que vas a usar las friendly urls para navegar como /home o /account, etc... Que basicamente son los indexes de tu array $includes, estos deben ser las urls. Para ello tienes que poner el siguiente código en tu .htaccess: Código: Options -Indexes Esto lo que hace es basicamente redirigir todas las peticiones a tu archivo index.php que ahora hace de router. Apache ya no lo usas para navegar por tu sitio, ahora es tu index.php el que se encarga de eso, pero para ello, hay que pasarle todas las peticiones para saber cual es la url a acceder. Cualquier duda mañana te respondo que hay sueño :P Espero que se haya entendido :silbar: Título: Re: Incluir metadatos de forma dinámica Publicado por: Marciano_79 en 30 Junio 2016, 04:38 am Maestro.. realmente te pasastes!! reviso con detalle el código y te comento... eso si, no uso usuarios, no es un foro ni blog, solo más adelante tendrán en algunos apartados o artículos para comentar de forma libre, sin previo registro... muchas gracias.!! ;-) amm por otra parte no estoy usando framework para desarrollo, solo uso un framework para los css como lo es Bootstrap.. saludos!
Título: Re: Incluir metadatos de forma dinámica Publicado por: gAb1 en 30 Junio 2016, 23:14 pm No hay problema, simplemente omites las partes donde inicias la sesión php y compruebas el login, y simplemente un solo array (ya no necesitas el array_merge() ni el if) y si no tienes framework no necesitas incluir ni inicializar nada.
Si no necesitas usar todo lo que ofrece bootstrap y quieres aligerar tu web (y la carga de los clientes y reducir el consumo de ancho de banda) leete la respuesta que puse en el mensaje en desarrollo web donde explico como hacer diseño responsive basico y facil sin necesidad de usar un framework. |