Adott:
- Egy "Legfrissebb hozzászólások" blokk.
- A hozzászólások több oldalon (lapozóval, hierarchikusan) jelennek meg és a legfrissebbek vannak hátul.
Feladat:
A legfrissebb blokkban, egy hozzászólás cím hivatkozása a megfelelő oldalra/hozzászóláshoz vigyen.
Probléma:
Új hozzászólás esetében az utolsó oldalra kell vinnem a látogatót. Különösebben ez nem is gond, egy kis trükkel megoldható: az URL-t felparaméterezem egy nagy page azonosítóval, pl.: ...?page=999, így biztos az utolsó oldalt nyitja.
A probléma akkor áll fenn, ha az új hozzászólás válasz vmelyik előzőre - pl. több oldal esetében az első oldal első hozzászólására válaszol. Így az első oldalra kellene navigálni a felhasználót.
Milyen megoldási javaslataitok van erre? Nekem ezek jutnak eszembe:
1) lekérni a blokk megjelenítésekor, hogy a hozzászólás hányadik oldalon jelenik meg - ez nekem nem tetszik, mert szerintem felesleges erőforrást emészt. Megjelenített hozzászólásonként:
- lekérni, hogy a hozzászólás node-jához mennyi hozzászólás van (SQL),
- lekérni, hogy az aktuális hányadik (vszínű ehhez is SQL kell)
- hozzászólások/oldal -ból kiszámolni, hányadik oldalon van.
2) quote module + hierarchia kikapcsolása - így mindig az utolsó oldalon jelenik meg a legfrissebb hozzászólás és ott van az idézet is - a hozzászólás amire válaszolt. Nem megfelelő, mert hierarchiás megjelenítést ki kell kapcsolni (ami adott).
3) írok a drupal.hu-ra és hátha kiderül az ideális megoldás :)
nem tudok jó megoldásról
Az a gond, hogy a # után rész nem kerül elküldésre a szerver felé, tehát azt a szerver oldalon nem tudod kideríteni. Az egyik lehetőség, hogy saját modult fejlesztesz mint amit az egyben írtál. A másik, hogy nem xdb, hanem 100x darab hozzászólást jelenítesz meg. ;)
Sajnos a Drupal értelmes eszmecserékre lett kitalálva nem végnélküli flamelésre. ;)
pp
Palócz István
https://palocz.hu | https://tanarurkerem.hu
Azért kösz az eszmecserét :)
Persze a "jó megoldás" mindig relatív - néha meg szubjektív :)
Vszínű a v1 nem végtelen számú blog/blokk esetében, jó cachel párosítva nem is olyan rossz.
Egyébként #utáni részt akár plusz URL paraméterként is oda lehet biggyeszteni, nem? Segítene bármiben is? Ebben az esetben valójában csak a hozzászólás azonosítójáról van szó.
Elméletileg az is egy megoldás, hogy plusz paraméterben nem a comment ID-t, hanem az eredeti üzenet (amire a válasz történt) azonosítóját küldöm vmi egyedi megjelenítés oldalra - ahol a cikk, alatta pedig csak az eredeti üzenet, és a hozzá tartozó válaszok vannak. Ez a megjelenítés lehet egy views blokk pl.
Ez szerintem több bonyodalmat okozna és megbontaná a megjelenítés egységét is - normál cikket nézve minden hozzászólás megjelenik, a blokkból klikkelve meg csak 1-2, és ez zavaró.
Szóval maradok az egyesnél:
- saját module
- vagy views lekérés eredményét használva, vagy a module-ban saját query
- az eredmény blokként visszaadva
Teljesítmény optmalizálás szempontjából finomítani lehet:
- a blokk tartalmát (cache) file-ból (pl. modulneve_delta.html) kéri le
- amennyiben nem létezik a file: lefutnak a queryk és a kimenet blokként visszaadva megjelenik, plusz file-ba írás
- nodeapi-ban: hozzászólás beküldés/törlés/módosítás esetében a cache file törlése
nem kell ilyen manuál-cache -t csinálnod ám :)
ha mondjuk views blokkot választasz, azt a rendszer cacheli majd szépen.
ha saját modulodban saját lekérdezéssel állítod elő a blokkod, akkor is cacheli a drupal.
nem kell neked fileba írogatnod, gondold el, a világ egyik legjobb cms frameworkjéről beszélünk, az hogy tud kesselni, tök alap.
szépen is néznénk ki ha minden blokkra nekem kéne megoldani, hogy fileba kiírás meg ilyenek.. szerencsére nem így van.
-
clear: both;
Tudok róla, de ezzel
Tudok róla, de ezzel megspórolok egy adatbázis lekérést ;) Persze ebben az esetben nincs (sok) értelme, egyetértek.
A legjobb vmi boost module féle lenne - de azt ugye pl. felhasználókra szabni nem lehet.
ahhh
én kérek elnézést, nem volt még dolgom olyan nagy látogatottsággal, hogy egy lekérdezést megéreztem volna.
-
clear: both;
Issue a do-n
http://drupal.org/node/26966
Szóval nem ismeretlen a probléma és dolgoznak rajt. Ha van időd akkor segíts a tesztelésében.
pp
Palócz István
https://palocz.hu | https://tanarurkerem.hu
A javasolt módszerek nekem
A javasolt módszerek nekem nem működtek, vagy nem jól állítottam be őket. : (
Van valakinek D6-ra használható megoldása?
Views-zal listáztatom ki a hozzászólásokat, oda kellene működő comment link.
Végül is a Permalink nevű
Végül is a Permalink nevű modul segített, a Views-nál pedig az "Output this field as a link" beállításnál a permalinkkel egyező output-ot adtam meg: comment/[cid]#comment-[cid]
/A [cid] valójában egy "Hozzászólás: Azonosító" mező./