RSS ikon, ha nem a node útvonal a kezdőlap

Kategória: 
Leírás

Miből tudhatod meg, hogy egy drupal oldalnak átírták a kezdőlapját a Webhely-információk menüpontban? Onnan, hogy a böngésző címsorában nem látható a feed ikon. Most ezt gyógyítjuk meg, mivel olyan kényes területe ez a drupalnak, amihez hosszas keresgélés, rengeteg meg nem válaszolt issue-t látva sikerült összeszedni minden szükséges info-t.

A standard drupal megjelenítés alapból háromféleképp jeleníthet meg feed ikont.

1. Blokk-ban. Ez bármikor elérhető, így ha a kezdőlapon rss ikon van, de a böngésző címsorában nincs, akkor egy blokkot látsz.

2. Böngész címsora. Ez a honlap fejlécében található, valami ilyesmi:

<head>
<link href="rss.xml" title="Honlap címe" type="application/rss+xml" rel="alternate">
</head>

3. RSS ikon, általában a tartalmi rész alatt - bár ez sminktől függő. Ez a page.tpl.php $feed_icons nevű változója.

Az elsővel ugye nincs gond, bármikor kitehetjük, de az utolsó kettő bizony eltűnik, ha nem a http://oldalad.hu/node a beállított kezdőlap.

Maga a kód tök egyszerű, viszont vagy marha sok forrásból sikerült összetúrni, muszáj vagyok levésni, hogy legközelebb tudjam. Szóval a smink template.php-jébe kell beírni, illetve a page preprocesst kiegészíteni.

function sminkneve_preprocess_page(&$vars, $hook) {
  if ($vars['is_front']) {
    $title = variable_get('site_name', 'Drupal') .' '. t('RSS'))
    $feed_url = url('rss.xml', array('absolute' => TRUE));
    drupal_add_feed($feed_url, $title);
    $vars['head'] = drupal_get_html_head();    
    $image = theme('image', path_to_theme() . '/images/rss.png', t('Syndicate content'), $title) ;
    $vars['feed_icons'] = '<a href="/rss.xml" class="feed-icon">' . $image . '</a>' ;
  }
}

Az url('rss.xml') akár egy views által generált feed útvonala is lehet. A $title-t is alakíthatjuk úgy, ahogy akarjuk.

Ha valakinek van jobb megoldása, hajrá, bár ez az idióta blog.hu már egyáltalán nem enged reg nélkül kommentelni, szóval remélem az új bejegyzés már a saját oldalamon készül.

Pláne, hogy az aboros által javasolt "perverz sminkelési technikák" címmel sem valószínű, hogy kikerülök a címoldalra. :)

Hozzászólások

Hello Emlékeztem erre a

Hello

Emlékeztem erre a bejegyzésre, de nekem nem lett tiszta hogy akkor végül is mi a tuti. Kipróbáltam én is, elkészítettem a views-t, az rss.xml url-el, de nem akar működni. Azt írja hogy "Parse error: parse error in \template.php on line 5". Ha a sort kikommentezem működik, bár nem ad címet a csatornában. Ha a 'Drupal'-t átírom a Saját oldalam címére sem működik.

Nekem szuper lenne ha minden oldalon megjelenne az ikon, megoldható ez? mit is kell módosítanom a kódon pontosan?

Előre is köszönöm
Üdv
István

a kérdéses sor: $title =

a kérdéses sor:
$title = variable_get('site_name', 'Csáki') .' '. t('RSS'))

Szintaktikai hiba, lemaradt

Szintaktikai hiba, lemaradt egy ; a végén.
A feltétel nem kell az elejéről: if ($vars['is_front'] és utána minden oldalon menni fog, de ahogy Edit is írta, ahhoz még preprocess sem muszáj.

Nem preprocessben, hanem a

Nem preprocessben, hanem a template.php-ben csak úgy meztelenül. Az egy sima PHP fájl, amit a rendszer egyszer beolvas, és akkor lefut a függvény, hozzáadódik a feed a HTML head-hez.

@Illyés Edit: nekem konkrétan

@Illyés Edit: nekem konkrétan csak a front kellett, más oldalakon ment az rss.
A sok cicó abból van, hogy több forrásból szedtem össze a kódot, természetesen rengetegféleképp le lehet generálni a szükséges változókat.
Sajnos a drupal_add_feed nem elég.. Nem tudom miért, de a $vars['head'] = drupal_get_html_head(); nélkül nem megy, azon kívül a $feed_icons sem töltődik fel magától..

De miért csak a címlapra

De miért csak a címlapra teszed ki? Jó az, ha minden oldalon ott az ikon a böngésző címsorában.

Egyébként nem kell ilyen sok cicó neki, elég egy sor a template.php tetején:

drupal_add_feed($url = $vars['base_url'] . '/rss.xml', $title = 'RSS');

Bár szerintem ezt magától kellene tudnia a Drupalnak, meg kéne nézni, D7-ben megvan-e, és ha nincs, akkor mehetne a feature request.

Hozzászólás

A mező tartalma nem nyilvános.
  • Internal paths in double quotes, written as "internal:node/99", for example, are replaced with the appropriate absolute URL or relative path.
  • Engedélyezett HTML elemek: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <del> <img>
  • A webcímek és email címek automatikusan linkekké alakulnak.
  • A sorokat és bekezdéseket a rendszer automatikusan felismeri.
  • Engedélyezett HTML elemek: <a> <blockquote> <br> <cite> <code> <dd> <del> <div> <dl> <dt> <em> <li> <ol> <p> <span> <strong> <ul>
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>, <bash>, <c>, <cpp>, <drupal5>, <drupal6>, <java>, <javascript>, <mysql>, <php>, <python>, <ruby>, <sql>. The supported tag styles are: <foo>, [foo].
  • Minden email cím át lesz alakítva ember által olvasható módon, vagy (ha a JavaScript engedélyezett) ki lesz cserélve kattintható, de biztonságos hivatkozásra.
By submitting this form, you accept the Mollom privacy policy.