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