Három egy oldalon lévő node kommentelése

aruna képe

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

Melyik modulhoz, modulokhoz kapcsolódik a téma?: 
Drupal verzió: 
aruna képe

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?

0
0
Sk8erPeter képe

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.

2
0
aruna képe

é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.

0
0
szantog képe

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.

1
0

----
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.

aruna képe

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)

0
0