Sziasztok!
Egy
ilyet
készítek:
+---------------------------------------------------------+ |node/1 (téma tartalomtípus) | | | +---------------------------------------------------------+ +---------------------------+ +---------------------------+ |node/2 | |node/3 | |(vélemény tartalomtípus | |(vélemény tartalomtípus | | velemény mellette) | | ellenvélemény) | | | | | | | | | +---------------------------+ +---------------------------+ +-----------------+ +-----------------+ +-----------------+ |Kommentek listája| |Kommentek listája| |Kommentek listája| |-----------------| |-----------------| |-----------------| |A témához-node/1 | |Az bal oldali | |A jobb oldali | |komment1 | |véleményhez-node/2 |véleményhez-node/3 |komment2 | |komment1 | |komment1 | |... | |komment2 | |komment2 | | | |... | |... | | | | | | | +-----------------+ +-----------------+ +-----------------+ +---------------------------------------------------------+ |Hozzászólás űrlap | |---------------------------------------------------------| |Mihez szeretnél hozzászólni? | |o téma | |o vélemény (bal oldali dobozban) | |o vélemény (jobb oldali dobozban) | |+-------------------------------------------------------+| ||Hozzászólás címe... || |+-------------------------------------------------------+| |+-------------------------------------------------------+| ||Hozzászólás tartalma || || || || || || || || || |+-------------------------------------------------------+| | +------------------------------------+ | | | Hozzászólás beküldése gomb | | | +------------------------------------+ | +---------------------------------------------------------+
Ez egy oldal nézet (node/1 téma oldalnézete).
Az oldal már kész van, de a kommentek listái dobozok és a hozzászólás
űrlap beküldése még nincs.
A kommentek listái doboz megvalósítása egyszerűbbnek tűnik, mert a három node-hoz tartozó node tömbben benne vannak a kommentek is, amit ki lehet renderelni blokkban is, ehhez találtam leírást is:
http://www.midwesternmac.com/blogs/jeff-geerling/moving-comments-block-d...
Igaz, nekem D6-hoz kell megoldás, de alkalmazhatónak tűnik a fenti leírás d6-ra is.
Az űrlap létrehozása már nehezebb diónak tűnik. Mert itt el kell választani az űrlapot a kommentektől és egy űrlap kell három különböző node kommentezéséhez.
Az lenne a kérdésem:
- Hogy érdemes ezt megvalósítani? Akár csak felsorolás szerűen a programozás lépései.
- Mire kell figyelni?
- Vagy egyéb tippek.
Igazából egyedül is össze tudnám barkácsolni valahogy az egészet a fenti kiviteli terv szerint, de mivel nagyon új a terület (még soha nem foglalkoztam kommentekkel, eddig nem kellett), ezért jobbnak látom megkérdezni.
Köszönöm előre is a ráfordított időtöket,
Aruna
Konkrétan így állnék neki
A kommentek listái dobozokat így állítanám össze:
- A hook_block()-ban 3 blokk létrehozása.
- A három block tartalmaként a node id alapján kirenderelem a node tömbből a kommenteket.
- Ezzel megvan a kommentek listázása
A hozzászólás beküldése űrlapot pedig így csinálnám:
- Egy teljesen egyedi űrlapot hoznék létre egy blokkban.
- Az űrlap elküldi a node id-ket is, így a hook_form_submit() függvényben betöltöm, módosítom a node tömböt (a komment részét bővítem) és elmentem a node-ot (node_load() és node_save()).
- Visszairányítom a user-t ugyanarra az oldalra, ami már mutatja az új hozzászólást a megfelelő komment blokkban.
Így érdemes?
JavaScripttel megfelelő kommentdoboz megmutatása?
Nekem kicsit favágóbb módszer jutott eszembe, mi van, ha egyszerűen írsz egy nagyon lájtos jQuery-kódot, ami a megfelelő kommentblokkot megjelenítené akár .fadeIn() effekttel, amikor rákattint a júzer a megfelelő blokkhoz való kommentelésre szolgáló gombra/linkre/rádiógombra?
Ehhez persze az kell, hogy mindegyik kommentblokkot eleve megjelenítsd az oldalon, csak REJTVE, de a megfelelő rádiógombot bejelölve beúszna mondjuk a kiválasztott kommentblokk, és csak akkor válna láthatóvá. Nyilván amikor másik rádiógombot választ ki a júzer, akkor eltünteted a jelenleg láthatót, és megjelenítenéd a kiválasztottat.
Ez nagyon jó ötlet
és így nem kell saját formot írni. Hiszen amúgy is van alapértelmezett.
Itt az a kérdés le tudom-e választani a komment bevitelt a komment megjelenítéstől, azaz hogy bárhová kirakhatom a default komment beviteli formot, pl. másik blokkba? Ez nem teljesen világos még.
Annyira nem rossz a saját
Annyira nem rossz a saját formos dolog sem, de valszeg a rendes comment formal is meg lehet csinálni, hogy form_alterben belerakod a saját dolgaidat, form_validateben meg lecseréled a form_state megfelelő értékeit a az aktuális node-ra.
Egy biztos, semmiképp sem a node-ot babráld, a comment_save d6-on egy az egyben form feldolgozáshoz van írva, szóval annyi a dolgod, hogy ami $forms_state adatból a comment_save dolgozik, azok legyenek rendben és aktualizálva a megfelelő nodera.
----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.
Köszönöm a válaszaitokat!
A komment bevitelhez végül is csináltam egy egyedi formot, amit kiraktam egy blokkban.
A formhoz tartozó submit függvényben összeraktam az $edit tömböt, amit Gábor által javasolt comment_save() vár.
Igaz ezzel a megoldással most csak új kommenteket tudok létrehozni, a meglévőket szerkeszteni, vagy törölni nem, de ezt most nem kell.
A listázáshoz is elég volt egy függvény, amit a blokkok tartalmát adja: comment_render($node)