
Upgrade status, Controlando nuestros drupals
¿Nuestros platos son de temporada? o se podrán comer en cualquier momento o lugar. Esto en drupal nos lo indica las diferentes versiones y sus módulos asociados. Un tema delicado a la hora de iniciar un guiso ya que según los ingredientes elegidos haremos mas fácil o mas difícil que nuestro platos se todo terreno.

Error al editar un CCK
Si al editar un tipo de contenido (cck) sale el error de abajo.. es porque el nombre del cck es demasiado largo!! la solución es editar el cck y acortar el nombre!!
Warning: Table 'system' was not locked with LOCK TABLES query: SELECT * FROM system WHERE type = 'theme' in ******drupal/includes/database.mysql.inc on line 172

Views fields relacionados con los usuarios, autores..
En ocasiones es necesario que el usuario contenga más campos que los que vienen por defecto (username, contraseña, foto..), como por ejemplo Nombre, telefono, provincia... ESto es sencillo mediante el módulo profile, que te deja crear campos para las cuentas de usuarios.
Pero existe otro módulo, usernode, que por cada cuenta de usuario crea un nuevo nodo (tipo: usernode y el autor del nodo es el user al que se refiere). Ésto es más completo, ya que puedes crear todo tipo de campos, desde tipo texto, nodereferences, campos de taxonomias..
La pega es que en las views, los links de los campos referidos a los autores te llevan a la página user/uid (la página del usuario, del módulo user y profile), en vez de guiarte a la del usernode.
El siguiente código se encarga de alterar ese link, metiendo el tema de dichos campos ( en este ejemplo del nombre de autor y de su fotografía) en el template y modificando únicamente el destino del link.
// En template.php // Para el campo,Nodo: nombre de autor function phptemplate_username($object) { if ($object->uid && $object->name) { if (drupal_strlen($object->name) > 20) { $name = drupal_substr($object->name, 0, 15) .'...'; } else { $name = $object->name; } if (user_access('access user profiles')) { // línea dónde se ha efectuado el cambio, se ha cambiado por 'user/'. $object->uid: $output = l($name, 'usuario/'. $object->name, array('title' => t('View user profile.'))); } else { $output = check_plain($name); } } else if ($object->name) { if ($object->homepage) { $output = l($object->name, $object->homepage); } else { $output = check_plain($object->name); } $output .= ' ('. t('not verified') .')'; } else { $output = variable_get('anonymous', t('Anonymous')); } return $output; } // Para el campo: Node: Author picture function phptemplate_user_picture($account) { if (variable_get('user_pictures', 0)) { if ($account->picture && file_exists($account->picture)) { $picture = file_create_url($account->picture); } else if (variable_get('user_picture_default', '')) { $picture = variable_get('user_picture_default', ''); } if (isset($picture)) { $alt = t("@user's picture", array('@user' => $account->name ? $account->name : variable_get('anonymous', t('Anonymous')))); $picture = theme('image', $picture, $alt, $alt, '', FALSE); if (!empty($account->uid) && user_access('access user profiles')) { //la línea de cambio: $picture = l($picture, "usuario/$account->name", array('title' => t('View user profile.')), NULL, NULL, FALSE, TRUE); } return "<div class=\"picture\">$picture</div>"; } } }

Drupal con jQuery al estilo navarro (primera parte)
Está claro que en esta tierra como ya hemos comentado en otras ocasiones se come mucho y bien, esto ha dado grandes cocineros y cocineras. Nosotros queremos llegar a eso y pero como acostumbramos en esta cocina no usaremos pimientos del piquillo son otros los ingredientes que usamos, hoy es jQuery el rey de nuestra cocina.
Este mini manual constará de varias partes que iré ampliando.
- Primer plato: Introducción teórica o el porque de las cosas (primera parte)
- Segundo plato: Primeros guisos con jQuery (segunda parte)
- Tercer plato: Cocina fusión. Drupal + jQuery (tercera parte)
- Cuarto plato: Ejemplo en reales. (cuarta parte)
- [..]

Módulo OG: error en el argumento de las vistas => OG: Group nid(s)
Los argumentos (para las views) del módulo og no funcionan correctamente, ya que los links de la vista resultante son los mismos que los links de los nodos, en vez de ser el link de la "view" con el argumento de ese nodo.
//Fichero og_views.inc // Línea 349, realizar siguiente cambio: - return l($name, "node/". intval($query->group_nid)); // quitar esta linea + return l($name, $arg."/". intval($query->group_nid)); // añadir // Línea 378, el siguiente: - return l($name, "node/$query->group_nid"); //quitar + return l($name, "$arg/$query->group_nid"); //añadir

Accesibilidad tablas del módulo EVENT
FALLO DE ACCESIBILIDAD:
Proporcione resúmenes de las tablas.
La tabla no tiene resumen (atributo "summary") (1)
// en el template.php function phptemplate_event_calendar_month($op, $header, $rows, $attributes = array(), $caption = NULL) { $attributes['summary'] = 'Calendar'; $output = theme("table", $header, $rows, $attributes, $caption); return '<div class="event-calendar"><div class="month-view">'. $output ."</div></div>\n"; }

hook_link y su potencia
Que drupal es versátil y modular es como decir que el sol calienta. Este tipo de hook lo demuestran.
Con este hook creamos dos enlaces en la parte inferior de un nodo como lo hacen otros módulos como comment etc
<?php /** * Implementation of hook_link(). * */ function movida_link($type, $object, $teaser = FALSE) { if ($type == 'node') { $node_type= variable_get('movida_'. $type, FALSE); if ($node_type == '1') { $links = array(); $links['gears_create'] = array( 'title' => t('Create'), 'href' => "manifest/node_create", ); $links['movida_delete'] = array( 'title' => t('Delete offline'), 'href' => "manifest/node_delete", ); return $links; } } } ?>
Nueva sección en cocinando con drupal CÓDIGOS
Hace tiempo que no se ve mucho movimiento en nuestra cocina, lo cierto es que en nuestra pequeña ciudad cuando se acercan las fiestas de desenfreno y locura, no sólo no se para la ciudad por 9/15 días, también se acaba el mundo. El que se acabe el mundo como es de entender que nos impide estar mas tiempo entre las cazuelas.
De todos modos nosotros seguimos con nuestra intención de ir mejorando este lugar donde aprender a cocinar platos con drupal.
Hemos creado una nueva sección CÓDIGOS es un clásico de pagar trozos de códigos hay varios lugares más donde ya se hace esto pero como en muchos casos nuestras recetas se reducen a un simple código hemos querido añadirlo.
Por lo tanto disfrutar de esta nueva sección que se puede acceder desde el menú superior.
Salud y buenos alimentos

Vistas embebidas
Cuando hay dos tipos de contenidos relacionados entre ellos, muchas veces nos gustaría que en el mismo nodo se pudiese ver también algunos datos de los relacionados.
Ésto se puede conseguir de varias formas, empezando por las vistas con argumentos y usando éstas en los paneles.. lo único que conlleva al problema de ir creando menús y paneles a medida.. Por lo que la mejor idea es la de las vistas embebidas.
Pasos para crear vistas embebidas (en este ejemplo el tipo de contentido "reunión" dependerá de "proyecto"):

Cómo configurar captcha en la acción node/add
Caso práctico! Hemos instalado el modulo captcha en nuestro drupal, lo tenemos configurado de tal manera que cuando alguien hace un comentario en un post haya que teclear los códigos generados por captcha.
En nuestro site tenemos un tipo de contenido que lo pueden generar usuarios anónimos y nos hemos encontrado con el problema de que el módulo captcha en la configuración por defecto sólo aparece cuando añades comentarios (lo he configurado así en las opciones generales) pero nosotros queremos que salga también en la acción node/add/tipodecontenido
Solución: