Cocina "con fundamento" para drupal

Por todos es sabido que en la cocina copiar recetas, mejorarlas y distribuirlas es la norma habitual. Las grandes cocineras, las "etxeko andres" (amas de casa), las que nos han dado de comer todos los días, han ido traspasando sus recetas de unas a otras/os.

En Investic estos últimos años hemos comido mucho y bien, pero ha sido con Drupal cuando nuestros platos han empezado a ser algo más exquisitos. Por eso hemos decidido hacer este libro de recetas, para compartir nuestra cocina "gourmet". Para ello haremos uso de los ingredientes clásicos: módulos, plantillas, instalaciones... Tendremos en cuenta que no todo el mundo está igual de suelto en los fogones y cocinaremos para todos los niveles, acordaros que los niños y niñas siempre pueden echarnos una mano, limpiando la lechuga, arreglando css.

Somos lo que comemos y por eso creemos que comer con Drupal es algo sano y saludable.

Saludos y bienvenidos a nuestra cocina.

Crear blogs personalizados

El sistema de blogs de drupal, es uno por cada usuario. hemos pensado en realizar blogs de otra manera, tal que puedan ser escritos por más de un usuario y con una apariencia tipo wordpress.. (+ bloques..)
El ejemplo es el de blog gaztelan economiasolidaria
La idea consiste en relacionar dos tipos de contenidos diferentes, cómo podrían ser blog y posts.

  • cck blog (bitacora): Campos: Descripción(textarea), usuarios (usereference, A la hora de crear cada blog se le dirá que usuarios tendrán permisos a escribir posts para ese blog.), cabecera del blog (image, todos sus posts tendrán tb la misma cabecera)
  • cck post (post_blog): Campos: Blog (nodereference al anterior cck, para ver a que blog pertenece ese post), categorías, contenido (textarea)

Vistas (bloques) necesarias para conseguir ese aspecto:

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 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)

//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

// 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

<?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


Distribuir contenido
Diseño y desarrollo INVESTIC con DRUPAL