+ Letöltés |
Drupal 7.12 Fordítás Drupal 6.24 Fordítás |
views-al letre lehet hozni kapcsolodo oldalak blokkot eleg egyszeruen. Le is irjak vagy szaz helyen.
Vazolnam a lenyeget:
Hozzadok egy block displayt a nezetemhez, majd argumentumnak kivalasztom a taxonomy term ID-t.
itt az "Action to take if argument is not present:" opciónál a "Provide default argument" -et valasztva meg lehet adni php kodot.
jelen esetben ez a következő:
<?php
$node=node_load(arg(1));
if($node){
foreach($node->taxonomy as $term){$terms[]=$term->tid;}
return implode('+',$terms);
}else {return;}
?>
(normalisan nem kel a <?php ?> csak igy jobban latszik a kod. )
vegül meg bejelölöm a:
"Check Allow Multiple Terms per Argument"-t és a "Check Reduce Duplicates"-t .
Ezzel az argumentum kesz is mar csak ki kell valasztami h mely mezőket jelenitse meg a listaban. Ez legyen a cim linkként.
Ez eddig szep es jo.
Ugy fog müködni hogy megnezi h az eppen megjelenitett node milyen szotarakhoz ill azon belül taxonomia termekhez van hozzaadva és azoknak az id-jat veszi argumentumnak.
pl legyen az alabbi hierarhia ket szotar eseteben (zarojelben az ID)
vocabulary_tipus (az id-ja 2)
vocabulary_arufajta (id-3)
a fenti nezettel tehat a következőképpen alakul
a megjelenitett tartalom mondjuk az elso szotarbol az elso tipushoz tartozik azon belül a term_tipus1_altipus -hoz (id 8), a masodik szotarbol pedig az elso arufajta A valtozatahoz (term_arufajta_1_A_valtozat , id 11).
A blokkomban a fenti kód lefutasa utan az argumentum 8+11 lesz vagyis megjelenit minden tartalmat ( a cimet linkként ) aminel még a 8 vagy 11 id-jű taxonomiatermek be vannak jelolve.
<?php return implode('+',$terms); ?> kodreszletben a + jelet vesszőre cserelve az argumenumom a következokeppen valtozik a fenti esetet alapul veve : 8,11
vagyis azokat listazza ahol mindket feltetel egyidoben teljesül.
Ezzel boldog is lehetnék de sajnos nem teljes a dolog mert en olyan listat szertnek aminek az argumentuma ugyancsak a fenti peldat veve 7,10 legyen vagyis a top level term ID-jei adjak az argumentumot.
probaltam megerteni valahogy a szintaxist de sehogy sem sikerült igy nem tudom hogy hivatkozhatnék a felsobb szinten elhelyezkedő term-ek id-jara.
nem vagyok php programozo ezert utannaneztem a foreach meg az implode függvenyeknek s igy nagyjabol sejtem mit csinalnak de sajnos ez nem volt eleg.
ugyanenek a kodsornak van egy masik valtozata is ugyan azt csinalja sajnos abbol sem sikerül kibogozni semmi ertelmeset:
<?php
if (arg(0) == 'node' && is_numeric(arg(1))) {
$node=node_load(arg(1));
return implode(',', array_keys($node->taxonomy));
} else {
return false;
}
?>
ebben a <?php foreach($node->taxonomy as $term){$terms[]=$term->tid;} ?> helyett az <?php array_keys($node->taxonomy) ?> altal adott ertekeket füzögeti össze vesszővel az implode. ennyit sikerült eddig kifejtenem.
Mar joideje ragodom a dolgon u h minden jótanacsnak örülnék.
elöre is kösz.
gyuri.