Hola gente de Drupal, 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
<?php
function 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:
<?php
function noticias_block_view($delta = '') {
$block = array();
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:
<?php
function noticias_get_block_content($maxdisplay, $block) {
$content = array();
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:
<?php
function noticias_theme($existing, $type, $theme, $path) {
return array(
'block_recent_nodes' => array(
'template' => 'templates/block-recent-nodes',
'variables' => array('content' => array()),
),
);
}
?>En mi tpl tengo esto:
<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.
Comments
He encontrado el problema en
He encontrado el problema en el codigo del view la variable $block esta mal escrita, esta asi $blcok
Disculpen y gracias...