Visszajelzés minden oldal alján

janoka képe

Sziasztok!

Egyik ügyfelünknél merült fel, hogy a termékeihez, minden oldal alján egy visszajelző űrlapot szeretne. Ami eddig felmerült:

1.) Feedback modul:
Előnye:

  • Minden oldalon megjelenik.
  • Jól követhető, hogy az üzenet honnan jött.

Hátránya:

  • Csak egy mezőt kér be, az üeznetet. Nem lehet megtudni az érdeklődő kiegészítő adatait: név, e-mail, telefon.
  • Nem küld e-mail-t a beküldésről. (Ebben nem vagyok biztos)

2.) Comment (core) modul:
Csak elméleti alapon végigvezetve:
A hozzászólások beküldését engedélyezni alapban mindenkinek. Hozzászólások hozzáférése csak az admin számára. Talán form_alter-rel változtatni a comment modul mezőit, hogy a további adatokat is bekérje: név, e-mail, telefon.
Trigger-nél megadom, hogy a comment beküldéskor egy levélküldési akció legyen végrehajtva.

Kérdéseim:

  • Mi a véleményetek a fentiekről, van-e esetleg kiegészítő javaslat?
  • Tudok-e olyan modul-t, amellyel a fentieket egyszerűbben kivitelezni lehet?

Köszönettel:

János

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

kiegészítés: valami captchat ne felejts el hozzárakni.

0
0

---
Tévedni mindenkinek szabad, csak a mérnöknek észre kell vennie.

janoka képe

Nem rossz ötlet!

0
0
Bálint képe

Mi lenne, ha a visszajelzésed egy külön tartalomtípus lenne, aminek a beküldő űrlapját megjelenítenéd a termékeid adatlapján?

Így gondolnám:
(A termék tartalomtípusodat 'product'-nak fogom hívni, a visszajelzést 'feedback'-nek.)

template.php-ban preprocesszel hozzáadunk egy új változót a node-product.tpl.php-hez:

<?php
function SMINKEDNEVE_preprocess_node(&$variables) {
  if($variables['node']->type == 'product') {
    $node->type = 'feedback';
    module_load_include('inc', 'node', 'node.pages');
    $variables['feedback_form'] = drupal_get_form('feedback_node_form', $node);
  }
}
?>

Aztán a node-product.tpl.php megfelelő helyén:

<?php print $feedback_form; ?>

Annyit szépítenék még rajta, hogy tennék bele ilyen jquery-s lenyílós "varázslást", ezt a tpl-ben könnyen megteheted.

A visszajelzés tartalomtípusba tehetsz egy node reference mezőt, amire hook_form_alter()-ből azt mondod, hogy '#access' = FALSE, aztán beállítod neki '#default_value'-nak az éppen megtekintett terméked node id-ját. Ezt a drupal_lookup_path() (nyilván használsz útvonal álneveket) és az arg() függvények segítségével kiderítheted.
Ja, és az előnézet gombot is unsetelném.

Az értesítő e-mailek kiküldésére Rules modult használnék, ezzel tokenek segítségével (persze kell a Token modul is) még a bevitt mezők értékeit is nagyon szépen ki tudod küldeni akár egy egész felhasználói csoportnak is.

A visszajelzéseket könnyen ki is listázhatod egy view-ban, ha szükséges.

Én valahogy így csinálnám, persze lehet, hogy mindjárt beírja valaki egy modul nevét, ami pont ilyesmit tud, és feleslegesen gépeltem egy csomót... :)

0
0
janoka képe

Kedves Bálint!

Érdekes megközelítés, hogy a feedback-ket külön tartalomtípusnak vennéd fel a termék oldalán. Ilyen megoldásra nem is gondoltam volna. :)
Szinte biztos, hogy a fenti problémára megvalósítást kér az ügyfelem. Amikor kész, akkor mindenképpen visszajelzek, hogy mi lett a megoldás.

Köszönöm visszajelzésed, igazán hasznos volt!
Üdv:

János

0
0
szantog képe

Még egy ötlet:
Engedélyezed a komment lehetőségét, beállítod a formot. Attól függően, hogy hogyan kell tárolni a feedback-et (elég, ha emailben kimegy, vagy legyen "tartósan" elmentve) létrehozol egy rulest az after saving a comment eseményre.
Ebben a rules-ban vagy összeszeded a komment mezőit, és elküldöd emailben valakinek, vagy egy új tartalomtípusban új tartalmat hozol létre a komment mezőiből. Az új tartalomtípus jogosultságait meg úgy állítod, ahogy szeretnéd.
ÉS a legvégén törlöd az új commentet (szerintem ezt lehet..), és beállítasz egy Köszi a visszajelzést üzenetet.

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

janoka képe

Ilyesmire gondoltam én is, hogy a comment-tet használom fel. Egy gond adódik, hogy további mezőket kellene a visszajelzőtől bekérnem. Azon gondolkoztam, hogy erre esetleg a form_alter jó lenne, bár ilyet sosem csináltam még.

Üdv:

János

0
0
byCrystal képe

Esetleg Author Contact modul.
Elvileg azt tudja, amit szeretnél.
Egy hátránya van, a node szerzőjének küldi az e-mailt, így több felhasználós környezetben nem igazán tudsz egy e-mail címet használni.

0
0
Den képe

+ a webform_bloks modul?

Ezzel csinálhatsz egy formot, a blokk modul blokkba teszi, és már csak a megfelelő tartalmak alá a blokk adminban oda kell rakni.

Elmenti db-be, küldi mail-be az eredményeket... Hogy hogy lesz ott az, hogy melyik tartalomhoz küldték be? Meg kell nézni, vannak default értékek, hátha van egy node id is. Vagy a webformot preprocessben (ugye aboros?:)) megpiszkálod, és egy kis kóddal (textmezőbe beleírod, majd a textmező típusa legyen hidden), vagy js-el odateszed.

Én ezt csinálnám, nekem ez tűnik a legrövidebb útnak.

0
0
janoka képe

Köszönöm minden hozzászólónak a segítséget, különösen Den-nek!

A Den által adott megoldást sikerült kivitelezni.

Felhasznált modulok:

A megoldás:
Létrehoztam egy klasszikus Webform űrlapot, amelyen a szokásos módon a mezőket -- ahogy a fordításban szerepel: összetevőket -- megadtam.
Létrehoztam egy "honnan" rejtett (hidden) mezőt, amelyben azt az url-t tárolom, ahonnan a kérés érkezik.
Alapértelmezett értéknél:

http://%site/%get[q]

szerepel, a webform tokenje teszi ezt lehetővé (ahogy olvastam nem szükséges a Token modul hozzá, hogy működjön).

Az űrlap szerkesztési (edit) felületén be kell kapcsolni, hogy az űrlap számára egy blokk készüljön: "Generate a block".

Majd a Blokkoknál bekapcsoltam, hogy az így már elérhető blokk látható is legyen. "Megjelenítés bizonyos oldalakon" beállításnál meghatároztam, hogy csak a "termekek/*" rész alatt jelenjen meg a blokk. Így határoztam meg, hogy más egyéb oldalakon ne.
(Megjegyzés: CCK-val külön termék tartalomtípust hoztam létre, amely a pathauto-val a /termekek/* helyre kerül.)

Demo: itt

Üdv:

János

0
0