Hogyan szerezhetem meg a node id-t a saját filter modulomban?
(Ha a node/* oldalon vagyok, akkor az arg(1) remekül kiadja, de ha pl. a taxonomy/term/%tid oldalon akkor nem.)
A kis mese, hogy miért is kell ez az egész:
Cél: a tartalom törzsébe beszúrni egy-egy kiemelt/kapcsolódó gondolatot/verset/idézetet. (Mint a van. -> Igen, kb. sikerült.)
A tartalomhoz létrehoztam egy field_box többszörös több soros szövegmezőt. (Ezekbe lehet beírni a kiemelendő bármiket.)
A törzsbe beírtam, hogy [doboz:id=1] és [doboz:id=1,class=right,style=width:80%]. (Ide szeretném beilleszteni a doboz tartalmát.)
Fogtam a filter példa modult (valamint a linodef modult) és megcsináltam a magam kis modulját. Működik is szépen, de csak a /node/* oldalakon.
(Ennek a funkciónak a visszatérési értéke kerül a [doboz:id=3] helyére.)
if (arg(0) == 'node' && is_numeric(arg(1))) $nid = arg(1); $node = node_load($nid); if($node->field_box[($config['id']-1)]) { $field = module_invoke('content','format','field_box', $node->field_box[($config['id']-1)], 'default', $node); return $field; // ami a [doboz:id=1] helyébe lép } else return ''; // ha nem is sikerül kicserélni, nem hagyjuk a szövegben a [doboz:id=2]-t
Csatolmány | Méret |
---|---|
doboz.jpg | 313.35 KB |
meg tudod mutatni az egesz .module filet?
nem ertem, hogy a filter modulban mit keres az arg()ozas meg a node_load. abban nincsenek ilyen dolgok. azok filtereket definialnak amiket a beviteli formakhoz lehet rendelni es aztan ezeket lehet hasznalni szovegdobozoknal. mint itt is lent a szovegformatum: szurt html _beviteli forma_ tartalmaz x filtert. mikor aszovegmezo tartalma "renderelodik", lefut a dbben tarolt nyers ertekre a filter(ek) ami az ertekhez beallitot beviteli formaban van. nincs node load meg semmi ilyen.
vagy milyen hook_ -ban csinalod ezt a kodreszlet amit ideztel?
-
clear: both;
ne ijedj meg, fusi ;)
azt szeretném, hogy amikor "renderelodik", akkor a [doboz:id=(valami szám)] cserélődjön ki az extra field-kén létező field_box-ra.
boxfilter.module - http://www.megaupload.com/?d=RRF414K1
(A field_box mezőt még nem hozza létre a modul. Azt megcsináltam.)
Szerintem filterben nem tudsz
Szerintem filterben nem tudsz hozzáférni, hanem megjelenítéskor kell kicserélni.
köszi
oh, tényleg. így azért sokkal jobb. nagyon köszi!
menu_get_object()
És ha node oldalon szeretnéd megkapni a $node objektumot akkor érdemes az arg() node_load() kombó helyett a menu_get_object() fgv-t használni.
Hosszu Kálmán
http://twitter.com/kalmanhosszu
http://www.kalman-hosszu.com/
http://premiumcmsthemes.com/