Sziasztok!
Csináltam az oldalunkon egy képgalériát. Működik is rendesen, már mindent meg tudok oldani benne, amit akartam.
Itt látható:
http://vulpes.comxa.com/main-gallery?tid=47
Nos mint látszik is, a képek taxonómia szerint vannak csoportokba (albumokba) sorolva, és a Views beépített szűrőjével lehet böngészni az albumok közt. Ez így tökéletes.
Egy valamire azonban nem jöttem rá : Hogyan lehet az éppen megtekintett album (taxonómia kifejezés) leírását megjeleníteni ennél a nézetnél? Ahogyan itt látszik legfelül:
http://vulpes.comxa.com/taxonomy/term/47
Biztos vagyok benne, hogy valamilyen blokkba beszúrt PHP kóddal (vagy máshogy) meg lehetne oldani, hogy az első linken látható nézetnél is megjelenjenek a taxonómia leírások, de nem jöttem rá, hogyan.
Természetesen már feltúrtam a netet működő megoldás után kutatva, de nem találtam.
Köszönöm a segítséget előre is!
itt egy view, ami ezt csinálja meg neked
figyeld meg jól, hogy mit csinál, argumentumként vár egy tidet, alapértelmezetten ad (nem várja, hogy legyen jelen) php code.. kiszedi a $_GETből, visszaadja.
egy sort jelenít meg, nem használ lapozót.
egy blokkot definiál.
ezt a blokkot kiteszed valahova és kész.
-
clear: both;
Köszönöm, sokat segítettél :)
Valóban, elegáns megoldás, nem is értem, miért ragaszkodtam a php kódhoz, hogy nem jutott eszembe hasonló, pedig evidens lett volna. Na mindegy...
A napokban majd felrakom, sőt már a továbbfejlesztésére is van már ötletem :)
Köszi mégegyszer, üdv
hook_views_pre_render()
$_GET-ből kiszedett értékek validálásáról ne feledkezzünk meg!
Ha nem akarod az URL-t „elcsúfítani”, akkor saját modulban:
jó lesz
Köszönöm a segítséget. A blokkot inline belenyomtam a view fejlécébe, úgyhogy erre nem volt szükség. :D (Validálással amúgy sem ment volna a dolog, mert az url alapján így nem szabványos argumentum, tehát nem onnan veszi, hanem a PHP adja vissza... de ez már tényleg csak kötözködés a részemről. :) )
biztonság?
Csak halkan mondom, ha nem szabványos az argumentum, akkor neked kell PHP kóddal validátort írni.
Ok
Nos rendben, biztosan igazad van, bár egyelőre még nekem sem teljesen tiszta ez a validálás meg saját modul dolog, de majd utánaolvasgatok valamikor, hogy hogyan is működik ez az egész, mert mostanság nem nagyon van időm semmire, mindenesetre ha a fenti esetben is szükséges, akkor jó hogy felhívtad a figyelmem rá, és majd valamikor implementálva lesz a dolog.
ezt nem teljesen értem
a views validálni fogja az argumentumot, ha kell még azt is validálja, hogy a megfelelő szótárban létezike e a szám amit kapott a custom phptól.
ez a fenti modul mit változtat amúgy az urlen? mert azt nem látom. azt látom, hogy a view headerbe teszi a descriptiont, de az meg nem pakolható sehova, ott van és kész. ellenben egy blokkot könnyen tehetsz bárhova.
-
clear: both;
kimaradt
Ha megmondod neki, hogy validáljon. Az kimaradt a bemásolt nézetből, azért szóltam.
Egy általános megoldást adtam arra az esetre, ha nem tudja/akarja az URL query-ből venni az értéket. Ha az URL-ed http://example.com/furgeroka, akkor csak a $view-ből lehet a tid értéket kiszedni.
validálás szótár alapján
Egyelőre - jobb híján - beállítottam úgy a validálást, hogy csak a kép tartalomtípushoz tartozó szótárakba tartozó term id-eket engedje át. Ha ez így nem elég biztonságos, kérlek jelezzétek! Köszönöm.
tökéletes
amúgy a nézetben van eredetileg is basic validation, sql injectiont azon se tudsz átverekedni.
-
clear: both;
érdekes
Magam sem értem egyébként, miért nem biztonságos a basic, vagy hogy miért/mitől változna meg az URL a fenti megoldás alapján, mindenesetre megy így is és ez a fő, úgyhogy ezt a feladatot is sikerült bőven túlteljesíteni, köszönöm mégegyszer. :D
basic sokszor nem elég
A basic azt nézi, hogy megvan-e az argumentum, és szükség esetén, hogy numerikus-e.
Egy tid argumentumnál alapesetben nem lehet probléma, de simán össze lehet kattintgatni olyan nézeteket, ami biztonsági kockázatot jelent a webhely számára (pl. tipikus probléma, hogy megkerülik a hozzáférés-korlátozásokat, lekérhetővé tesznek olyasmit, amit nem kellene illetékteleneknek látnia).
Az alapszabály az, hogy mindig a lehető legszigorúbb validálást kell alkalmazni a lehető legkorábban. Ha tudjuk, hogy az argumentumnak numerikusnak kell lennie, akkor használjuk a numerikus validálást, és már az első körben dobjuk vissza az argumentumot, ha nem megy át. Ha tudjuk, hogy az argumentumnak numerikusnak kell lennie és a Fürgerókák szótárban lévő kategóriák azonosítói között kell lennie, akkor arra kell validálni, stb. Főleg akkor, ha a Views erre kényelmes kattintós megoldásokat kínál. ;)
Természetesen nem változik. Arra az esetre írtam, ha az URL-jeid nem úgy néznek ki, hogy http://example.com/valami?tid=1234 hanem úgy, hogy http://example.com/furgeroka
hasznos
Hát minden tekintetben hasznos volt ez a magyarázat, mindennap tanulok valami újat :) ez a fajta biztonság számomra is fontos, szerencsére még korábban a galéria alap nézetet is már eleve úgy hoztam létre, hogy szótárra validál. A portálomnál inkább az volt mindig is a gond, hogy túl kevés jogot adtam a látogatóknak (ami azért sokkal jobb annál, mintha olyanhoz is joguk lenne amihez nem lenne szabad), úgyhogy inkább ezzel voltak gondjaim mindigis.
Amúgy ez most nem ide tartozik, de úgy gondoltam, megosztom a "titkot", hogyan lehet a fent generált blokkot betenni inline bármilyen view fejlécbe vagy tartalomba, arra az esetre ha valaki hasonló megoldást szeretne (a profiknak ez biztos nem gond, de nekem pl. nem volt annyira evidens, keresgélnem kellett utána)
Szóval ha a nézet (ami a blokkot előállítja) neve term_description, és ezt az egy blokkot definiáltuk benne, akkor a köv. PHP kódot szúrjuk be a fejlécbe/node-ba/tartalomba, így a blokk a tartalom részeként jelenik meg:
term_description és block_1 értelemszerint átírandó ha szükséges, és nyilván a php filtert sem árt bekapcsolni, hogy működjön is a dolog
Fenti nézetnél még annyi "továbbfejlesztés" történt részemről, hogy csináltam benne még egy mezőt, ami a term nevét is kiírja a leírás fölé (legelső hozzászólásomban a linken látszik).