Üdv mindenkinek!
Adott egy panel, melyen van egy node és egy nézet. Szeretném, ha a nézet szűrőként használhatná a panelon épp megjelenő node egyik adott cck mezőjét, ily módon kapcsolódó node-okat sorolna fel. (5. drupal)
Permalink Beküldte pseb - 2009. szeptember 20. 19.22
Paraméternek a kérdéses CCK mezőnek a nevét (aminek az adatbázisban most content_field_style.field_style_value felel meg) beállítottam, majd az Argument Handling Code részben
$nid= arg(1);//az arg(1) megadja az aktuális oldal a node id-jét$style= db_result(db_query("SELECT field_style_value FROM content_field_style WHERE nid = '%d'",$nid));//megkapom az aktuális node style értékét$args[0]=$style; ez lesz az első (és most egyetlen) paraméter
return$args;
Permalink Beküldte csg - 2009. szeptember 20. 23.11
Lehet, hogy ez így működik, de ha kódot osztasz meg másokkal, akkor mindig figyelj arra, hogy semmilyen hiba ne legyen benne.
1. A táblaneveket Drupalban mindig kapcsos zárójelbe tesszük. Mint bizonyára tudod, telepítéskor megadhatunk tábla előtagot arra az esetre, ha nem csak a Drupal táblái lennének az adatbázisunkban, és a kapcsos zárójel használatával a Drupal automatikusan beteszi a tábla előtagot a lekérdezésbe. Ez a példa így nem működik olyanoknál, akik beállítottak tábla előtagot.
2. A nid az nem szöveg típusú, ezért nem kell aposztróf a %d köré.
3. A Drupal kódolási szabványa szerint a függvények paraméterei közé a vesszőn kívül szóköz is kell, nálad a $nid elől lemaradt.
4. Az utolsó komment előtt nincs //
Remélem, hogy nem veszed ezt kötözködésnek. Csak oda akarok kilyukadni, hogy többnyire azért írunk be ide kódrészleteket, hogy másoknak példát mutassunk, úgyhogy figyeljünk oda a részletekre is.
Permalink Beküldte pp - 2009. szeptember 21. 08.38
Én inkább ezt a kódot tenném be, mivel így megspórolsz egy teljesen felesleges adatbázis lekérést.
$node= node_load(arg(1));$args[0]=$node->field_style//ezt nem tudom, ezt meg kell nézni, hogy pontosan mi lesz, de ezt theme_developerrel pl. könnyedén kideríthetőreturn$args;// ez biztos kell ide?
valamint feljavítanám egy icipicit:
if(arg(0)=='node' and is_numeric(arg(1))){$node= node_load(arg(1));$args[0]=$node->field_style//ezt nem tudom, ezt meg kell nézni, hogy pontosan mi lesz, de ezt theme_developerrel pl. könnyedén kideríthetőreturn$args;}
Permalink Beküldte pseb - 2009. szeptember 21. 16.02
a segítséget. A vége ez lett:
if(arg(0)=='node' and is_numeric(arg(1))){$node= node_load(arg(1));$args[0]=$node->field_style[0][value];}
A return sor nélkül valóban megy, de a < ?php ? >-t ide (Argument Handling Code) nem kell/szabad kitenni, ha valaki használni akarja.
Tehát most már felsorolódik további akárhány node, aminek a "style" cck mezője megegyezik. Most ha a felhasználó elkezd kattingatni itt, mindig csak ebben a körben marad. Ahhoz, hogy kitörhessen, kellene legalább egy másik CCK mező, amivel VAGY kapcsolatban áll a nézet. Tehát pl. egy piros bicikli alatt nem csak a piros járművek, hanem a mindenféle színű kerékpárok is megjelennének.
2 argumentum egy nézetben VAGY kapcsolattal megjeleníthető? Vagy hagyjam a fenébe, és csináljak 2 nézetet? Az egyikben a pirosak, a másikban a biciklik? Jobb lenne keverve.
Megoldottam
Paraméternek a kérdéses CCK mezőnek a nevét (aminek az adatbázisban most content_field_style.field_style_value felel meg) beállítottam, majd az Argument Handling Code részben
4 hiba
Lehet, hogy ez így működik, de ha kódot osztasz meg másokkal, akkor mindig figyelj arra, hogy semmilyen hiba ne legyen benne.
1. A táblaneveket Drupalban mindig kapcsos zárójelbe tesszük. Mint bizonyára tudod, telepítéskor megadhatunk tábla előtagot arra az esetre, ha nem csak a Drupal táblái lennének az adatbázisunkban, és a kapcsos zárójel használatával a Drupal automatikusan beteszi a tábla előtagot a lekérdezésbe. Ez a példa így nem működik olyanoknál, akik beállítottak tábla előtagot.
2. A nid az nem szöveg típusú, ezért nem kell aposztróf a %d köré.
3. A Drupal kódolási szabványa szerint a függvények paraméterei közé a vesszőn kívül szóköz is kell, nálad a $nid elől lemaradt.
4. Az utolsó komment előtt nincs //
Remélem, hogy nem veszed ezt kötözködésnek. Csak oda akarok kilyukadni, hogy többnyire azért írunk be ide kódrészleteket, hogy másoknak példát mutassunk, úgyhogy figyeljünk oda a részletekre is.
--
Csonka Gergely
http://cheppers.com
további problémák
Én inkább ezt a kódot tenném be, mivel így megspórolsz egy teljesen felesleges adatbázis lekérést.
valamint feljavítanám egy icipicit:
pp
Palócz István
https://palocz.hu | https://tanarurkerem.hu
Köszönöm mindkettőtöknek
a segítséget. A vége ez lett:
A return sor nélkül valóban megy, de a < ?php ? >-t ide (Argument Handling Code) nem kell/szabad kitenni, ha valaki használni akarja.
Tehát most már felsorolódik további akárhány node, aminek a "style" cck mezője megegyezik. Most ha a felhasználó elkezd kattingatni itt, mindig csak ebben a körben marad. Ahhoz, hogy kitörhessen, kellene legalább egy másik CCK mező, amivel VAGY kapcsolatban áll a nézet. Tehát pl. egy piros bicikli alatt nem csak a piros járművek, hanem a mindenféle színű kerékpárok is megjelennének.
2 argumentum egy nézetben VAGY kapcsolattal megjeleníthető? Vagy hagyjam a fenébe, és csináljak 2 nézetet? Az egyikben a pirosak, a másikban a biciklik? Jobb lenne keverve.