Sziasztok!
A topic címe elég furán hangzik, de most hirtelen nem tudtam értelmesebben megfogalmazni röviden.
Views-zal létrehozok pár blokkot, és ezek ugyanazon az oldalon jelennek meg. A blokkban alapvetően node-ok címeit sorolom fel, 10-re korlátozva a megjelenést, de mivel ennél több elemről van szó, megjelenik a pager a blokkoknál. Mindegyik view-nál szépen be van állítva a pagerhez tartozó különböző azonosító, annak a problémának az elkerülése érdekében, hogy egymást akarják lapozgatni a blokkok, mindegyiknek külön lapozása legyen.
Ebből következően a pagerek sok blokk esetén ilyesmik is lehetnek:
http://example.com/drupal/akarmi?page=0%2C0%2C0%2C0%2C1
tehát ez lenne a $_GET['page'] értéke:
'0,0,0,0,1'
Ez azt jelenti, hogy a 4-es lapozóazonosítót kapott pager (0-tól számozódik) a második oldalra lett lapozva (0-tól számozódik ez is, ezért 1-es az érték).
Viszont amint a júzer belekattint valamelyik blokkban lévő linkbe, akkor a lapozó már megint visszaáll az eredeti, első oldalra, tehát a $_GET['page'] üres lesz, "elfelejtődik", hogy hol is állt a pager.
Mi lenne ilyenkor a kerülő megoldás, hogy a blokkban lévő linkekre kattintva megjegyződjön a pager száma (hozzácsapódjon a ?page=XYZ query string)?
Ja, fontos, hogy ugyanez a blokk megjelenik a konkrét node-oknál is.
Minden egyes view-nál a title mezőnél pipáljam be a mező kimenetének felülírását, és manuálisan állítsam át?
Csak mert az nyilván nem megoldás, hogy MINDEN linkhez hozzácsapom az említett query stringet, mert akkor másik oldalakon lévő tök más blokkok is eleve lapozva lennének, az meg megint nem jó.
Egyelőre nem látok nagyon jobb megoldást, na meg esetleg ha nagyon akarom, még jQuery-vel is megoldható a dolog, de akkor már sztem szerveroldalon kéne.
Remélem, sikerült valamennyire érthetően fogalmazni. :D
Köszi!
Melyik hookot kéne használni itt a linkek felülbírálására?
Itt még azon gondolkozom, melyik hook lenne a megfelelő a linkek hrefjének felülbírálására, ha mondjuk konkrétan csak két, Views által legenerált blokkban szeretném hozzácsapni a
$_GET['page']
értékét (amennyiben be van állítva).Ha theme-ből bírálom felül, akkor a theme_link() nem megfelelő, mert onnan még nem derül ki, hogy én most egy view blokkjának linkjét szeretném felülbírálni.
Minden linkhez hozzácsapni a
$_GET['page']
-et viszont megint nem jó, ahogy írtam is, mert akkor mindenhova be lenne drótozva, hogy hányadik oldalra lapozzon, olyan oldalaknál is, ahol tök más blokkok lapozhatók.Még ilyeneket nézegettem, mint a template_preprocess_views_view() és hasonlók, de konkrét megoldásra még nem jöttem rá (hogy a linkek még ne legyenek komplett HTML-re legenerálva, de bele lehessen még szólni időben, hova mutassanak (href felülbírálása)).
Ötlet?
Kicsit asszem túlbonyolítottam a kérdést.
A kérdést le lehetett volna egyszerűsíteni: a lényeg, hogy a Views által generált listában a node-okra hivatkozott címmezők href attribútumát szeretném felülbírálni.
Ide is felraktam a kérdést, hátha:
http://drupal.stackexchange.com/questions/51788/views-how-to-override-a-...
Aztán felraktam egy példaexportot a lehető legegyszerűbb blokk típusú view-ról, ami az Article típus node-jait listázza sima HTML-listában, a konkrét node-okra linkelve. Na, ezeknek a
href
-jeit szeretném én felülbírálni úgy, hogy hozzácsapok még egy query stringet.http://pastebin.com/tmq0kZwT
csak a mezőt akarod felülírni
annak is van tplje. aminek tplje van prerpocesse is. a nézeted szerkesztésekor a theme information linkre kattintva megkapod az összes abban a nézetben felhasználható tpl listáját. bogarászd ki a title meződét.
-
clear: both;
áhhh.... köszi szépen!! :)
Miért akarom mindig agyonbonyolítani? :D (költői kérdés)
Tényleg így a legegyszerűbb, köszönöm szépen.
Tehát a teendők:
views-view-field.tpl.php-ból lemásolni egy példányt, és ilyen módon elnevezni:
views-view-field--NEZET-MACHINE-NAME--BLOCK-NÉZET-MACHINE-NAME--title.tpl.php
ezenbelül egyelőre ezt műveltem:
direkt bent hagytam a kikommentezett összerakott
$output
változót, hogy látható legyen, hogy az az eredeti.Az előbbi kód mindenesetre pont azt csinálja, amit kell.
-----------------
De meg fogom próbálni a preprocess-ben is összerakni, érzésem szerint ennek a kódnak inkább ott lenne a helye.
Arról viszont ezt találtam:
http://drupal.stackexchange.com/questions/22878/preprocess-views-view-sp...
--> http://drupal.org/node/939462#comment-4476264
eszerint valahogy így lehet workaroundot írni:
Ha van még ezzel kapcsolatban valami meglátásod, azt előre is köszönöm.
===========
SZERK.:
ja, ez a views_view_fields-re vonatkozik, többesszámban, pedig nem mindegy, nekem most az egyesszámú kell. Lehet, hogy annál egyszerűbb.
A megoldás, preprocess-szel
A korábban említett
views-view-field--NÉZET-MACHINE-NAME--BLOCK-NÉZET-MACHINE-NAME--title.tpl.php
fájlok feleslegesek, egyébként is hatékonyabb preprocess függvényekből felülbírálni ezeket a változókat, mint magából a template-fájlból. Cache-törlés után tehát töröltem őket, és felülbíráltam atemplate_preprocess_views_view_field()
függvényt a saját theme-emben, majd az abban szereplő kódból csekkoltam, létezik-e az adott scope-ban olyan függvény, mely külön az adott nézet adott megjelenítésére vonatkozó preprocess, és ha igen, meghívtam azt is - mint kiderült, ezek a függvények speciel automatikusan nem hívódnak meg.Az alábbi kód megfelelően működik tehát a "Content: Title" belinkelt fieldjénél, hozzácsapja a
$_GET['page']
-et, vagyis a pager adott pozícióját: