[Drupal] - jak wyświetlać zajawki treści z RSS

Czasami chcemy aby aggregator wyświetlał nam nie tylko tytuły najnowszych wpisów z subskrybowanego kanału RSS, ale także początek lub całą ich treść. Domyślnie aggregator Drupala wyświetla tylko nagłówki, ale za pomocą prostej modyfikacji kodu modułu aggregator możemy to zmienić.

1. Tworzymy kopię pliku /modules/aggregator/aggregator.module
2. Otwieramy wyżej wymieniony plik do edycji (oryginał)
3. Przechodzimy do funkcji theme_aggregator_block_item()
Funkcja ta znajduje się w Drupalu 7.12 w liniach 717-720 i oryginalnie ma postać:
function theme_aggregator_block_item($variables) {
  // Display the external link to the item.
  return '<a href="' . check_url($variables['item']->link) . '">' .
check_plain($variables['item']->title) . "</a>n";
}

4. Aby wyświetlać także treść każdego elementu skorzystamy z powiązanej z nim zmiennej description:

function theme_aggregator_block_item($variables) {
  // Display the external link to the item.
  return '<a href="' . check_url($variables['item']->link) . '">' .
check_plain($variables['item']->title) . "</a>" .
check_plain($variables['item']->description) . "n";
}


Aby zezwolić na wyświetlanie w treści znaków html rezygnujemy z funkcji check_plain(), przetwarzającej opis elementu. Najlepiej jeżeli zastąpimy ją inną, własną, zabezpieczającą nas przed niepożądanymi elementami jak <script> etc.

function theme_aggregator_block_item($variables) {	
  // Display the external link to the item.
  return '<a href="' . check_url($variables['item']->link) . '">' .
check_plain($variables['item']->title) . "</a>" .
$variables['item']->description . "n";
}


Możemy również skrócić wyświetlaną treść, np. stosując funkcję substr(), lub dla bezpieczeństwa drupal_substr():

function theme_aggregator_block_item($variables) {	
  // Display the external link to the item.
  return '<a href="' . check_url($variables['item']->link) . '">' .
check_plain($variables['item']->title) . "</a>" .
drupal_substr($variables['item']->description,0,100) . "n";
}


W dalszej kolejności powinniśmy sprawdzić czy w obciętym stringu nie znajdują się niedomknięte tagi HTML oraz domknąć je lub usunąć w zależności od sytuacji. Ale to już temat na inny wpis ;)

Uwaga: Pamiętaj że aggregator.module jest modułem "jądra" Drupala, modyfikujesz go na własne ryzyko a po aktualizacji Drupala, każdorazowo będziesz musiał ponowić w/w operacje.

Dodał(a): m-krassowski, 02.05.12

Komentarze:

Brak komentarzy

Jesteś niezalogowany, zaloguj się, aby móc dodawać komentarze.