RSS

zapisz się: RSS Artykuły

szukaj

Poprawienie wyświetlania się wpisów w kanałach RSS

Komentarze 2

Kulki RSS wychodzące z pudła RSSWyświetlanie się wpisów w kanałach RSS nie jest dopracowane w sNews. Jeśli zapisałeś się sam do swojego kanału to zauważyłeś, że w kanale RSS wyświetlane są pełne treści wpisów. A na tym nie polega działanie RSS - subskrybenci RSS nie mieliby po co wchodzić na naszą stronę.

W RSS powinien być fragment wpisu oraz link do niego, aby zaciekawić czytelnika i skierować go na stronę.

Aby poprawić funkcję wyświetlania wpisów w RSS należy zmodyfikować snews.php. Autorem poprawki jest Matt Jones. Przed zmianami należy oczywiście zrobić kopię zapasową snews.php. Szukamy w takim razie w snews.php:

// PREPARING ARTICLE FOR XML
function strip($text) {
   $search = array('/\[include\](.*?)\[\/include\]/', '/\[func\](.*?)\[\/func\]/', '/\[break\]/', '/</', '/>/');
   $replace = array('', '', '', '<', '>');
   $output = preg_replace($search, $replace, $text);
   $output = stripslashes(strip_tags($output, '<a><img><h1><h2><h3><h4><h5><ul><li><ol><p><hr><br><b><i><strong><em><blockquote>'));

Tuż pod tym fragmentem dodajemy kod:

if (strlen($output) > 400) { 
   $output = substr($output,0,400);
   $pos = strrpos($output, ". ");
   if ($pos !== false && $pos > 300) { // w tym wierszu ucinamy wpis w kanale RSS
   $output = substr($output,0,$pos).'.';
   } else {
   $output = $output.'...';
  }
}

Całość funkcji powinna wyglądać następująco:

// PREPARING ARTICLE FOR XML
   function strip($text) {
     $search = array('/\[include](.*?)\[\/include\]/', '/\[func\](.*?)\[\/func\]/', '/\[break\]/', '/</', '/>/');
     $replace = array('', '', '', '<', '>');
     $output = preg_replace($search, $replace, $text);
     $output = stripslashes(strip_tags($output, '<a><img><h1><h2><h3><h4><h5><ul><li><ol><p><hr><br><b><i><strong><em><blockquote>'));
     if (strlen($output) > 400) { 
     $output = substr($output,0,400);
     $pos = strrpos($output, ". ");
     if ($pos !== false && $pos > 300) {
     $output = substr($output,0,$pos).'.';
    } else {
     $output = $output.'...';
    }
 }
 return $output;
}

Jeśli chcemy zwiększyć liczbę wyświetlanych znaków w RSSie to zwiększamy zaznaczone liczby o taką samą wartość. Przykładowo kolejno 500, 500, 400.

Można również zmienić wygląd fragmentu wpisu w RSS, aby nie był sformatowany, oraz żeby nie wyświetlały się w nim obrazki. Fragment będzie wówczas blokiem tekstu. Wystarczy zamienić w powyższym kodzie tę linijkę:

$output = stripslashes(strip_tags($output, '<a><img><h1><h2><h3><h4><h5><ul><li><ol><p><hr><br><b><i><strong><em><blockquote>'));

na następującą:

$output = stripslashes(strip_tags($output));

Podziel się

Bookmark and Share

  1. Patrycjusz Różański
    Patrycjusz Różański napisał(a):

    Missing.... :D

    Chyba brakuje ci takiego wpisu w treści:

    [code]

    $search = array('/\[include\](.*?)\[\/include\]/', '/\[func\](.*?)\[\/func\]/', '/\[break\]/', '//');

    [/code]

  2. Paweł Landzberg
    Paweł Landzberg napisał(a):

    Tak, faktycznie. Generalnie miałem to wpisane we wpisie, ale zapomniałem o znaku "\". sNews go nie przetwarza, stąd nie był widoczny kawałek kodu. Zapomniałem go przerobić na encję.

Komentowanie zostało zablokowane