Cómo poner un bloque entre el contenido y sus comentarios
Carlos — Sáb, 28/06/2008 - 17:28
A veces queremos poner un bloque justo después de un nodo es la versión de página pero antes de los comentarios. Por defecto Drupal pone siempre los comentarios después del contenido y no permite poner ningún bloque entre ambos.
He encontrado una solución de Drupal.org pero se ha de modificar Core, lo cual, está en casi todos los casos desaconsejado.
Una solución más práctica y rápida es definir una nueva región, meter los bloques que necesitemos en esa región y luego imprimir esa región en el node-tpl.php (o en el template que te interese)
Por ejemplo, en mi caso quiero poner el bloque de contenido relacionado justo después del contenido y antes que los comentarios.
Primero defino las regiones añadiendo una nueva que la llamaré 'just_after_content' (el nombre es lo de menos, puedes poner el que quieras pero es recomendable que sea identificativo). En drupal 5 esto se hace poniendo en el template.php de tu theme lo siguiente:
<?php
function mytheme_regions() {
return array(
'right' => t('right sidebar'),
'content' => t('content'),
'header' => t('header'),
'footer' => t('footer'),
'floater' => t('floater'),
'just_after_content' => t('Justo depués del contenido'),
);
}
?>
y el Drupal 6 se pone en el .info de tu theme
<?php
regions[sidebar_right] = Right sidebar
regions[sidebar_left] = Left sidebar
regions[sidebar_right_sec] = Secondary right sidebar
regions[pre_content] = Before content
regions[content] = Content
regions[featured] = Featured
regions[content_bottom] = Bottom content
regions[header] = Header
regions[footer_region] = Footer
regions[just_after_content] = Justo después del contenido
?>
Una vez definida la región abrimos node.tpl.php y ponemos al final:
<?php
print theme('blocks','just_after_content');
?>
O para ser más limpios ponerlo en una función de preprocess (actualizado)
<?php
function themeName_preprocess_node(&$vars, $hook) {
$vars['just_after_content'] = theme('blocks','just_after_content');
}
?>
y sólo queda asignar el bloque a la región "just_after_content" desde la página de administración de bloques (/admin/build/block). Por cierto, en mi blog ahora mismo no me va con el block cache activado, tendré que mirarmelo mejor. Si has hecho todo esto y no te sale la región que has definido intenta limpiando la cache (admin/settings/performance)
Saludos, solo comentarte que
uberum (no verificado) — Mar, 12/08/2008 - 16:55Saludos, solo comentarte que gracias a este post he conseguido resolver el problemillam en mi caso me empeñaba en acceder desde node.tpl.php a la variable del bloque "print $just_after_content", y cai en la cuenta que tu pones theme ('blocks','nombre del bloque');
Un suscriptor más
Pues me alegro :) De todas
Carlos — Mar, 12/08/2008 - 16:59Pues me alegro :)
De todas formas sería más correcto decir que es theme('blocks','nombre_de_la_región') ya que just_after_content es la región extra que hemos definido y dentro de esta es donde podemos poner los bloques.
ehhh, touché, tienes razón ,
uberum (no verificado) — Mar, 12/08/2008 - 17:38ehhh, touché, tienes razón , es que como algunas regiones "ad hoc" las creo para poner un bloque concreto y unico a veces "igualo" las dos cosas y es cierto que no son lo mismo
Gracias, era justo lo que
Mario (no verificado) — Mié, 12/08/2009 - 10:57Gracias, era justo lo que estaba buscando.
Saludos.