Hogyan lehet saját modulból egyénire szabni a kifejezések RSS feed-jén megjelenő tartalmát ?
Megtaláltam a hook_nodeapi (rss item), és a node_feed() függvényeket, de nem találtam olyan csatlakozási pontot ahol egy meglévő kifejezés RSS kimenetét érhetem el !?
Melyik modulhoz, modulokhoz kapcsolódik a téma?:
Drupal verzió:
Fórum:
általános kérdés, általános válasz
A lényeget nem írod, hogy pontosan milyen testreszabást szeretnél végezni. Általánosságban a lehetőségek:
Azaz nincs arra mód, hogy
Azaz nincs arra mód, hogy mondjuk egy hook-kal módosítsd / sminkeld egy-egy feed tartalmát.
de igen, van
szerintem el is hangzott, hook_nodeapi, op "rss item".
persze ez a legnyakatekertebb megoldás, de elvileg működik. ;)
-
clear: both;
egész feed
Ha jól értem, akkor ő nem az rss item-eket akarja változtatni, hanem az egész taxonomy term feed-et. Például UTF-8 helyett valami más kódolással kell neki kiküldenie, mert a fogadó oldalon csak azt értik meg.
Ha lehet külön az rss item-et
Ha lehet külön az rss item-et változtani modulból (!) akkor nekem az is elég (sőtt egyszerűbb is). De ha azt nem lehet, akkor a taxonomy term feed-nek csinálok saját útvonalat...
...mit tudok: http://web.termuves.hu
Nemnem, csak hozzáadni tudsz.
Nemnem, csak hozzáadni tudsz. „The module can return properties to be added to the RSS item generated for this node.”
A lényeget nem olvastad... :)
A lényeget nem olvastad... :) (...saját modulból...)
A 3. válaszodból kezdem megértem a dolog működést... Valószínű ezt fogom tenni, bár az érdekes kérdés, hogy a views hogy tudja "felülírni" a kategóriák útvonalat... !? De ehhez bele kell kukkantanom a views-ba.
...mit tudok: http://web.termuves.hu
Találtam egy kódot itt:
Találtam egy kódot itt: http://www.drupalcoder.com/story/17-creating-your-own-rss-feeds-with-dru...
Ebből csináltam ezt:
A taxonomy/term/74/0/feed egy létező kifejezés RSS címe.
A saját modulomban egy meglévő útvonal kimenetét átirányítottam egy saját függvényemre. Normális ez !? Mindenesetre működik !?
...mit tudok: http://web.termuves.hu
Normális. Mint ahogy írtam,
Normális. Mint ahogy írtam, nem tudsz más feedeket módosítani, csak újat létrehozni.
Jó, jó. De ezek szerinte egy
Jó, jó. De ezek szerinte egy meglévő útvonalon lévő feed tartalmának elkészítését saját modulban saját függvénnyel elő tudom állítani.
Merthogy a modulomban, a hook_menu()-ben levő taxonomy/term/74/0/feed útvonal már akkor létezett amikor még a modulom sehol nem volt.
...mit tudok: http://web.termuves.hu
dehát így működnek a hook-ok
Nem tudom, hogy lehet ezt jól elmagyarázni... A drupal felépíti a menüt úgy, hogy az $items tömbbe berakja az útvonalakat, menüpontneveket, az adott oldalak előállításáért felelős függvények neveit, stb., de mielőtt ezt a tömböt ténylegesen felhasználná, a hook_menu()-vel a tömbnek ezt az elemét lecserélted arra, amit helyette szeretnél, és így azt fogja használni. Ott lesz a kódban valahol az a függvény, ami az eredeti oldalt előállítaná, de az adott útvonal már nem azt a függvény fogja meghívni, hanem az általad írtat.
Ez nemhogy normális, de a drupal egyik legnagyobb erőssége. Így működnek a hook-ok, amiknek a segítségével úgy tudod módosítani az alaprendszer - vagy esetenként más modulok - működését, hogy nem kell azoknak a kódjába belegányolni.
--
Csonka Gergely
http://cheppers.com
Nem teljesen, erre való a
Nem teljesen, erre való a hook_menu_alter() :)
Belekeveredtem
Igazad van. De ha már belekezdtem, megpróbálkozom egy korrektebb magyarázattal, hátha valakinek hasznos lehet.
A Drupal úgy állítja elő a menüt, hogy az összes modul hook_menu() függvényéből összegyűjti minden modul menüpontjait, és ebből csinál egy tömböt, aminek a kulcsa az útvonal. Az útvonalban azonban vannak helyettesítők (%), tehát pl. nem jön létre ténylegesen új menüpont minden felhasználó regisztrációjánál, hanem a felhasználó azonosítója az útvonalban levő helyettesítőre illesztődik (user/%). Ezután jönnek a modulok hook_menu_alter() függvényei, amik az előző körben összeszedett menüpontokat tudják változtatni úgy, hogy a tömb egyes elemeinek bizonyos paramétereit felülírják, és csak ezután mentődik el a végleges menü.
Na most, eMeLA ránézésre változtatni akar egy menüponton, hiszen egy létező útvonal által meghívott függvényt írna felül egy saját függvénnyel, és így a hook_menu_alter()-t kéne használnia, és a page callback-et felülírni, nem?
Nem! Ugyanis a taxonomy/term/74/0/feed útvonal konkrétan nem létezik, csak a taxonomy/term/%/%/feed, amiben ugyebár helyettesítők vannak, hiszen minden taxonomy feed-et ez állít elő. Ő viszont csak azt az egy bizonyos feed-et akarja megváltoztatni, a helyettesítők többi illeszkedését nem. És mivel a Drupal úgy működik, hogy először minden útvonalra a konkrét egyezést ellenőrzi, és csak utána kezdi a helyettesítőket nézni, így az eredeti függvény helyett, ami a helyettesítők segítségével megkapta volna paraméterként a 74-et és a 0-t, most meghívódik inkább a sajat_rss() függvény.
Tehát a látszat ellenére nem egy létező menüpont megváltoztatása történt, hanem egy új menüpont létrehozása.
Így van?
--
Csonka Gergely
http://cheppers.com
:) Az csak egy példa volt.
:) Az csak egy példa volt. Nekem a taxonomy/term/%/%/feed kell :))
Eddig is használtam a hook_menu()-t csak abba még nem gondoltam bele, hogy erre is használható. Eddig csak hozzáadtam új menüket.
Mindenesetre köszönöm a hozzászólásokat
...mit tudok: http://web.termuves.hu
Ez igaz, de nem biztos, hogy
Ez igaz, de nem biztos, hogy ez mindig így fog maradni. Bejöhet egy újabb menu registry-implementáció, gyorstárazási mód vagy sok modul esetén a sorrendiség miatt nem biztos, hogy erre számíthatsz. A hook_menu_alter() a menü felépülésének végén hívódik meg, és módosítja a menüt.