APURO: agregar dinámicamente etiquetas meta en el head del documento

6 views
Skip to first unread message

nicolás rosbaco

unread,
Mar 3, 2017, 3:49:57 PM3/3/17
to web2py-...@googlegroups.com
Hola gente, personalizando la opción de compartir ne redes sociales me encontré con las Twitter cards....

Bueno, básicamente consiste en agregar etiqeutas con cierta info a la página web para que twitter la lea e interprete....

Como esas etiqeutas van en el head y deben ser escritas al compartir la noticia

    <meta name="twitter:card" content="summary_large_image">
    <meta name="twitter:site" content="@nytimes">
    <meta name="twitter:creator" content="@choiquenet">
    <meta name="twitter:title" content="Noticias Interculturales de la Comarca">
    <meta name="twitter:description" content="NEWARK - The guest list and parade of limousines with celebrities emerging from them seemed more suited to a red carpet event in Hollywood or New York than than a gritty stretch of Sussex Avenue near the former site of the James M. Baxter Terrace public housing project here.">
    <meta name="twitter:image" content="http://choiquenet.ctarionegro.com.ar/choiquenet/default/download/post.imagen.b84a636ca8c7cf9b.6d696e69737472612e6a7067.jpg">

Se me quemaron los papeles.... no se como "inyectar" eso desde el controlador y en tiempo de ejecución en el head del documento.

Agradeceré ayuda.


nicolás rosbaco

unread,
Mar 3, 2017, 5:00:06 PM3/3/17
to web2py-...@googlegroups.com
Obtuve una solución, que no es la que más me gusta....

Explico el problema:

quería Agregar dinámicamente (es decir, con la info que obtengo de una consulta a la base de datos) algunas etiquetas meta en el head de la página (sólo para algunas vistas).

Esto para que Twitter me mustre bonito el twit cuando comparto (así: https://twitter.com/antiyankipatago/status/837780288591687681 y no así: https://twitter.com/antiyankipatago/status/837746744515510272).

No podía usar response.meta.tiwtter = 'cosa' en el controlador poque las etiqeutas tienen un formato medio extraño (por los dos puntos)


    <meta name="twitter:creator" content="@choiquenet">

La solución

En Layout.html, en la parte head definí un bloque (no sabía que se podía, simplemente probé). Quedó así:


    <meta name="google-site-verification" content="">
     
      {{block twitterCards}}{{end}}
     
    <!-- include stylesheets -->
    <link rel="stylesheet" href="{{=URL('static','css/bootstrap.min.css')}}"/>

Y en la vista simplemente (la que me interesa), como se hace con el bloque para publicidaddes, escribo lo que quiero dentro del bloque (que irá al head); queda así:

{{right_sidebar_enabled=True}}
{{response.title=registro.title}}
{{extend 'layout.html'}}

{{block twitterCards}}

    <meta name="twitter:card" content="summary_large_image">
    <meta name="twitter:creator" content="@choiquenet">
    <meta name="twitter:title" content="{{=registro.title}}">
    <meta name="twitter:description" content="{{=registro.bajada}}">
    {{if registro.imagen:}}
    <meta name="twitter:image" content="http://{{=request.env.http_host}}{{=URL('default','download',args=registro.imagen)}}">
    {{pass}}
{{end}}




Esto anda.... cosas que no me gustan:

1) Tengo que poner http:// adelante de la url de la imágen.... ¿esta bien eso????
2) Hubiese preferido escribir los meta desde el controlador, pero bue... no se si se podrá por ese tema de los dos puntos separando un determinado parámetro.


Un abrazo para todo el mundo por ahí.

Saludos



Carlos Cesar Caballero Díaz

unread,
Mar 3, 2017, 5:59:42 PM3/3/17
to web2py-...@googlegroups.com

Hola, para eso puedes utilizar a response.meta:

response.meta.author = "Pepe"

generará:

<meta name="author" content="Pepe" />

También puedes usar un diccionario:

response.meta.tc_card = {''name":"twitter:card", "content":"summary_large_image"}

En https://github.com/daxslab/web2py-simple-seo hay un complemento que implementa algunas de estas etiquetas, podrías utilizarlo como base.


Saludos.



El 03/03/17 a las 15:49, nicolás rosbaco escribió:
--
Has recibido este mensaje porque estás suscrito al grupo "web2py-usuarios" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a web2py-usuari...@googlegroups.com.
Para acceder a más opciones, visita MailScanner ha detectado un intento de fraude en la siguiente página web "groups.google.com". No confíe en esta página web: MailScanner ha detectado un intento de fraude en la siguiente p�gina web "groups.google.com". No conf�e en esta p�gina web: https://groups.google.com/d/optout.

Yoel Benitez Fonseca

unread,
Mar 4, 2017, 9:03:43 AM3/4/17
to web2py-usuarios
No en la plantilla esta bien puesto, es una "view" se supone que es la que se encarga de esas cosas.

y en cuanto a lo de poner http, no te hace falta pon directamente:

    {{if registro.imagen:}}
    <meta name="twitter:image" content="{{=URL('default','download',args=registro.imagen,
scheme=True, host=True)}}">
        {{pass}}



eso le indica a URL poner la url absoluta al recurso (http://web2py.com/books/default/chapter/29/04/the-core#Absolute-urls)

--
Has recibido este mensaje porque estás suscrito al grupo "web2py-usuarios" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a web2py-usuarios+unsubscribe@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
Yoel Benítez Fonseca
http://redevil.cubava.cu/
$ python -c "import this"





Nicolás Rosbaco

unread,
Mar 4, 2017, 12:11:59 PM3/4/17
to web2py-usuarios
Hola y gracias mil desde ya....
Lo estoy mirando y es un poco complejo... intento ir por ese lado porque me gusta mucho más esa implementación.
Gracias de nuevo
Reply all
Reply to author
Forward
0 new messages