cck-s view "mező" taxonomy kategória szerint

gyuri2012 képe

Csinálok egy allatok nevu szotarat, kutya es macska kategoriaval.
A tartalomtipusomhoz full nezeteben (cck, contemplate) szeretnek egy lista nezetet hozzaadni.
Azaz egy konkret kutyanal a teljes nezete ugy nezne ki, hogy kiiirja az adatait, kepet rola, stb..., aztan kilistazza azon tartalmak egy-egy mezojet, amik ezzel megegyezo taxonomy kategoriaban vannak.

Szóval ez amolyan "kapcsolódó termékek" szerű dolog lenne.

Fontos lenne, hogy ne kelljen külön megcsinálnom a nézeteket minden kategóriához, csak letrehozom a kategoriat, tartalom bekuldesekor bepotyogom, hogy milyen kategoriakban van benne az adott allat.
Ugy emlekszem regebben sikerult mar hasonlot csinalnom, de most nem talalom a megoldast.. :(

Hogyan kellene?

gyuri2012 képe

Valami olyasmi rémlik, hogy a views beépült a hozzáadható cck-s mezők közé úgy, hogy a tartalom típus létrehozásakor/szerkesztésekor adhattam meg a szűrőt is.
Ha nem csak álmodtam, akkor azt talán lehetne úgy paraméterezni hogy aktuális kifejezés szerint....
Van ilyesmi?

0
0
gyuri2012 képe

Biztos megint ételmetlen volt a kérdésem..., no nem baj. :)
Megpróbálom máshogy:
Csináltam egy tartalom típust, aminek van egy cck-s View Reference mezője.
Ennek a default értéke a KAPCSOLODO_DOLGOK nevű nézet.
(de argumentumokat, ill. akár php kódót is írhatnék ott a default értékhez kapcsolódóan.)
...és megcsináltam a KAPCSOLODO_DOLGOK nézetet, aminél szintén lehetnének paramétereket hozzáadni, és "Argument Code:"..., és persze sokféle szúrőt is lehetne.

Hogy lehet megcsinálni, hogy ez a nézet mindig azokat a tartalmakat listázza ki, (mint View Reference mező), amik ugyanahhoz a taxonomy kifejezéshez tartoznak, mint az a tartalom aminek View Reference mezője?

A kérdés nem csak máshogy..., de talán más is, ahogy változik a dolog aszerint, hogy épp hogyan próbálkozom.

0
0
Illyés Edit képe

A Views Multiblock modult nézd meg. Tervezek egy cikket is róla, talán a hétvégén lesz időm megírni.

0
0
gyuri2012 képe

...viszont bár eddig lényegeben még nem foglalkoztam argumentumokkal drupal kapcsán, én valahogy úgy képzelem, hogy a fent említett két dolog argumentum listája pont arra való, amire nekem kellene..., szóval úgy képzelem hogy nem szükséges hozzá már más, csak azokat a "rumblikákat" kellene jól kitölteni. (csak arról nincs elképzelésem, hogy mi a jó)
Vagy kizárt, hogy így megoldható?

0
0
Illyés Edit képe

A Views Multiblock a Views Argument API-jára épül, és pont arra való, ami neked kell.

0
0
gyuri2012 képe

Ha tehetek érte valamit, hogy legyen rá időd, szólj! :)
Jobban várom az irományt, mint nemrég a karácsonyt!

0
0
gyuri2012 képe

http://drupal.org/node/162473 fordítása, hátha valaki hasznát veszi:

Töltsd le és telepítsd a views_multiblock és a views_argument_api modulokat. Bizonyosodj meg róla hogy a Views és a Views_UI modulok be vannak kapcsolva.

Menj az admin/build/views-re és vagy a) add hozzá a views_multiblock nézetet a) szükséges változtatásokkal) vagy b) készíts egy új nézetet. Én az a) verziót ajánlom.

Amikor módosítasz a nézeteden, legalább egy argumentum mindig legyen beállítva a nézetben. A leggyakoribb alkalmazás, hogy Taxonomy: Term ID argumentumot adsz hozzá. Ezt fogjuk mi is használni. Kattints a gombra a lap alján és mentsd el, hogy folytathasd a nézet szerkesztését.

Ezt az argumentumot a lekérdezés(nézet)ekhez lehet behelyettítésként használni. Más szóval ha készítesz egy nézethez lekérdezést ami olyasmi hogy “Mutasd meg az összes elemet a story elemek közül amelyeket kiadtak és a Taxonomy: Term ID egyenlő X-szel” és utána felállíthatsz egy Views_Multiblock-ot és X-et különbözőképpenv töltheted fel az egyes blokkokba, amelyeket Views_Multiblock modullal hoztál létre.

Menj az edit nézet form aljára és nyisd meg az Argument API mezőhalmazt (fieldset). Válaszd ki a metódust amely átadja a Taxonomy: Term ID-t a nézetnek. A példa kedvéért add meg hogy egy előre meghatározott értéket használjon. (Hogy ez mit jelent, mindjárt kiderül.)

Mentsd el a nézetet.

Az admin/build/block-ban keress egy már létező views_multiblock blokkot. Általában 5 kikapcsolt block áll a rendelkezésedre, hacsak nem változtattál ezen a admin/settings/views_multiblock-ban. Válaszd ki az egyik már létező, kikapcsolt views_multiblock blokkot ( [vm] jelzéssel vannak megjelölve), és állítsd be. A block beállítási lehetőségek eléggé egyértelműek.

Azt viszont érdemes elmagyaráznom, mit kezdj a Views mezőtáblával (fieldset): Válaszd ki a nézetet amit az előzőekben definiáltunk. Nyomj az Update-re.

Most ha legörgetsz egészen a a Views fieldset-ig, látni fogsz egy form-ot amivel kiválaszthatod a Taxonomy: Term ID-t hogy ez átadásra kerüljön a nézetnek. Ha egy másik argumentumot választottál ki a nézet módosítás form-ban az Argument API mezőkben, akkor más beállításaid lesznek. Nyugodtan próbálkozhatsz más lehetőségekkel is (ha ezt a példát befejeztük), érdekesebb és még hatékonyabb lehetőségek is vannak amit megvizsgálhatsz, hogyan hatnak erre a fieldsetre a block beállítási formban.

Válassz ki egy kifejezést/időtartamot ehhez az elemhez és engedélyezd a block configurációt.

Menj vissza és állíts be annyi views_multiblock blokkot ahányat csak akarsz. Ha többra van szükséged, menj az admin/settings/views_multiblock és válassz más számú views_multiblock blokkot ennek a modulnak. Az elgondolás az, hogy előre legyártott nézeted (vagy nézeteiid vannak) amelyeket ezekkel a blokkokkal használhatsz; ezekhez kell a behelyettesítéseket kitölteni.

Ezek után helyezd a blokkokat a kívánt területre és add hozzá a formot az admin/build/block-ban.

0
0
gyuri2012 képe

Odáig jutok vele (views_multiblock), hogy csinálok egy blokkot, amibe a megfelelő TERM ID-ju tartalmakat listázza ki.
Azaz KAPCSOLODO_TERMEKEK
view type: views_muliblock
field: mondjuk title és kép
argumentum Taxonomy: Term ID - display all values
argumentum API: Taxonomy: Term ID - use node's term for szotaram

A vm block pedig:
views: KAPCSOLODO TERMEKEK
views arguments: Use node's term for szotaram -at nem tudom kipipalni, ezt irja: "Pass the node's taxonomy for szotaram to the view." Hol kellene engedélyezni mit?

Szoval ez a blokk igy jo ha kirakom mondjuk baloldalra, de nekem az kellene, hogy a KAPCSOLODO_TERMEKEK listazza ki az eppen x TERM ID-ju tartalmakat mint View Reference.
Ez meg sehogy nem akar sikerülni, már semmit sem értek... :o)

(esetleg azt meg lehetne csinálni, hogy a KAPCSOLODO_TERMEKEK-et nem irja ki (contemplate-vel eltuntetem pl), a blokkot meg a contetnt-hez -be, akarmi rakom, de ez eleg ize lenne nem? Masreszt mindenhol megjelenne..., nem lenne jo a kinezete, stb.)
Szoval mit csinalok teljesen rosszul?
Ill ha ennel a contetnes blokknal maradok, akkor hogy lehet megoldani, hogy csak bizonyos tartalom tipusok full nezetenel jelenjen meg?
"Show if the following PHP code returns TRUE (PHP-mode, experts only)." ez kicsit elrettent :)
Másrészt akkor egy kapcsolot is ki kell banyaszni, amivel allithato a nezeten, hogy mennyi darabot listazzon ki.

0
0
Illyés Edit képe

Szoval ez a blokk igy jo ha kirakom mondjuk baloldalra, de nekem az kellene, hogy a KAPCSOLODO_TERMEKEK listazza ki az eppen x TERM ID-ju tartalmakat mint View Reference.

Létrehozol egy szövegmezőt, ahová PHP kódként behívod a multiblock kódját:


$block = module_invoke('views_multiblock', 'block', 'view', 'nezetneve');
print $block['content'];
?>

A cikk készül, csak az utóbbi napokban egy percem sem volt rá, meg még Drupal 6 fordítással is adós vagyok a fordítási team-nek, ezen kívül úgy döntöttem, hogy nem csak a Views Multiblock-ról kellene írni, hanem az argumentumokról általában, úgyhogy egy kicsit nagyobb falat, mint terveztem... Szóval be vagyok havazva, bocs.

0
0
gyuri2012 képe

Kösz! Végülis a views_multiblockot másra használnám mint eredetileg terveztem..., aboros javaslata egyszerübbnek tűnik. De használnám, úgyhogy várom az írást, sürgetni viszont nem akarlak..., úgyhogy én bocs!

0
0
gyuri2012 képe

Edit várható ez, vagy meggondoltad magad azóta?
(én lefordítottam amit ide..., de aztán még azóta sem volt időm próbálgatni fordítás alapján)
Szóval elhalasztottam, de most már lassan nagyon... :)

0
0
aboros képe

lehet nem értem pontosan a kérdést, de gondolom van egy állatok tartalomtípusod. én annak a sminkelésében csinálnám ezt úgy, hogy legyártom a viewt, hozzáadom argumentumként az állotok szótár term id -ket, aztán a sminkben (node-allat.tpl.php :) a views_get_view -t használva felépíteném a nézet.
részletesebben volt róla szó errefelé: http://drupal.hu/search/node/views_get_view

0
0

-
clear: both;

gyuri2012 képe

Még nem nézegettem meg a views_get_view -t, de köszönöm a tippet.
Átbogarászom..., de ha jól értem, akkor nem kellene a szótár term id-KET hozzáadnom, csak a konkrét állat term id-jét kell ismernem, és átadnom a views-nak nem?

konkrét állat term id-jét "lekérdezem", és paraméterezem vele view_reference-hoz tartozó listát?

0
0
aboros képe

semmilyen views reference nincs, nincs rá szükséged, pont ez a lényeg, hiszen mindig ugyan azt a viewt akarod látni, csak más term id -jű node -okat akarsz benne megjeleníteni. erre valók - többek között erre - az argumentumok...

nézd meg a szálakat amiket linkeltem, ott részletesen le van írva, hogy mi a helyzet.

0
0

-
clear: both;

gyuri2012 képe

Ez a módszer tökéletes lesz erre, csak egy szűrőt kellene bele aplikálnom, hogy önmagát ne listázza ki. (mármint azt a tartalmat, amihez kapcsolom a view-t)

0
0
aboros képe

van ilyen szűrő a views -ban: node: distinct ... elvileg ez való erre, ha jól tudom. de lehet rosszul tudom.

0
0

-
clear: both;

gyuri2012 képe

Valószínüleg nem értem hogy gondolod.
...az valami olyasmire jó, hogy ne szerepelhessen kétszer egy tartalom a nézetben, nálam meg az a cél, hogy aminek a full nézetében views_build_view (node.tpl.php -jában) az a tartalom egyáltalan ne szerepeljen a listában.
"

$terms = taxonomy_node_get_terms($node->nid);
$view = views_get_view("nezetneve");
foreach ($terms as $key => $tobj) {
$args = array($tobj->tid);
print views_build_view('embed', $view, $args, false, 5, 0);
}

" - ezt te írtad korábban valahol...
Én úgy gondoltam, hogy vagy $args = array($tobj->tid);-t kiegészitem meg egy értékkel (azonosítójával?), vagy csinálok egy közbenső nézetet, ami pl. ezt megkapja (nezetneve fent), aztán szűr azonosító alapján és azt print nem ezt.
Ezek rossz elképzelések? Különben hol található valamiféle referenciakönyv ezekről?
0
0
aboros képe

szerintem az nem rossz elképzelés, hogy az argumentumok közé felveszel még egyet, ami egy Node: ID, az 'Options' résznél pedig 'Not equal' -t adsz meg, és amikor építed fel a nézetet, akkor átadod az aktuális node idjét. próbáld így szerintem!

0
0

-
clear: both;

gyuri2012 képe

Nemigazan akar sikerulni. :(

$terms = taxonomy_node_get_terms($node->nid);
$view = views_get_view("nezetneve");
foreach ($terms as $key => $tobj) {
$args = array($tobj->tid);
print views_build_view('embed', $view, $args, false, 5, 0);
}

Ennel a "nezetneve" nezetben vehetnem fel a Node: ID - Not equal parametert?
Aztan a $args egy ketelemu tomb lenne, ahol az elso array($tobj->tid) a masodik pedig array($tobj->nid) szeru? Vagy ez egesz mashogy mukodik?
0
0
aboros képe

a views_build_view egy tömbben várja az argumentumokat, de maguk az argumentumok már nem tömbök!

tegyük fel, van egy "nezetneve" nézeted. a nézet két argumentumot vár (ebben a sorrendben), egy taxonómia id -t és egy node id -t. (ez utóbbi 'not equal')

ekkor így:

$terms = taxonomy_node_get_terms($node->nid);
$view = views_get_view("nezetneve");
foreach ($terms as $key => $tobj) {
$args = array($tobj->tid, $node->nid);
print views_build_view('embed', $view, $args, false, 5, 0);
}
0
0

-
clear: both;

gyuri2012 képe

Kosz!
Igy gondoltam en is, csak nem sikerult kiviteleznem.
(mar nem is tudom miert, de pl elosszor itt asszem en is $node->nid -et irtam, csak aztan atszerkesztettem..., mert valamiert azt hittem aztan, hogy az egy masik node lenne mint ami nekem kell)

A masik otletem (kozbenso nezet) arra az esetre vonatkozott volna, ha a bulid parametere nem lehetne tomb (azt talan meg en sem gondoltam komolyan, hogy ne lehetne tobb arg(S), csak nem talaltam meg a leirasat a fuggvenyeknek.

0
0