El núcleo de Drupal incorpora un agregador de feeds que permite configurar de una manera muy sencilla un agregador o planeta de blogs que, a diferencia de lo que ocurre si utilizamos módulos o extensiones de terceras partes, apenas requiere cuidados ni tareas de mantenimiento.
Sin embargo, muchos administradores de sitios gestionados con este sistema se preguntan cómo recortar la extensión de los items o artículos agregados para mostrar solo un texto introductorio y dar un aspecto más limpio y uniforme al sitio.

El problema es que el módulo aggregator de Drupal muestra todo el contenido de los artículos de la fuente de origen sin recortar los más extensos con el enlace Leer más, como hace Drupal con otros tipos de contenido. El resultado es que en la página del agregador se entremezclan en ocasiones artículos de muy diferente extensión -dependiendo de si la fuente de origen ofrece una versión resumida o extensa en su canal RSS- que dan un aspecto estético poco homogéneo y descuidado. Si además hemos filtrado las imágenes y otras etiquetas html que pueden arruinar también la estética de nuestra plantilla el resultado puede ser una página sobrecargada de texto en la que resulta complicado encontrar los artículos que nos pueden interesar y en la que obligamos al lector a hacer un uso intensivo de la barra de scroll.
Pero desde que hace un par de meses apareciera la versión 2.3 del módulo views ya es posible configurar una presentación o vista del agregador de Drupal que muestre solo un texto introductorio con el número deseado de caracteres. Cierto es que la configuración del módulo views no es para nada sencilla, pero la ventaja es que una vez hecho, el código resultante puede exportarse e importarse después a cualquier otra instalación de Drupal.

Así que aquí se muestra el código que se puede utilizar para conseguir que el agregador de Drupal tenga un aspecto semejante al que tiene www.macrss.es/agregador
$view = new view;
$view->name = 'Agregador';
$view->description = 'agregador de feeds';
$view->tag = 'agregador';
$view->view_php = '';
$view->base_table = 'aggregator_item';
$view->is_cacheable = FALSE;
$view->api_version = 2;
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
$handler = $view->new_display('default', 'Defaults', 'default');
$handler->override_option('fields', array(
'title' => array(
'label' => '',
'alter' => array(
'alter_text' => 1,
'text' => '<h2 class="title">[title]</h2>',
'make_link' => 0,
'path' => '',
'alt' => '',
'prefix' => '',
'suffix' => '',
'help' => '',
'trim' => 0,
'max_length' => '',
'word_boundary' => 1,
'ellipsis' => 1,
'html' => 0,
),
'display_as_link' => 1,
'exclude' => 0,
'id' => 'title',
'table' => 'aggregator_item',
'field' => 'title',
'relationship' => 'none',
),
'timestamp' => array(
'label' => '',
'alter' => array(
'alter_text' => 0,
'text' => '',
'make_link' => 0,
'path' => '',
'alt' => '',
'prefix' => '',
'suffix' => '',
'help' => '',
'trim' => 0,
'max_length' => '',
'word_boundary' => 1,
'ellipsis' => 1,
'html' => 0,
),
'date_format' => 'custom',
'custom_date_format' => 'D j M Y, H:i',
'exclude' => 1,
'id' => 'timestamp',
'table' => 'aggregator_item',
'field' => 'timestamp',
'relationship' => 'none',
),
'title_1' => array(
'label' => 'Publicado en ',
'alter' => array(
'alter_text' => 1,
'text' => '<i>[title_1]</i> ',
'make_link' => 0,
'path' => '',
'alt' => '',
'prefix' => '',
'suffix' => '',
'help' => '',
'trim' => 0,
'max_length' => '',
'word_boundary' => 1,
'ellipsis' => 1,
'html' => 0,
),
'display_as_link' => 1,
'exclude' => 1,
'id' => 'title_1',
'table' => 'aggregator_feed',
'field' => 'title',
'relationship' => 'none',
),
'link_1' => array(
'label' => '',
'alter' => array(
'alter_text' => 1,
'text' => '<a target="_blank" xhref=[link_1]>Leer Más</a>',
'make_link' => 0,
'path' => '',
'alt' => '',
'prefix' => '',
'suffix' => '',
'help' => '',
'trim' => 0,
'max_length' => '',
'word_boundary' => 1,
'ellipsis' => 1,
'html' => 0,
),
'display_as_link' => 0,
'exclude' => 1,
'id' => 'link_1',
'table' => 'aggregator_item',
'field' => 'link',
'relationship' => 'none',
),
'nothing' => array(
'label' => '',
'alter' => array(
'text' => '<span class="feed-item-meta"> Publicado en [title_1] – [timestamp] – [link_1]</span> ',
'make_link' => 0,
'path' => '',
'alt' => '',
'prefix' => '',
'suffix' => '',
'help' => '',
'trim' => 0,
'max_length' => '',
'word_boundary' => 1,
'ellipsis' => 1,
'html' => 0,
),
'exclude' => 0,
'id' => 'nothing',
'table' => 'views',
'field' => 'nothing',
'relationship' => 'none',
),
'description' => array(
'label' => '',
'alter' => array(
'alter_text' => 0,
'text' => '',
'make_link' => 0,
'path' => '',
'alt' => '',
'prefix' => '',
'suffix' => '',
'help' => '',
'trim' => 1,
'max_length' => '600',
'word_boundary' => 1,
'ellipsis' => 1,
'html' => 1,
),
'exclude' => 0,
'id' => 'description',
'table' => 'aggregator_item',
'field' => 'description',
'relationship' => 'none',
),
'nothing_1' => array(
'label' => '',
'alter' => array(
'text' => '<br />',
'make_link' => 0,
'path' => '',
'alt' => '',
'prefix' => '',
'suffix' => '',
'help' => '',
'trim' => 0,
'max_length' => '',
'word_boundary' => 1,
'ellipsis' => 1,
'html' => 0,
),
'exclude' => 0,
'id' => 'nothing_1',
'table' => 'views',
'field' => 'nothing',
'relationship' => 'none',
),
));
$handler->override_option('sorts', array(
'timestamp' => array(
'order' => 'DESC',
'granularity' => 'minute',
'id' => 'timestamp',
'table' => 'aggregator_item',
'field' => 'timestamp',
'relationship' => 'none',
),
));
$handler->override_option('access', array(
'type' => 'none',
));
$handler->override_option('items_per_page', 25);
$handler->override_option('use_pager', '1');
$handler = $view->new_display('page', 'Página', 'page_1');
$handler->override_option('path', 'agregador');
$handler->override_option('menu', array(
'type' => 'none',
'title' => '',
'description' => '',
'weight' => 0,
'name' => 'navigation',
));
$handler->override_option('tab_options', array(
'type' => 'none',
'title' => '',
'description' => '',
'weight' => 0,
));
$handler = $view->new_display('feed', 'Feed', 'feed_1');
$handler->override_option('style_plugin', 'rss');
$handler->override_option('style_options', array(
'mission_description' => FALSE,
'description' => '',
));
$handler->override_option('row_plugin', 'aggregator_rss');
$handler->override_option('row_options', array(
'item_length' => 'teaser',
));
$handler->override_option('path', 'aggregator/feed');
$handler->override_option('menu', array(
'type' => 'none',
'title' => '',
'description' => '',
'weight' => 0,
'name' => 'navigation',
));
$handler->override_option('tab_options', array(
'type' => 'none',
'title' => '',
'description' => '',
'weight' => 0,
));
$handler->override_option('displays', array());
$handler->override_option('sitename_title', 1);
Una vez realizada la importación podremos acceder a la configuración de esta nueva presentación, aunque no será necesario realizar ningún cambio.
Si además quieres diferenciar el formato de los estilos de texto, aumentar la separación entre artículos, etc puedes añadir los siguientes parámetros a la hoja de estilos css de tu theme.
/*
* Estilos añadidos para Views Aggregator
*/
.views-field-title a {
margin-bottom: 3px;
font-size: 1.1em;
}.views-field-nothing {
margin-bottom: 3px;
margin-top: 3px;
font-size: 0.8em;
border-top:dotted 1px;
}.views-field-nothing a {
margin-bottom: 5px;
margin-top: 1px;
font-size: 1em;
}.views-field-description {
padding-bottom: 8px;
font-size: 1em;
}.views-field-link-1 {
text-align:right;
}