Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/10/2012, 13:19
Avatar de anacona16
anacona16
 
Fecha de Ingreso: marzo-2010
Ubicación: Bogota DC
Mensajes: 610
Antigüedad: 14 años, 2 meses
Puntos: 52
No se muestra Bloque

Hola gente de ForosdelWeb, verán no hace mucho comencé con el desarrollo de Módulos en Drupal, y con Drupal :) Descubriendo un mundo magnifico para los programadores Web, mi módulo es sencillo, lo que hace es agregar un tipo de contenido con campos personalizados, lo he hecho con API Form y API Field (Para ir aprendiendo un poco mas de las dos opciones), hasta aquí todo bien.

Lo que quiero ahora es crear un bloque donde se listen las 3 ultimas entradas de este tipo de contenido, lo que tengo es lo siguiente, en mi noticias.module para declarar los bloques


Código PHP:
Ver original
  1. function noticias_block_info() {
  2.     $blocks['noticias_recent'] = array(
  3.         'info' => t('Noticias - Recientes'),
  4.         'cache' => DRUPAL_CACHE_PER_ROLE,
  5.     );
  6.    
  7.     $blocks['noticias_most_commented'] = array(
  8.         'info' => t('Noticias - Mas Comentadas'),
  9.         'cache' => DRUPAL_CACHE_PER_ROLE
  10.     );
  11.    
  12.     return $blocks;
  13. }


Esto funciona bien, cuando entro a structure/blocks se muestran los bloques y se puede seleccionar el area donde quieras mostrarlos.

Este es el view:

Código PHP:
Ver original
  1. function noticias_block_view($delta = '') {
  2.     $block = array();
  3.    
  4.     switch ($delta) {
  5.         case 'noticias_recent' :
  6.             $content = noticias_get_block_content(variable_get('noticias_max_display_block_recent_nodes', 3), 'noticias_recent');
  7.             $block['subject'] = t('Noticias Recientes');
  8.             $blcok['content'] = theme('block_recent_nodes', array('content' => $content));
  9.             break;
  10.     }
  11.    
  12.     return $block;
  13. }

Esta es la funcion que me retorna los datos:

Código PHP:
Ver original
  1. function noticias_get_block_content($maxdisplay, $block) {
  2.     $content = array();
  3.    
  4.     switch ($block) {
  5.         case 'noticias_recent' :
  6.             $consulta = db_select('node', 'n')
  7.                         ->fields('n', array('nid', 'title', 'created'))
  8.                         ->condition('type', 'noticias', '=')
  9.                         ->condition('status', 0, '>')
  10.                         ->orderBy('created', 'DESC')
  11.                         ->execute();
  12.            
  13.             foreach ($consulta as $node) {
  14.                 $content[$node->nid]['link'] = l($node->title, 'node/' . $node->nid);
  15.                 $content[$node->nid]['date'] = format_date($node->created);                
  16.             }
  17.            
  18.             return $content;
  19.            
  20.             break;
  21.     }
  22. }

Este es hook_theme:

Código PHP:
Ver original
  1. function noticias_theme($existing, $type, $theme, $path) {
  2.     return array(
  3.         'block_recent_nodes' => array(
  4.             'template' => 'templates/block-recent-nodes',
  5.             'variables' => array('content' => array()),
  6.         ),        
  7.     );
  8. }

En mi tpl tengo esto:

Código PHP:
Ver original
  1. <div class="mf-block-recent-nodes-all">
  2.     <?php foreach ($content as $element) : ?>
  3.         <div class="mf-block-recent-nodes-item">
  4.             <div class="mf-block-recent-nodes-item-date"><?php print $element['date'];?></div>
  5.             <div class="mf-block-recent-nodes-item-link"><?php print $element['link'];?></div>
  6.         </div>
  7.     <?php endforeach; ?>
  8. </div>

Cuando entro structure/blocks y configuro que mi bloque Noticias Recientes se muestre en el Sidebar First guarda bien, pero voy al home y no aparece el Bloque, cabe aclarar que hay entradas para ese tipo de contenido.

Espero puedan ayudarme gracias.
__________________
Aprendiendo!!!