lunes, 31 de agosto de 2009

Drupal: Insertar código Javascript desde archivo template.php

Ejemplo rápido sobre como insertar código JS desde el archivo template.php:

function bluemarine_preprocess_page(&$vars, $hook) {
if ($hook == 'page')
{
drupal_add_js('alert("Hola");','inline');
$vars['scripts'] = drupal_get_js();
}
}

Notar la definición del encabezado de la función que consiste en:

function NombreTheme_preprocess_page(&$vars, $hook) {...}

En la función drupal_add_js el segundo parámetro es 'inline' para indicar que el código que se va a insertar es código que no procede de un archivo externo.

viernes, 28 de agosto de 2009

Drupal: Reescribir una URL con código PHP

Para poder reescribir la URL de un enlace, se puede usar la función "custom_url_rewrite_outbound". Por ejemplo, supongamos que tenemos un catálogo generado por el Ubercart. Cada elemento del catálogo muestra una imágen y un título, cada grupo de imágen y título tienen el mismo URL, el cual lleva al usuario a una página general donde se muestran todos los items relacionados con el nombre de catálogo al cual se le hizo clic.

El problema sería ¿cómo puedo hacer para que después de hacer clic en uno de los items que muestra el catálogo, muestre más bien, el resultado de una Vista u otra página que nosotros queramos?

La solución más rápida que encontré es agregando en el archivo settings.php la función llamada "custom_url_rewrite_outbound". Con ésta función es posible reescribir la url de cualquier enlace que exista en la aplicación Drupal que estemos creando.

El código de ejemplo es:

function custom_url_rewrite_outbound(&$path, &$options, $original_path) {
if (preg_match('|^catalog/(.*)|', $path, $matches)) {
preg_match('/[0-9]+$/', $path, $matches);
switch ($matches[0])
{
case '3':
$path = drupal_get_path_alias('catalogo-alicates');
break;
case '4':
$path = drupal_get_path_alias('catalogo-lijas');
break;
case '5':
$path = drupal_get_path_alias('catalogo-martillos');
break;
}
}
}

Notar que en el primer preg_match: preg_match('|^catalog/(.*)|', $path, $matches), usamos una expresión regular para filtrar la url que queramos analizar. En mi caso la URL original es de la forma:

http://www.dominio.com/catalog/5

Lo que está en color rojo, es lo que deseo cambiar por

http://www.dominio.com/catalogo-martillos

Dependiendo del número que aparezca en la URL, se establece el alias. Esos alias que estoy usando son páginas que apuntan a Vistas de Drupal previamente creadas.

En realidad, la cosa es más compleja, pues estoy usando taxonomía; cada elemento del catálogo es un término taxonómico. En el índice de términos se observa la relación que existe entre el nombre que le dimos al término y la url que se le asignó automáticamente.

Referencias:
http://drupal.org/node/207330
http://drupal.org/node/243889
http://agaric.com/note/override-taxonomy
regular_expressions

miércoles, 26 de agosto de 2009

Archivos CHM no funcionan.

Descargué un archivo con formato *.chm. El problema es que no podía verlo, ¿por qué?

La respuesta se explica en esta página: Chm Files

Brevemente, para poder ver el archivo, hay que ir a las propiedades del archivo y notaremos que existe un botón que dice "Unblock". Hay que hacer clic en dicho botón y listo!

martes, 18 de agosto de 2009

Drupal: Corregir imágenes transparentes en IE5, IE6

Excelente módulo para corregir transparencias que en IE5 ó IE6 definitivamente son un caso especial. El módulo está en www.jwpctips.com

Lo único que hay que hacer es instalar el módulo, luego en el archivo page.tpl.php buscamos la imágen que queremos corregir. Dicha imágen la encerramos con un bloque DIV de la forma:

<div class="pngfix">
<img .......>
</div>

Alternativa dos: Enlace relacionado

Alternativa 3:
Otra alternativa que en lo personal, me gusta mucho es ni más ni menos que evitar de una vez por todas el uso de versiones inferiores a IE7. En lo personal creo que los navegadores web de Microsoft definitivamente llevan la contraria a lo que es CSS, de hecho es el único, que yo sepa!, que no respeta las normas de CSS establecidas por la W3C. Una forma para indicarle al usuario que se actualice es usando ie6-upgrade-warning de lo contrario inventarse un código para que detecte en que navegador se va a presentar la información y de esa forma impedir la carga del sitio o mostrar un mensaje de advertencia indicando que el sitio no se puede ver correctamente en versiones IE6 e inferiores.

martes, 11 de agosto de 2009

Asp.Net: Código para descargar un archivo.

Código para descargar un archivo:

JQuery: Establecer colores en líneas alternas de una tabla.

En el siguiente trozo de código se muestra como utilizando JQuery es posible cambiar el color de las líneas de una tabla pero en forma alterna:

$(document).ready(function()
{
    $('tr:odd').addClass('odd');
    $('tr:even').addClass('even');
}

viernes, 7 de agosto de 2009

martes, 4 de agosto de 2009