Van két tartalomtípus:
-üzlet
-árucikk
Az árucikknél node reference-ként ott az üzlet, hogy hol érhető el. Egy árucikk több üzlethez tartozhat.
Az üzlet típusnál semmiféle mező sem tartalmazza az árucikket, mégis meg kéne jeleníteni az üzlet teljes nézetében a kapcsolódó árucikkeket. Hogyan?
Drupal verzió:
Fórum:
hibás megközelítés
nagyon általános hiba ez és szerintem teljesen rossz megközelítés. mindig mindenki mindenhol a cck -t és a mezőket erőlteti és közben nem látja a fától az erdőt. ezt például miért node_reference -el??? taxonomy meg dísznek van? :)
én úgy próbálnám, hogy:
hogy magát az üzletet hogyan kötöd a term -hez, arra tucatnyi ötletet tudok elképzelni, nekem eddig az tűnt praktikusnak, hogy magát az 'üzlet' típusú tartalmat is beleteszem a saját maga term -jébe az 'üzletek' szótárban.
ezek után sokkkkkal könnyebb dolgod lesz a szűrésekkel, ugyanis a taxonomyt pontosan erre találták ki. csak a cck mindenkinek elveszi az eszét és mindent mezőbe akar megcsinálni, ha kell, ha nem. pedig a mezők alapján szűrögetés enyhén szólva macerás, pláne a term -ek alapján szűrögetéshez képest. valójában, ha más taxonomyt nem használ az oldalad, akkor 'csak' a taxonomy/term/x nézetet felülírod és kész is vagy.
szerintem a node_reference mezőnek akkor van értelme, ha egy node -ból egy max 2-3 másik node -ra akarsz hivatkozni, azt se túl gyakran. ha egyik node -ból sok másikra akarsz hivatkozni és ráadásul minden esetben, akkor már nem valami használható, akkor az már taxonomy!
-
clear: both;
Viewfield
Nem, de egy term-nek csak neve, leírása, szinonímái, szülői/gyermekei vannak, a node típus pedig tetszés szerint bővíthető.
Hallhatnánk ebből a tucatból egy párat?
Nekem meg pont nem tűnt annak, elég szerencsétlenül jön ki, hogy a 45. sz. csemegebolt benne van a 45. sz. csemegebolt nevű kategóriában (az üzlet által árult termékek mellett). Sminkben ezt a kategóriát el kell rejteni, és ha több száz üzleted van, amelyeknek sok a tulajdonsága, akkor nagyon könnyen egy kezelhetetlen taxonómia-dzsungellel kell dolgoznod. Mondjuk listázd ki az 50 és 100 m2 közötti alapterületű, 5 alkalmazottnál többet foglalkozató üzleteket, stb. Minden tulajdonságra, ami alapján később le akarsz kérdezni, kategóriákat kell létrehoznod, míg node típus esetén van egy alapterület meződ és kész.
Egyszerű szűrőfeltételek esetén valóban. A világ viszont gyakran elég bonyolult.
Miért is? Eddig nekem semmiféle nehézséget nem okozott.
Miért ne lehetne 1 node-ból több százra, vagy több ezerre hivatkozni node reference-szel? Miért jobb ebben az esetben több ezer term, mint több ezer node? (Egyáltalán: be tudod tölteni azt a sok kategóriát a memóriába?)
Taxonómiát érdemes használni, ha a kategóriának csak neve van, esetleg leírása:
(Megjegyezném, hogy ha meg is akarjuk valahol jeleníteni a description mezőt, akkor az már bonyolultabb, mintha egyszerűen egy node mezője lenne.)
Ha több dolgot is el tudunk a kategóriáról mondani, főleg, ha ott változó értékek lehetnek (alapterület, alkalmazottak száma) akkor már node típust érdemes csinálni. Továbbá node-ot érdemes használni akkor, ha a webhelyen a munkafolyamat ezt megkívánja – jogosultságkezelés, verziókezelés, időzítés, csatolmányok és még egy csomó szolgáltatás a Drupalban könnyebben megoldható node-okkal mint term-ekkel.
Mivel nem tudjuk, miféle webhelyet, alkalmazást fejleszt a kérdező, ezért nem is lehet egyértelműen kijelenteni, hogy számára a CCK vagy a Taxonomy a jobb megoldás.
Hogy a kérdésre is válaszoljunk, az adott node-ra node reference útján hivatkozó node-okat Views modullal tudod kilistázni, és Viewfield modullal beilleszteni a szülő node-ba. Egyszer csináltam is erről egy videót, csak most a honlapom költözése miatt nem elérhető, ha küldesz egy üzenetet a kapcsolati űrlapomon, akkor átküldöm.
Szerk.: Sajnos sikerült a költözés közben úgy elpakolni a fájlokat, hogy most nem találom őket. :( Viszont közben már a Drupal.org kézikönyvbe is bekerült a téma.
ahány ember, annyi megoldás
szerencsére a drupalban mindenkinek megvan a lehetősége, hogy a saját szájízének megfelelő logika szerint építsen fel dolgokat, általában egy feladatnak számtalan megoldása lehetséges és legtöbbször nincs olyan, hogy általánosan meg lehetne fogalmazni, hogy az egyik megközelítés jó a másik meg rossz. ezt nyilván te is tudod, nem okításnak szánom. :)
mindemellett tényleg nem volt valami szép tőlem, hogy a problémafelvetésre megoldás helyett a saját logikám erőltetését küldöm be válaszként, elnézést kérek, hajlamos vagyok erre, igyekszem elhagyni majd ezt a szokásomat. (bizonyos szempontból ez offolás végülis)
általában próbálok minél kevesebb modult használni (újabban) igyekszem kerülni a viewst. (félek is a views in core iránytól) ezért nem szeretem a node_reference -es megoldást, mert akkor már kelleni fog a views meg akkor már viewfield is vagy insertview és sokszor ezt csak egyetlen funkció (termékek üzletekhez kapcsolása, egy-kettő max 3 nézet) miatt nem tartom hasznosnak. legtöbbször csak túl 'robosztus' lesz tőle a dolog. (nekem, az én munkáim szintjén)
a munkafolyamattól persze nagyon sok függ, sokcsoportos, sok adminos, roppantösszetett munkafolyamatos oldalt még nem csináltam, talán ezért nem tértem még át a node_reference technikára.
értem az indokokat amiket felsoroltál és elgondolkodom rajtuk, mindenestre sajnálom, ha butaságot írtam és az offért is bocs.
-
clear: both;
nem tudjuk eldönteni
Nem írtál butaságot, csak a hozzászólásod címe az volt, hogy "hibás megközelítés". Nem tudjuk, hogy mi a feladat, ezért azt sem tudjuk eldönteni, hogy mi a helyes megközelítés. Az egyik legsúlyosabb döntés, amit a munka kezdetén meg kell hozni az az, hogy CCK vagy Taxonomy vagy valami saját fejlesztés. Ezután ha már jó sok minden elkészült a webhelyen, és/vagy jó sok tartalmat feltöltöttek, akkor utána már nehéz váltani (bár nem lehetetlen).
Voltak ilyen irányban törekvések
Már másokban is felmerült ez az igény, és volt próbálkozás a megvalósításra, de a Drupal 5-öshöz nem készült el. http://drupal.org/project/ReferencedByFilter (nem tudok más modulról, de lehet hogy van.)
D6-hoz a views2-őt lehet használni erre a célra. (Én még nem próbáltam)
Még régebben én is elkezdem írni egy ilyen D5-ös modult, - nem volt tudomásom a ReferencedByFilter-ről - de amikor olvastam a készülő Views2-ről akkor leálltam vele. A nagyon alap dolgok működnek, de a Views támogatása minimális.
Megoldottam
Belehegesztettem a node tpl fájljába egy nézet megjelenítő függvényt, aminek paraméterként meg tudtam adni, hogy mit is jelenítsen meg, de a viewfild pont ezt csinálja, csak valahogy eddig elkerülte a figyelmemet.
Köszönöm!