Archivo del febrero de 2010

Modificar argumentos en Drupal 6 con Views en función de la URL

Hay veces que no necesitamos por algún motivo modificar los argumentos que por defecto nos proporcionan las views en función de los nodos, taxonomías, contenidos (fields) o cualquier otro módulo que nos los pueda proporcionar como pueda ser el módulo multilenguaje.

Si no has trabajado con argumentos en Drupal, te aconsejo visitar este post y almenos debes tener conocimientos básicos de PHP

Lo que voy a explicar aquí es un caso muy particular y sencillo. Simplemente en su día quería poder cambiar el filtro del idioma de una vista en función del idioma seleccionado por el usuario.

Para ello vamos a partir de que tenemos un Drupal 6, configurado en distintos idiomas y que en la negociación del idioma (como queremos que trabaje con el idioma en la url) le tenemos puesto como Prefijo de ruta con regreso a idioma. (p.e. http://www.dominio.com/admin/settings/language/configure)

Quedaría algo asi en la ruta http://www.dominios.com/es/content

A parte de esto tendremos instalado en módulo Views.

Muchas veces es habitual que tengamos publicado contenido en distintos idiomas, es decir traducido y  que visualizamos a través de una página generada por las Views (por lo menos yo lo hago así).

Ahora bien, ¿qué pasa si tu cambias de un idioma a otro directamente mientras navegas?, pues que simplemente te traduce el interface al idioma pero no vuelve a filtrar por el idioma en cuestión , para esto le tenemos que pasar el parametro que le diga que idioma.

Como hago yo esto.

Pues muy fácil,  en los argumentos que le paso a la página, añadimos el argumento Node trasnlation: Idioma

arg1

Después en su configuración:

Action to take if argument is not present >  Provide default argument > PHP Code

Y en la caja de  PHP argument code le añadimos en siguiente código

$elc=explode("/",$_SERVER['REQUEST_URI']);
$args[0]= $elc[1];
return $args[0];

Esto evalua la URI en la que se solicita la vista, es decir cuando pinchamos en el menu y mostramos la página que genera la vista y estrae eñ 2º argumento en este caso el idioma (/es), por que recordamos que gracias al modulo Translate nos lo mostraba en en la url.

Quedaría algo así. (click para ampliar)

arg2

Pero bueno, ¿y si  queremos añadirle un título personalizado para cada idioma?. Aquí viene mi truco del almendruco, que seguramente haya una manera mejor, pero esta para mi es válida :).

Añadir un titulo personalizado

Simplemente le añadimos un parametro más de tipo Global: Null

arg3

Y en la configuración del argumento le añadimos %2 en el Título para que así muestre lo que devuelve el segundo argumento en la URI (es decir, este mismo Global:null).

Ahora bien del mismo modo le añadimos este código al PHP argument code del mismo modo que con el primer argumento.

$elc=explode("/",$_SERVER['REQUEST_URI']);
switch ($elc[1]) {
case "es": $args[2]="Boletines informativos"; break;
case "en": $args[2]="Newsletteres"; break;
}
return $args[2];

Aqui podemos establecer de forma manual que queremos que salga en cada uno de los idiomas,  podemos añadir tantos case queramos o tantos idiomas queramos. Acordaros siempre de configurar el código del idioma (http://www.dominio.com/admin/settings/language/edit/en).

Con lo que esto quedaría de la siguiente manera (click para ampliar):

arg4

Es una forma casera de pasar argumentos en función de la url que cuando se tiene muy definida la estructura que se va a llevar con los contenidos, resulta muy útil.

El Buzz de Google, otro intento de …Googlerizar :)

Pues nada, no hace ni 3 horas que me había metido en mi cuenta de Gmail, cuando me encuentro ahora mismo, con BUZZ, “Mucho más que mensajes de estado”. ¿Otro twiter?, ¿un intento de Glooglerizar aquello en lo que Google Inc.  no es el rey?. Como paso con Google Wave no hace mucho, quería compertir claramente con Facebook, aunque no lo dijera. Vemos ahora de forma más directa y agresiva, ni  me ha dado opción de no añadirlo a mi Gmail, de fomentar el uso unicamente de sus herramientas. Esta está claro que quiere competir con twiter + atrezzo.  Google tiene una asignatura pendiente y es la de las redes sociales… ¿lo conseguirá?.

Personalmente, a mi me gusta Gmail por la seriedad, seguridad .Uso la cuenta para la cosas importantes, para mi perfil profesional. Solo recibo mensajes productivos, no recibo cadenas ( o eso procuro), ni mensajitos, ni casi span, ni chorradas varias.  Vamos que no quiero mi Gmail en una red social. Convivo profesionalmente como muchos  con muchas de las herramientas de Google y esto puede poner en peligro ciertas cosas que por un mero descuido  se acaban compartiendo con 121313  personas, como pueden ser los documentos de Google Docs, y esto no mola.

En fin, a quien le guste ahí lo tiene :) , yo paso.

¿Alguien sabe como quitar el iconico del Buzz de Gmail? . Ya lo encontré,  abajo en el pie del Gmail te sale un enlace pequeñito donde lo haya que pone “desactivar Buzz” … menos mal.

Etiquetas: , , , , ,