Helló!
Hogy lehetne azt megoldani, hogy egy adott node-nál a tartalmi rész után meg legyen jelenítve találomra 5 db csatolt képe azon node-oknak, amik ugyanolyan taxonomy-címkékkel rendelkeznek, mint az aktuális node?
Pl katalógusoknál van ilyen megoldás, amikor hasonló termékeket ajánlanak. Vagy a video-megosztóknál is ilyen van.
Köszönet!
Fórum:
related nodes
http://www.google.hu/search?q=drupal+related+nodes 746ezer találattal.
nálam 780 ezer. vagy csak
nálam 780 ezer. vagy csak ilyen gyorsan szaporodik? :)
-
clear: both;
Re: related nodes
Köszönöm a segítséget! Megnéztem néhány linket, addig jutottam, hogy ki tudom íratni a node taxonomy term-jeit a node végén. Pedig vannak olyan kódok is, amik hasonló node-ok listáját ígérik, de nem működnek... Amúgy 5.2-es Drupalt használok.
például egy megoldás
nem tudom pontosan mit akarsz csinálni és biztosan ezer meg egy megoldás van, valószínűleg elegánsabb is előfordul, de nagy vonalakban:
- készítesz egy viewt, amit beállítasz, ahogy akarsz. típusát, mezőit, szűrőket, rendezés szempontjait, stb. argumentumként megadod neki, hogy 'taxonomy term name' vagy 'taxonomy term id' ahogy tetszik. (később persze ennek megfelelően kell majd használnod)
- a megfelelő tartalomtípus tpl.php filejában, a megfelelő helyen felépíted a viewt, átadva neki az argumentumot. ehhez használod a views_get_view($view_name) hurkot, hogy meghívd a viewt, ezután pedig a views_build_view($type, &$view, $args = array(), $use_pager = false, $limit = 0, $page = 0) hurokkal megjeleníted azt.
bővebben olvashatsz erről a módszerről itt: http://drupal.org/node/48816
rengeteg más megoldást is el tudok képzelni. ;)
-
clear: both;
Re: Hasonló node-ok ajánlása... - például egy megoldás
Igen, de meg lehet oldani, hogy a view mindig az éppen megjelenített node-hoz tartozó kifejezések szerint szűrjön? Hogyan?
Köszönd Editnek!
Van magyar leírás ilyenről. Ajánlott olvasmányok:
Magyar Drupal kézikönyv/Tippek és trükkök/Tartalomszervezési megoldások II. - Views és CCK modul
Amire szükséged van:
Érdemes azért a másik írást is elolvasni előtte: Tartalomszervezési megoldások I. - Taxonomy és Book modul
Üdv, Pali
--
Palócz Paal Pál, a drupal.hu admin csoportjának tagja
Ajánlott olvasmány: Eric Steven Raymond - Hogyan kérdezzünk okosan
A viewfield modult
A viewfield modult próbáltam egyszer, de nem barátkoztam meg vele...
Most így próbálkozok:
A nézetem végére megadtam argumentumként a "taxonomy: kifejezés azonosító"-t. Szűrőt talán nem is lesz szükségem használni.
A nézetem kezdőlapjának url-je így néz ki: www.honlap.hu/nezetneve, ebben vannak listázva a taxonomy kifejezések. Rámegyek az egyik kifejezés linkjére, ekkor jutok a www.honlap.hu/nezetneve/26 oldalra, ahol az ezen kifejezéshez tartozó node-ok vannak, képpel, ahogy megadtam. Na, pont ezekből az oldalakból kellene mindig azt berakni a node végére, amilyen kifejezést a node-hoz kapcsoltam.
Sikerült beágyaznom a nézetemet a node-ba az aboros által közölt kódokkal:
Ez eddig a nézet "kezdőlapját" adja.
Mit kellene beírni a kódba, hogy azt adja, amit szeretnék?
(Igaz, ez még mindig nem a legjobb megoldás lesz, mert ált. több kifejezés is tartozik egy node-hoz, az igazi az lenne, ha ezek közül mind listázna a view. De kezdetnek ez is bőven jó lenne.)
Na, találtam egy elég jó
Na, találtam egy elég jó megoldást:
Ez arra az esetre jól működik, amit leírtam előbb.
Azt meg tudja valaki mondani, hogy lehet megadni a view táblázat nézetének a paramétereit (hány sor x hány oszlop), vagy azt elérni, hogy a lista nézet vízszintesen egymás mellé listázza az elemeket? Próbáltam azzal, hogy a css-ben adtam az oldalhoz tartózó smink class-ának float:left tulajdonságot, de ez nem szép megoldás, mert minden listát így kezel az oldalon, szétcsúszik minden.
Köszi ha tudtok valamit!
talán így
ha a foreach -be teszed a nézet felépítését, akkor az összes kategóriára meglesz a nézeted.
-
clear: both;
Köszi! Működik, de ahány
Köszi! Működik, de ahány kifejezés, annyiszor öt node-ot sorol fel.
Ennél a tartalomtípusomnál csak egy szótár volt, de ha több szótár is van, akkor hogy lehet elérni, hogy csak egy adott szótárat figyeljen a kód, aszerint listázzon? Én azt csináltam, hogy megadtam az előző kódomnál $args-nak ezt: $args = array ($args[1]=6, $args[2]=$termid). Itt már egy másik view-t hívok meg, ahol az első argumentumnak a szótár-azonosítót, másodiknak a kifejezés-azonosítót adtam meg.
Ez egy telefon-leírásos oldalnál kellene, ahol van "gyártó", "forma"(kihajthatós, csúsztatós...), és "jellemzők" szótár. Jellemzőknél 7 kifejezés: GPS, kamera, touchscreen stb. Csak a "jellemzők" szótárat kellene figyelnie a kódnak.
Először azt hittem jó, mert vegyesen kiadott a Nokiáknál a leírás végén vegyesen mindenféle telót. De a Samsungoknál csak Samsungokat mutat!
Továbbá az is bibi, hogy néha egy telefont többször is megjelenített egy listában. Ezt hogy kell kivédeni?
Valamint megfigyeltem, hogy azoknál a leírásoknál, ahol egy kifejezést se tettem a node-hoz a jellemzők szótárból, ugyanúgy mutatott 5 javasolt node-ot.
kísérletezgess!
többet is kérdeztél. :) egy részükre magadtól is rájössz szerintem. ;)
ha adott nodehoz rendelet kifejezéseket szeretnéd megkapni, amik egy konkrét szótárból származnak, akkor használd a taxonomy_node_get_terms_by_vocabulary -t.
"ahol egy kifejezést se tettem a node-hoz a jellemzők szótárból, ugyanúgy mutatott 5 javasolt node-ot." ez azért van, mert úgy állítottad be a nézetet, hogy ha nem kap argumentumot vagy olyat kap, ami nem ad eredményt, akkor mutasson minden értéket.
-
clear: both;
kísérletezgess
ha csak egy konkrét szótár termjei kellenek, akkor használd a taxonomy_node_get_terms_by_vocabulary hookot.
ahol egy kifejezés sincs a node -hoz rendelve, ott azért mutat ennek ellenére öt node -ot, mert az argumentumnál azt adtad meg, hogy ha nincs eredmény, akkor 'display all values'. vagy valami ilyesmi.
(most nem egészen világos megint, hogy mit akarsz. ez a 'snippet' azt fogja neked csinálni, hogy a node minden taxonomy termjéből kivesz még öt node -ot és azokat megmutatja. nem figyeli, hogy egy node szeretpelt e már egyszer.)
-
clear: both;
bocs
dupla lett. fene a tabbed browsingba. :)
-
clear: both;
Na ezzel egyből jó lett,
Na ezzel egyből jó lett, köszi!
Azzal a szerencsétlen hiaüzivel (lásd lent) mit kéne tennem hogy eltűnjön?
Hibaüzenet
Ja, igaz, van az oldal tetején egy hibaüzi:
"Warning: Call-time pass-by-reference has been deprecated; If you would like to pass it by reference, modify the declaration of views_build_view(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. in /home/homepage/public_html/themes/sajatsmink/node-masolat.tpl.php on line 29"
Hogy tüntessem ezt el? Beírtam a views_build_view()-ba egy ilyet:
$allow_call_time_pass_reference = true,
de nem segített.
szerintem ez szerverbeállítás
arra panaszkodik, hogy 'call-time-pass-by-reference' (ne kérdezd:) módszerrel vagy ilyesmi próbálkozik a views_build_view deklarálása, ez pedig nem engedélyezett. ha akarod, engedélyezheted az ini fileban. gondolom a php.ini -re gondol. nemtom. dobd el a hibaüzenet levélben a szolgáltatódnak.
-
clear: both;