%nid megszerzése taxonomy/term/%tid oldalon

aranyozottpatkoszeg képe

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
Melyik modulhoz, modulokhoz kapcsolódik a téma?: 
Drupal verzió: 
CsatolmányMéret
Kép ikon doboz.jpg313.35 KB
aboros képe

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?

0
0

-
clear: both;

aranyozottpatkoszeg képe

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.)

0
0
Illyés Edit képe

Szerintem filterben nem tudsz hozzáférni, hanem megjelenítéskor kell kicserélni.

<?php
function YOURMODULE_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
  if ($op == 'view') {
    // itt hozzáférsz a $node->nid-hez
  }
}
?>
1
0
aranyozottpatkoszeg képe

oh, tényleg. így azért sokkal jobb. nagyon köszi!

0
0
hosszu.kalman képe

É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.

1
0