Hali!
Olyan problemam van, hogy a webform modul altal kikuldott levelhez kellene csatolnom egy PDF-et, amit a bekuldott eredmenyek alapjan allitok ossze, Ehhez szuksegem lenne a nid (node id) es a hozza tartozo sid (submission id) ertekekre.
Azt talaltam ki, hogy a hook_form_alter segitsegevel lefuttatok egy egyedi submit-ot es itt elmentem a szukseges valtozo ertekeket, es amikor a level kuldes van akkor a hook_mail_alter(&$message) -nel eloszedem es hasznalom. Igen am de a level kuldes elobb van mint, ahogy az en submit hookom lefut :), ha a sajat submit hookot teszem elore akkor meg a sid erteket nem tudom meg.
Van egy halvany remenysugar amit talaltam, reszlet a webform_client_form_submit fuggvenybol:
<?php function webform_client_form_submit($form, &$form_state) { global $user, $base_url; ... foreach ($emails as $cid => $email) { $messages[$cid] = theme(array('webform_mail_'. $node->nid, 'webform_mail'), $form_state['values'], $node, $sid, $cid); $headers[$cid] = theme(array('webform_mail_headers_'. $node->nid, 'webform_mail_headers'), $form_state['values'], $node, $sid, $cid); ... } ... } ?>
Ezekre a theme fuggveny hivasokra ra lehet kapcsolodni valahogy modulbol?
Ha valakinek van egyeb otlete szivesen fogadom...
(Csak modulbol mukodo megoldas erdekel)
hook_theme
implementálod a theme hook-ot és felveszed benne a webform_mail_$nid (mondjuk ha a webform a 25-ös node, akkor webform_mail_25) sminket amire olyan függvényt vagy akár smink fájlt raksz, amilyet akarsz. Ha automatizálni akarod, tehát nem bedrótozni, az már izgalmasabb)
pp
Palócz István
https://palocz.hu | https://tanarurkerem.hu
nem sminkbol
Ehhez a smink fileokat a smink konyvtarba kellene tenni, en meg sajat modulbol akarom beallitasoknak megfeleloen modositani a levelet. Tehat ez a sajat smink file nem lehet megoldas :(.
---
http://drupalaton.hu
Pedig az
Hook_theme-t nem is tudsz modulba tenn! Nézz bele a node modul könyvtárába és egyél sok beiglit
Palócz István
https://palocz.hu | https://tanarurkerem.hu
Pedig dehogy :)
Modulba is tudsz tenni hook_theme()-et:
"Register a module (or theme's) theme implementations."
Mellesleg a hook_theme nem tudom hogy hogyan oldaná meg york problémáját, szerintem ő arra kérdezett rá, hogy felül tudja-e írni a sminkfüggvényeket modulból. A válasz igen. Egyszerűen ha van egy ilyen sminkfüggvény:
akkor azt a sajat modulodban felül tudod írni úgy, mintha a hook_smink_fuggveny_neve() hurkot implementálnád:
Továbbá ajánlott drupal.org-os oldal a sminkfüggvényekről.
--
Tolmács Márk
Drupal bandita
nyílván, mi van?
Hülyeséget írtam. Csak modulba tudsz tenni hook_theme-t, sminkbe nem. (ezt akartam írni de a smink helyett modult írtam.)
Ezért sem értem, hogy Yorknak miért nem jó az én megoldásom, amikor az pontosan az amit kért: nem smink, hanem modul megvalósítást kap.
Én még sose csináltam ilyet amit írsz de a dokumentáció szerint hiába valósítod meg egy modulban a smink függvényed azt nem fogja meghívni a smink motor. Pont ez a baja Yorknak, hogy nem tudja modulból hogyan írja felül ezt a kimenetet. Jelölte a halvány reménysugarat és én az az irányú továbbhaladást kívántam segíteni.
Ha belenézünk a webform modult kódjába akkor láthatjuk, hogy a webform_theme függvényben csak a webform_mail_message smink függvény kerül csak implementálásra az egyes node-okhoz való függvény nem. Adott tehát a lehetősége, hogy olyan modult fejlesszünk, ami pl. a webformhoz csatolt fájlokat a kiküldött levélhez is csatolja. Kezdetnek megteszi az is, hogy az ember tol egy webformot, megjegyzi a nid-jét és azt implementálja a saját moduljába. Ez az implementálás két lépésből áll.
1. a hook_theme kampót implementáljuk és megmondjuk a Drupalnak, hogy mely függvényünk fogja feldolgozni az adott adatokat.
2. megvalósítjuk a függvényt.
Amint egy bedrótozott függvénnyel ez megvan lehet tovább lépni az általános megoldás felé.
Ezt a lehetőséget biztosítja számunkra a webform, mely szerintem nem a legjobb, hisz a modulokkal való integráció biztosítására más mechanizmus(module_invoke) való.
Amit még meg lehet próbálni, hogy mi van akkor, ha megpróbáljuk felülírni a smink tömböt.
de ez nem tudom, hogy működik-e mert nem próbáltam. ;)
pp
Palócz István
https://palocz.hu | https://tanarurkerem.hu
Bocsánat a kekeckedésért, de
Bocsánat a kekeckedésért, de a sminkben is lehet implementálni a hook_theme()-et, csak semmi értelme, mert a phptemplate engine megteszi ezt helyettünk. ;)
A félreértésért meg elnézést, a lényeg hogy york megkapta a válaszát és remélhetőleg sikeresen megoldotta a problémáját.
--
Tolmács Márk
Drupal bandita
problema megoldasa kesik
Olvastam a valaszokat, eloszor picit felre ertettem amit javasoltatok, de most mar tudom mire gondoltok.
Ki fogom probalni es leirom, ha sikerult megoldanom a dolgot.
Az utobbi idoben eleg keveset ultem gep elott es ha minden jol megy az ev hatralevo reszeben ezen nem is igazan akarok valtoztatni.
---
http://drupalaton.hu
a megoldas
A megoldas nalam az lett:
Ezzel felul irtam a webform modul ezen hook-jat, igy a sajat konyvtaraba levo webform-mail.tpl.php file fut le.
Es azert, hogy az eredeti file is lefusson (ami fontos :) ez kerult a file vegere:
Azt hogy a smink konyvtarban talalhato fileok rendesen lefutnak-e nem ellenoriztem, de szerintem ezt nem befolyasolja a modositas.
Koszonom a segitseget.
---
http://drupalaton.hu
ez 5.x drupal vagy 6.x?
azért kérdezem, mert 6.x -ben ehhez (más template legyen értelmezve) nem kell ám modul! (figyelj márk;) template.php -ból egy template_preprocess_ függvénnyel is felül lehet bírálni, hogy melyik tpl.php -t használja a drupal. gondolom így hívják a webform előfeldolgozóját, hogy template_preprocess_webform .. de az is lehet, hogy template_preprocess_webform_mail, nem tudom, meg kéne nézni a modulba. ebben függvényben egy tömbben van minden, ami menni fog a .tpl.php -nak. a tömb tartalmazhat 'template-suggestions' kulcs alatt egy másik tömböt, amiben megadhatsz bármilyen használandó .tpl.php -t, akár egy sajátot is, elég csak értéket adni neki, valahogy így:
-
clear: both;
Erről az apróságról megfeledkeztem.
Template_preprocess-t megint elfelejtettem. (Lásd a másik hozzászólásom)
:)
Nagyon tetszik!
--
Tolmács Márk
Drupal bandita
felre ertesz
6.x-rol van szo. Fontos, hogy sajat modulbol lehessen megoldani a dolgot, mivel a modul egyik funkcioja, hogy a kikuldot levelhez hozza csap egy pdf-et.
Igazabol nem ertem amit irsz. Ha sminkbol akarnam megoldani, az nem lenne nehez, mivel akkor webform-mail.tpl.php filet kellene implementalnom.
A cel az, hogy a sajat modulom egy fuggvenye mindenkepp megkapja vezerlest amikor ez a hook ertekelodik ki.
A webfom modul rendelkezik egy ilyen preprocess fuggvennyel:
Mit kell nekem tennem?
---
http://drupalaton.hu
ahány ház annyi szokás
láttam én már .tpl.php -ban sql lekérdezést ;)
csak erre írtam, hogy ehhez még nem feltétlenül kell modul. nem tudom pontosan mit csinál a modulod és hogyan, nem írtam, hogy rossz a megoldásod, csak egy másik irány is létezhet arra világítottam rá. persze ez nagyban függ attól, hogy pontosan mit is kell csinálni, meg hogy kinek mi a kényelmes.
szerintem nem feltétlenül kell ahhoz egy saját modul, hogy egy webform kimenő leveléhez csatolj egy filet. talán még akkor se, ha dinamikusan kell eldönteni, hogy milyen filet kell csatolni.
-
clear: both;
a modul adott
A modul egy webform eredmenybol general a beallitasoknak megfeleloen egy pdf-et.
Az egyik funkcioja az, hogy a kitoltes utan a levelhez csatolja a pdf-et.
Mindenkepp olyan megoldast keresnek, ami modulbol megoldhato, es nem kell meg ezen kivul sminkelessel is jatszani.
Reszletekert olvass vissza, leirtam mindent.
---
http://drupalaton.hu
jó, igazad van
csak az adott hozzászólásra reagáltam nem figyeltem hogy miről folyik a diskurzus. bocs.
-
clear: both;
semmi gond :)
Semmi gond, ha van otleted szivesen veszem.
Most ugy tunik marad a megoldasom, ha valaki egyedi sminket csinal figyeljen erre.
Meg a modul beallitasainal felhivom erre a figyelmet, hogy mit kell beletenni a sajat sminkbe, hogy menjen a PDF kuldes.
---
http://drupalaton.hu
Próbáld ki sminkkel együtt is
Tesztelni kéne, de érzésem szerint több hiba lehetőség is van.
Nem mindegy a modul betöltési sorrend.
Amikor a rendszer végig megy a hook_theme() implementációkon és a webform van előbb és utánna a sajatmodul, akkor rendben van, de ha fordítva akkor, a webform templétje fog lefutni. Tehát kimaradnak a módosításaid.
Valószínűleg tesztelésnél szerencséd volt a sorrenddel. Próbáld ki {system}.weight-ben átírni az értékeket szóban forgó modulok rekordjaiban. (cache ürítés!)
Amennyiben a sminkedben is van webform-mail.tpl.php akkor a modulok teljesen kimaradnak.
Ha egy smink változtatni akar a levél kinézetén (a sminkek már csak ilyenek), de hozzá akarja adni a sajatmodul szolgáltatását, akkor be kell töltenie a modules/sajatmodul/webform-mail.tpl.php-t ami betölti az eredeti webform sablont. Ezzel duplikálva az eredményt.
Amit kipróbálnék:
A sajátmodul létrehoz egy függvényt, olyan paraméterlistával hogy az a sablon fájlokból meghívható legyen.
(saját webform-mail.tpl.php helyett.)
Ügyebár egy másik modul|smink sablonját nem illik módosítani, tehát marad a saját smink változtatása.
Le kell másolni a webfom sablonjának tartalmát és belerakni a függvény hívást.
Ezzel az a baj hogy kell egy smink vagy nulláról, vagy öröklődéssel. Továbbá a webhelyen engedélyezett összes sminknek tudatában kell lennie ennek.
Persze mint tudjuk a Drupal egy mindre rávehető tartalom kezelő. Ezért szeretjük.
Ha a smink motor (phptemplate.engine) teszi bele a sajatmodul változatatását a sablonba, akkor a többi sminknek nem kell csak ezért létrehoznia a webform-mail.tpl.php fájlt.
Csinálj egy másolatot erről
themes/engines/phptemplate/phptemplate.engine
ide
sites/default/themes/engines/phptemplate/phptemplate.engine
van benne 2 függvény az egyiket kell módosítani
Eredetileg a smink motor nem arra van, hogy sminkeljen, de a hozzáadott sornak köszönhetően most már azt is tud :)
Aztán ide rakod a megfelelően módosított webform-mail.tpl.php fájlt. (Az phptemplate.engine mellé)
Így smink nélkül is működnie kell. Cache ürítés az kell, hogy a {system}.owner a megfelelő értékeket tartalmazza a sminkek esetében.
Ez az én elméletem, aztán ha veszed a fáradtságot akkor majd te elmondod hogy milyen a gyakorlat :-DD
Tul bonyolult
Ez tul bonyolult es sok a hiba lehetoseg a site epitese kozben. A sminkkel kapcsolatban igazad lehet. Aboros otlete tetszik meg fogom vizsgalni.
---
http://drupalaton.hu