Translate to

Buscar

8 de junio de 2012

Bloques con id descriptivos

En Drupal, los bloques suelen tener id numéricos, lo que dificulta el mantenimiento de los estilos que se les aplica (el id numérico de un block puede cambiar si se lo elimina y vuelve a crear, por ejemplo). Puede ser más conveniente usar id descriptivos.
Para eso, se puede aplicar algo como:
template.php
...
/**
 * Devuelve un id textual para el block
 * http://www.bluepiccadilly.com/2011/12/give-your-drupal-blocks-more-descriptive-html-id-attribute
 */
function block_id(&$block) {
  $info = module_invoke($block->module, 'block', 'list');
  if ($info[$block->delta]['info']) {
    $block_id = 'block-' . $block->module . '-' . $info[$block->delta]['info'];
    $block_id = str_replace(array(' ', '_'), '-', strtolower($block_id));
    return preg_replace('/[^\-a-z0-9]/', '', $block_id);
  } else {
    return 'block-' . $block->module . '-' . $block->delta;
  }
}
...

block.tpl.php
<div id="<?php echo block_id($block); ?>" class="clear-block block block-<?php print $block->module ?>">

<?php if (!empty($block->subject)): ?>
  <h2><?php print $block->subject ?></h2>
<?php endif;?>

  <div class="content"><?php print $block->content ?></div>
</div>

En mi caso, usando Omega theme, no había un block.tpl.php por default, así que lo copié de themes/garland/.

Una alternativa al uso de ids descriptivos, mencionado en el punto anterior, es usar classes descriptivas. Para eso se puede usar el módulo Block Class. Clases específicas se podrán asignar en la configuración de un block. Por ejemplo, si se asigna la clase logo, luego se podrá localizar al bloque con .block.logo.

5 de junio de 2012

La forma Drupal

Al elaborar un site, a veces me pregunto por qué usar un framework como Drupal.

Para hacer algo, primero veo si puedo hacerlo con los módulos que tengo, si no, veo si hay módulos que me acerquen a lo que se necesita, si no, programo lo que se necesita.

Otros desarrolladores prefieren usar un framework que les permita programar con soltura lo que se necesita. También pueden revisar antes si ya tienen algo similar o si alguien más lo tiene.

¿Cuál es la diferencia? La forma en que Drupal tiene las soluciones. Quizás no sea perfecta, ni simple, ni elegante, ni eficiente, pero es algo como un estándar. Hay una cierta forma de reutilizar soluciones previas. Puedes ponerles un nombre y publicarlas de modo que otros también puedan usarlas.

Hay algo en la forma Drupal que tiene su encanto. Podría ser mejor, pero algo es algo :-)

Más artículos