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


Warning: Undefined variable $iAmModerator in /home/andrzejk2/public_html/michal.krassowski.info/comment.php on line 210

Warning: Undefined variable $iAmModerator in /home/andrzejk2/public_html/michal.krassowski.info/comment.php on line 222

Warning: Undefined variable $iAmModerator in /home/andrzejk2/public_html/michal.krassowski.info/comment.php on line 223
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
Warning: Undefined variable $iAmModerator in /home/andrzejk2/public_html/michal.krassowski.info/comment.php on line 244


Warning: Undefined array key "message" in /home/andrzejk2/public_html/michal.krassowski.info/comments.php on line 2

Warning: Undefined variable $Alerts in /home/andrzejk2/public_html/michal.krassowski.info/comments.php on line 50

Warning: Trying to access array offset on null in /home/andrzejk2/public_html/michal.krassowski.info/comments.php on line 50
Komentarze:

Brak komentarzy


Warning: Undefined variable $login in /home/andrzejk2/public_html/michal.krassowski.info/comments.php on line 64
Jesteś niezalogowany, zaloguj się, aby móc dodawać komentarze.