Archive for the ‘Drupal’ Category

Modificando el formulario de búsqueda en Drupal 5.x

Monday, January 19th, 2009

Para modificar el formulario de búsqueda en un tema de Drupal 5, primero hay que añadir la función que llame a la nueva plantilla en el fichero template.php, para ello añadimos el siguiente código:

<?php
function phptemplate_search_theme_form($form) {
/**
* This snippet catches the default searchbox and looks for
* search-theme-form.tpl.php file in the same folder
* which has the new layout.
*/
return _phptemplate_callback('search_theme_form', array('form' => $form), array('search-theme-form'));
}
?>

Despues creamos un fichero nuevo en el directorio del tema llamado search-theme-form.tpl.php y añadimos el siguiente código que modificaremos a nuestro antojo.

<label for="search_theme_form_keys">Custom Search</label>
<input type="text" maxlength="128" name="search_theme_form_keys" id="edit-search_theme_form_keys"  size="25" value="" title="Enter the terms you wish to search for." class="form-text" />
<input type="submit" name="op" value="Search"  />
<input type="hidden" name="form_id" id="edit-search-theme-form" value="search_theme_form" />
<input type="hidden" name="form_token" id="a-unique-id" value="<?php print drupal_get_token('search_theme_form'); ?>" />

Fuente:
Customising the search forms

Añadir un nodo a través de crontab en un módulo de Drupal 5.x

Wednesday, July 9th, 2008

Esto puede servirnos para un agregador de noticias por ejemplo. Si ya conoces mas o menos la estructura de los módulos de drupal, previamente tendrías que tener definido un tipo de contenido espécifico para el módulo, o seleccionar alguno que ya exista como las entradas de blog.

El código es sencillo, lo insertamos en el hook_cron():

function my_module_cron() {
$node = new stdClass();
$node->type = variable_get(‘my_module_node_type’, ‘my_module’);
$options = variable_get(‘node_options_’.$node->type, FALSE);
if (is_array($options)) {
$node->status = in_array(’status’, $options) ? 1 : 0;
$node->promote = in_array(‘promote’, $options) ? 1 : 0;
$node->sticky = in_array(’sticky’, $options) ? 1 : 0;
} else {
$node->status = 1;
}
$node->uid = 1 // 1 para admin,
// 0 para anonymous,
// cualquier otro que exista
$node->title = ‘Titulo del nodo’;
$node->body = ‘Contenido del nodo’;
$node->created = time();
$node->teaser = node_teaser(‘tweet’);
node_object_prepare($node);
node_save($node);
}

Con eso debería añadir sin problemas el nodo al ejecutar el crontab :)

Hovertip: Tooltips en Drupal

Monday, June 9th, 2008

Un tooltip es ese texto de ayuda que aparece al poner el ratón encima de algún elemento de una página web, aunque los usos pueden ser diversos.

En drupal hay varios módulos que permiten utilizar tooltips, uno de ellos es Hovertips and Clicktips.

Se instala cómo cualquier otro módulo, descargamos y descomprimimos el fichero en la carpeta modules dónde tengamos instalado drupal.

Una vez instalado tenemos que activar el módulo en el panel de administración.

Para hacer una prueba de cómo quedaría un tooltip podemos crear una página nueva y escribir el siguiente código html. Es necesario cambiar el formato de entrada a full html.

<span hovertip=”termdefinition”>Termino</span>
<div id=”termdefinition” class=”hovertip”><h1>Titulo</h1><p>El texto que queramos</p></div>

La plantilla que trae por defecto no es muy atractiva, es recomendable modificarla un poco, se encuentra en la carpeta del módulo y se llama hovertip.css

Otra cosa que no me gusta mucho esque por defecto trae un delay de 700ms, esto se puede cambiar editando el fichero hovertip.js y modificando la siguiente sección:

var hovertipConfig = {'attribute':'hovertip','showDelay': 300,'hideDelay': 700}

Utilizar xajax en un módulo de drupal 5.x

Thursday, April 3rd, 2008

Hoy he tenido que desarrollar un módulo para Drupal utilizando xajax, después de un rato investigando por fin he conseguido hacerlo funcionar, os explicó aquí cómo hacerlo y lo dejo anotado para futuros módulos.

Es bastante sencillo, primero tenemos que descargar la versión estable de xajax y descomprimirla en el directorio del plugin.

1. Incluímos la clase de xajax en el fichero .module y declaramos las funciones que vayamos a utilizar.

require_once(‘xajax/xajax.inc.php’ );

function myfunction()
{
//código
}

2. Módificamos o añadimos el hook_menu(), con esta función podemos modificar el header de la página y así poder incluir la llamada al javascript:

function nombre_modulo_menu() {
// inicializamos xajax
$xajax = new xajax(‘/index.php’);

// registramos las funciones
$xajax->registerFunction(“myfunction”);

// incluimos el javascript en el header drupal_set_html_head($xajax->getJavascript(‘modules/nombre_modulo/xajax’));

$xajax->processRequests();
}

3. Llamamos a la función desde el contenido del módulo.

Ejemplo:

Llamada a la función desde un bloque generado por el módulo:

function nombre_modulo_block($op=’list’, $delta=0) {
if ($op == “list”) {
$block[0]["info"] = t(“Bloque xajax”);
return $block;
}
else if ($op == ‘view’) {
// contenido del bloque
$block_content = ‘<script>xajax_myfunction();</script>
// set up the block
$block['subject'] = ‘Bloque xajax’;
$block['content'] = $block_content;
return $block;
}