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 originalfunction noticias_block_info() {
$blocks['noticias_recent'] = array( 'info' => t('Noticias - Recientes'),
'cache' => DRUPAL_CACHE_PER_ROLE,
);
$blocks['noticias_most_commented'] = array( 'info' => t('Noticias - Mas Comentadas'),
'cache' => DRUPAL_CACHE_PER_ROLE
);
return $blocks;
}
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 originalfunction noticias_block_view($delta = '') {
switch ($delta) {
case 'noticias_recent' :
$content = noticias_get_block_content(variable_get('noticias_max_display_block_recent_nodes', 3), 'noticias_recent');
$block['subject'] = t('Noticias Recientes');
$blcok['content'] = theme
('block_recent_nodes', array('content' => $content)); break;
}
return $block;
}
Esta es la funcion que me retorna los datos:
Código PHP:
Ver originalfunction noticias_get_block_content($maxdisplay, $block) {
switch ($block) {
case 'noticias_recent' :
$consulta = db_select('node', 'n')
->fields('n', array('nid', 'title', 'created')) ->condition('type', 'noticias', '=')
->condition('status', 0, '>')
->orderBy('created', 'DESC')
->execute();
foreach ($consulta as $node) {
$content[$node->nid]['link'] = l($node->title, 'node/' . $node->nid);
$content[$node->nid]['date'] = format_date($node->created);
}
return $content;
break;
}
}
Este es hook_theme:
Código PHP:
Ver originalfunction noticias_theme($existing, $type, $theme, $path) {
'block_recent_nodes' => array( 'template' => 'templates/block-recent-nodes',
),
);
}
En mi tpl tengo esto:
Código PHP:
Ver original<div class="mf-block-recent-nodes-all">
<?php foreach ($content as $element) : ?>
<div class="mf-block-recent-nodes-item">
<div class="mf-block-recent-nodes-item-date"><?php print $element['date'];?></div>
<div class="mf-block-recent-nodes-item-link"><?php print $element['link'];?></div>
</div>
<?php endforeach; ?>
</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.