view dinamikus paraméterrel

Paal képe

Üdv,

CCK-val létrehoztam 2 tartalom tipust:

  • Csapat
  • Versenyző

Létrehozok egy csapatot. Létrehozok több versenyzőt, melyekben node_reference megadásánál tudok hivatkozni az adott csapatra.

Views-zal tudok is csinálni olyan lekérdezést, hogy az xy csapat tagjait listázza ki. A tartalom tipus hozzáadásánál lehetőség van a már definiált views-ok kiválasztására. De ebben az esetben minden csapatra külön-külön views-t kellene létrehoznom. Van arra lehetőség, hogy egy változót behelyettesítve gyüjtse le, hogy kik tartoznak az adott csapatba?

Köszi, Pali

Illyés Edit képe

Én nem értem a kérdést. Konkrétan itt akadtam el:

A tartalom tipus hozzáadásánál lehetőség van

Milyen tartalomtípusról van itt szó? Egy újabbat szeretnél létrehozni a meglévő Csapat és Versenyző mellé? Vagy esetleg tartalom hozzáadásáról beszélünk? (Tartalom és tartalomtípus – ez 2 különböző dolog. Pl. a 'blog bejegyzés' az egy tartalomtípus, az 1234. számú node pedig egy 'blog bejegyzés' típusú tartalom.)

0
0
Paal képe

...csak nem tudtam rendesen leírni :(

2 tartalom tipusról van szó:
- csapat
- versenyző

Létrehoztam 3 node-ot (tartalmat :) :

- Piros csapat
- Körte versenyző
- Barack versenyző

A versenyzők felvitelekor, megadtam, hogy ők a Piros csapat tagjai. De szeretném a piros csapat megtekintésekor a csapathoz tartozó versenyzőket is kilistázni. Ez megy is, mert csinálok rá egy viewst, és a csapat tipusú tartalomnál lehet views mezőt is hozzáadni. Csakhogy nem lehet álltalánosítani.

Azt szeretném elérni, hogy egy views-sal ki tudjam listázni mindig az aktuálisan kiválasztott csapat tagjait.

Vagyis:

Piros csapat: körte, barack
Kék csapat: alma, répa
Sárga csapat: citrom, stb.

Nem tudom, hogy így érthetőbb-e már.

Nagyon elméletben arra tippelek, hogy a views theme wizard-dal létre kellene hoznom a nézetet, a csapat tartalom tipusának theme függvényébe ezt beilleszteni, és a keresési feltételhez pedig megadni az aktuális csapat azonosítóját... Vagy valami hasonló...

Kösz, Pali

0
0

--
Palócz Paal Pál, a drupal.hu admin csoportjának tagja
Ajánlott olvasmány: Eric Steven Raymond - Hogyan kérdezzünk okosan

Illyés Edit képe

Szia,

Közben elszállt a laptopom amire CCK-s Drupal fel volt téve, de most visszaszállt, úgyhogy: egy kicsit körülményes, de meg lehet csinálni.

1. Létrehozod a Csapat tartalomtípust, felviszed a csapat node-okat (node/1, node/2, stb.)

2. Létrehozod a Versenyző tartalomtípust, benne node_reference a csapat számára, felviszed a versenyző node-okat (node/3, node/4), minden versenyzőhöz hozzárendelve a csapat node, amelyiknek ő a tagja.

3. Készítesz egy nézetet, ami a www.akarmi.hu/csapat URL-en lesz elérhető. Az argumentumoknál megadod a Node Reference: Csapat (field_csapat) argumentum típust, és a Summary, unsorted opciót választod. A szűrők között a szokásos Node Published -> Equals: Yes, valamint Node: Type -> Is One Of: Versenyző.

Ezzel lényegében megmondtuk a Views-nak, hogy készítsen listát azokból a versenyző node-okból, amelyek rendelkeznek field_csapat nevű CCK-s mezővel. Ha nem kap argumentumot az URL-ben (pl. a www.akarmi.hu/csapat) címen, akkor készít egy összesített listát:

  • Piros csapat (20)
  • Sárga csapat (18)

... ahol a csapatnevek a csapatok tagjait kilistázó oldalakra mutató linkek, a zárójelben pedig azt mutatja, hogy hány csapattag van az adott csapatban. Tehát ez egy csapat összesítő oldal, amiről tovább mehetünk az egyes csapatok oldalára. A csapatok oldala a www.akarmi.hu/csapat/1 címen van, ahol az 1 a csapat node azonosítójából jön (node/1, node/2, stb.). Ez nem egy túl jó oldal, mert csak listáz és nem tudunk további információkat adni hozzá. Helyette inkább a csapat node-okat (node/1, node/2) kell egy kicsit felturbózni úgy, hogy a törzs részbe beszúrjuk a fent létrehozott csapat nézetünket:

<p>Üdv a Piros csapat oldalán... És ezek itt csapatunk tagjai:</p>
<?php
$view_name = 'csapat'; //nézet neve
$node_id = arg(1); // az URL-ből látjuk, hogy melyik node id-t kell átadnunk a nézetnek argumentumként
$view_args = array($node_id); // átadjuk neki
print views_build_view('embed', views_get_view($view_name), $view_args, FALSE, $limit); // kinyomtatjuk a nézetet
?>

Lehet, hogy nagyon bonyolultan írtam le? Tehát a lényeg, hogy létrehozunk egy Csapat nézetet, de ezt önmagában nem használjuk (hacsak nem pont a nézet által létrehozott bénácska listázó oldalakra van szükségünk), hanem a nézetet beágyazzuk a csapat node-okba úgy, hogy mindig átadjuk neki argumentumként a kilistázandó csapat node id-jét (ami történetesen azonos az éppen megjelenítendő node id-jével).

0
0