Entradas

Agregar formato de fecha

Imagen
Drupal 6.2. Para formatear un campo de tipo date (por ejemplo, en una vista), uno puede elegir de un combo. Normalmente, las alternativas incluyen las opciones Predeterminado, Long, Medio, Short. Pero es posible agregar más opciones. Eso se puede hacer entrando a Administración, Configuración de sitio, Fecha y hora, Formatos, Configurar . En Añadir tipo de formato dar un nombre, por ejemplo DiaMes (es lo que aparece en el combo), y un tipo, por ejemplo diames (es para la máquina). Luego, ir a  Añadir formato . En la caja Cadena de formato ingresar uno siguiendo la sintaxis del manual php . Por ejemplo d/m para mostrar sólo día y mes en la forma dd/mm. Finalmente, volver a Configurar y, en el combo del tipo de formato que definimos (Formato de fecha DiaMes), elegir el formato que acabamos de crear.

Copiando un campo CCK

Imagen
Hoy, en un tipo de contenido llamado Trabajo tenía un campo tipo date llamado Duración (field_duracion), para guardar las fechas Desde y Hasta. Por diversas razones (una era que no era posible que Hasta guardara un valor vacío si Desde era obligatorio), decidi usar dos campos de tipo date que se llamaran Inicio (field_inicio) y Terminado (field_terminado). Para pasar los valores de un campo a otro, exploré cuales eran los nombres de las tablas y campos involucrados, y cuáles eran las tablas que cambiaban después de una inserción con la interfaz. Encontré que, fuera del cache y tablas similares, cuando se hacía una inserción sólo se agregaba un registro en la tabla content_type_trabajo. Así que, usando phpmyadmin, ejecuté: UPDATE content_type_trabajo SET field_inicio_value=field_duracion_value, field_terminado_value=field_duracion_value2 Limpié el cache y pude ver los valores en los nuevos campos. Luego, eliminé el campo Duración. Esta operación sería más fácil si CC...

Yendo con Drupal

Imagen
En desarrollo web, uso habitualmente HTML, CSS y Javascript. También un poco de retoque de imágenes y Flash. Al ver un site, es interesante imaginar la secuencia de pasos que uno podría seguir para hacer algo similar. Se pueden aprender muchas cosas al intentarlo. También ayuda a responder si uno puede hacer algo, qué tan extensa es la tarea y en cuánto tiempo se podría realizar. Aunque el resultado que se visualiza sea el mismo, puede haber muchas formas de codificar un site y de producir ese código. Sin embargo, con el tiempo, uno va notando que hay maneras estándar de organizar los archivos y el código fuente, y también la producción de éstos. Esa especie de orden establecido ayuda a que un desarrollador pueda compartir su trabajo con otros. O incluso consigo mismo, porque después de un tiempo hasta el propio código puede parecer un recuerdo ajeno. Cuanto más claro y evidente sea, mejor. Y compartir cosas ayuda a que éstas evolucionen más rápido. Uno de los probl...

Cómo personalizar la página site-offline

Imagen
La página site-offline se muestra cuando ponemos el sitio en mantenimiento (admin/settings/site-maintenance), o cuando Drupal no puede conectarse a la base de datos. Aquí me refiero al segundo caso. Para probar esta característica, puede apagar el servidor de base de datos. También puede cambiar temporalmente el archivo sites/default/settings.php poniendo parámetros erroneos de conexión. Por ejemplo: sites/default/settings.php ... #$db_url = 'mysqli://mydatabase:clave@localhost/mydatabase'; $db_url = 'mysqli://mydatabase:clave_erronea@localhost/mydatabase'; ... 1 En sites/default/settings.php, indicar el nombre del tema que contendrá a maintenance-page-offline.tpl.php, la página personalizada. Hay unas líneas que se pueden descomentar para eso, pero quizás lo más sencillo sea agregar las que necesitamos al final. Por ejemplo, usaré el tema minnelli, que viene por default con Drupal: sites/default/settings.php ... $conf['maintenance_theme'] = ...

Debug con Xdebug y Aptana (y Notepad++)

Imagen
Aunque quizás llevo bastante tiempo desarrollando aplicaciones web, no me había preocupado mucho por encontrar un modo de hacer depuración línea por línea (como lo hacía cuando estudiaba Turbo Pascal... cuantos años ya). No creía que se podría hacer con comodidad. Suponía que el procedimiento era demasiado técnico o se requería de un IDE pesado o costoso. Por ejemplo, en Java, no llegué a hacerlo. Ni siquiera con las aplicaciones no web. Quizás porque fueron muy pocas o muy pequeñas como para sentir la necesidad. Con PHP, he sentido muchas veces la necesidad, pero hasta ahora había podido sobrevivir poniendo echo y print_r. Pero ahora, trabajando con Drupal, aunque el código es relativamente claro, hay varios paradigmas de organización conviviendo y con frecuencia no sé por donde entrar. Hay documentación, pero muchas veces siento que sólo parece aumentar las sombras del bosque. Usar la técnica de echo y print_r es util, como dejar migajas en el camino, pero puede ser algo tedi...

Cómo quitar el historial del perfil del usuario

En el perfil del usuario (el mostrado en el url user) aparece " Historial, Miembro desde... ". A veces se desea que no aparezca esa información. Ocultarlo Una forma de hacerlo es ocultarlo. Por ejemplo localizando el elemento y aplicándole CSS para eso: En algún .css del tema: .profile h3, .profile .user-member {   display: none; } Quitarlo Otra forma de hacerlo es quitarlo, que ni siquiera se genere el HTML. Con el template Una forma de quitarlo es copiando al tema el template /modules/user/user-profile-category.tpl.php y agregar una línea que prevenga la presentación. Por ejemplo: themes/ttt/user-profile-category.tpl.php <?php if ($title == t('History')) return; ?> <?php if ($title) : ?>   <h3><?php print $title; ?></h3> <?php endif; ?> <dl<?php print $attributes; ?>>   <?php print $profile_items; ?> </dl> Con una función del template Otra forma de quitarlo es modificando las variables de tem...

Un pr() para Drupal

pr() es un comando que suelo usar mucho en CakePHP para revisar el valor de una variable. En Drupal, hay comandos como dsm() pero, a veces, lo que requiero es algo tan simple como lo que hace pr(). Al no encontrar un comando igual de práctico, que funcionara tanto en los templates como en los módulos, y sin instalar ningún módulo extra, uso una solución rápida que consiste en colocar el siguiente código al final del archivo sites/default/settings.php: function pr($x, $return=TRUE, $set_message=TRUE) { $output = '<xmp>'; $output .= print_r($x, TRUE); $output .= '</xmp>'; if ($set_message) { drupal_set_message($output); } if ($return) { return $output; } else { echo $output; } } $return=TRUE permite asignar el valor de salida a una variable. $set_message permite mostrarlo con drupal_set_message.