Entradas

Mostrando entradas de abril, 2011

Haciendo backtrace rápido y sucio

Imagen
En el artículo  Quick-and-Dirty Debugging , de Angela Byron , se muestra una manera rápida de ver el backtrace (la secuencia de llamadas de funciones), de un error. Consiste en modificar drupal_set_message(), localizado en includes/bootstrap.inc: function drupal_set_message($message = NULL, $type = 'status', $repeat = TRUE) { if ($type == 'error') { $message .= '<xmp>'. print_r(debug_backtrace(), 1) .'</xmp>'; drupal_add_js('console.log('.json_encode(array('Drupal Backtrace'=>debug_backtrace())).');','inline'); } if ($message) { ... } La línea en amarillo está basada en la propuesta de Byron y la verde en la que David Konsumer puso en los comentarios al artículo. Puedes comentar la linea que desees o el condicional if para hacer el backtrace en diferentes circunstancias.

Listando los hooks invocados

Imagen
Al programar con Drupal, algo que me gustaría conocer es cuáles son los hooks que podría usar en un momento determinado. Y, si se pudiera, en que orden son ejecutados. Cuando he preguntado a otros, nadie parece tener la respuesta. Bueno, aún no la he hallado, pero he encontrado en el artículo  Drupal: Exposed  de Angie Byron , una forma de listar los hooks usados en un momento determinado. Consiste en localizar la funcion module_implements , que está en includes/module.inc , y hacer algo algo como: function module_implements($hook, $sort = FALSE, $reset = FALSE) { ... drupal_set_message("hook_$hook"); ... } Dice el articulo que como pueden haber hooks que se invocan después que la página es mostrada (no sabía que eso podía suceder), esta lista de hooks los mostraría en la siguiente carga de la página.

CSS3 para mejorar el breadcrumb de un tema Zen

Imagen
CSS3 está permitiendo hacer muchas cosas interesantes que antes requerían además javascript o imágenes de apoyo. Por ejemplo, usando sólo CSS se puede hacer que la lista de breadcrumbs se vea como: La idea es independiente del tema. En este caso, la ilustraré con un subtema Zen. Configuración del tema Normalmente hay un caracter de separación para los términos del breadcrumb. Ingresar a la configuración del tema e indicar que no se use ninguno. También indicar que no se agregue dicho caracter al final de la lista. HTML De ese modo, el HTML del breadcrumb será similar a: <div class="breadcrumb"> <a href="/drupal/inmobiliaria/">Inicio</a> <a href="/drupal/inmobiliaria/admin">Administrar</a> <a title="Controla la apariencia del sitio." href="/drupal/inmobiliaria/admin/build">Construcci&#195;&#179;n del sitio</a> <a title="Cambia el tema que usa el sitio

Hacking Views

Vengo usando Views  prácticamente desde que empecé con Drupal. Aprender Views me requirió paciencia y, principalmente, práctica, pero creo que ha valido el esfuerzo. La interfaz puede parece un poco intimidante al comienzo, pero luego va adquiriendo sentido. Hay varias cosas de Views que me gustaría saber, pero aún no he resuelto. Estas son algunas, sin ningún orden en particular: ¿Se puede usar Views para mostrar un array arbitrario? Eso me ayudaría a usar su mecanismo de paginación, al menos, para presentar otro tipo de resultados que no tengan que ver necesariamente con base de datos. ¿Puede usar Views un SQL arbitrario? ¿Cuál es la forma de modificar, programaticamente, la consulta, el proceso o el resultado? ¿Cómo lograr una caja de búsqueda que ubique el termino en cualquiera de un conjunto de campos especificados? Hoy encontré este artículo de Jeff Eaton :  Hacking Views, Part 1: Basic Concepts Me está ayudando a entender mejor algunas cosas. Por ejemplo, yo suelo defi

Cómo agregar un formato minutos:segundos

Imagen
Para agregar un nuevo formato a los disponibles en el combo que se muestra en las opciones de visualización de un nodo (o de un campo CCK), normalmente habría que agregar algunas funciones en un módulo. El módulo custom_formatters permite hacerlo de modo más sencillo. Requiere que además esté instalado cck y token . Pasos Una vez instalado custom_formatters, ir a admin/build/formatters. Hay algunos ejemplos que pueden servir de guía. Elegir Add new formatter para agregar un nuevo formato. Para este ejemplo: Nombre: minuto_segundo Etiqueta: Minuto:Segundo Editor mode: Advanced Field type(s): number_float PHP: return sprintf('%02d:%02d', $element['#item']['value']/60, $element['#item']['value']%60); Cuando se elige Editor mode: Advanced, se puede usar PHP. De otro modo es HTML y tokens. Para este caso, el valor del elemento a formatear, está en $element['#item']['value']. Puede leer el artículo original en  Drupa

Cómo definir un selector CSS que requiera dos clases

Imagen
Lea el artículo original en Puroguramu .

Cómo personalizar los enlaces de nodereference_url

Imagen
Nodereference_url permite indicar que se agreguen enlaces para crear un hijo al final del nodo padre. Por ejemplo, si hay un nodo proyecto , se puede crear un nodo foto , con un campo nodereference que apunte a un determinado proyecto. Nodereference_url permite agregar automáticamente al nodo proyecto un enlace que conduzca a la creación de un nodo foto. Esto puede ser cómodo. De ese modo podemos tener nodo foto , nodo plano , nodo noticia , nodo inscripcíon , etc, cada uno con un campo nodereference apuntando a proyecto. Y, en el nodo proyecto, automáticamente enlaces que permiten crear estos nodos hijos. Los nodos automáticos son dispuestos en orden alfabético. ¿Qué tal si deseamos otro orden?. Además, ¿qué tal si queremos que se muestre el enlace sólo en algunas circunstancias y no en otras?. nodereference_url_create_link El módulo nodereference_url contiene la función nodereference_url_create_link ($node, $field_name, $type_name, $attributes), donde: $node es el nodo q