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

The spam filter installed on this site is currently unavailable. Per site policy, we are unable to accept new submissions until that problem is resolved. Please try resubmitting the form in a couple of minutes.
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:

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

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.

[geshifilter-drupal6]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>' ; } }[/geshifilter-drupal6]

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:
[geshifilter-code]$title = variable_get('site_name', 'Csáki') .' '. t('RSS'))[/geshifilter-code]

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.