Webform Variablen mit in email ausgeben
Eingetragen von mikeschneik (55)
am 25.03.2010 - 15:44 Uhr in
am 25.03.2010 - 15:44 Uhr in
Ich habe in einem Formular ein Dropdown erstellt, dass mit select, option und value siehe Self_HTML arbeitet.
Hier stößt Webform an seine Grenzen. Da es keine Values verarbeiten kann, habe ich das ganze Formular auf "Full-HTML" gestellt und das Dropdown selbst geschrieben.
Unter dem Dropdown-Feld können User ganz normale Felder aus Webform (Name, email etc) ausfüllen und sollen es mir per email senden.
Das klappt soweit auch ganz gut. Bis auf dass ich die Auswahl des Dropdown nicht per email mit übermittelt bekomme.
Wie kann ich die Variable des Dropdown mit übermitteln?
Danke
- Anmelden oder Registrieren um Kommentare zu schreiben
Neuer Versuch
am 26.03.2010 - 08:54 Uhr
Es würd mir auch ne Lösung reichen, Variablen aus nem HTML- bzw. PHP Tag mit zu übermitteln.
Sprich ich lasse diese derzeit in Javascript einfach als ALERT ausgeben, will aber genau dieses in meinen Node
integrieren bzw. irgwendwie mit via email übertragen.
Im Notfall schreibe ich auch das ganze Formular in PHP selbst, müsste nur wissen, wie ich es in Drupal übergebe.
Wenn da jemand Tipps oder Links für mich hat, wäre das echt toll!
DANKE
ICH BIN VERZWEIFELT
am 26.03.2010 - 13:17 Uhr
Seit 3 Tagen verbringe ich meinen Urlaub damit, eine Seite in Drupal zu bauen. (besser gesagt nur dieses eine sch... Problem zu lösen)
Seit der Zeit bin ich auf der Suche nach einer Lösung von einer Select-option-value Methode
in Drupal zu integrieren. Es handelt sich beim Value, um Artikel-Nummern, die der User nicht sehen soll.
In Webform sehe ich da keine Chance, da es mit dem Value-Tag nicht zurecht kommt.
(Die Auswertung wird einfach nicht via email übertragen)
Im normalen HTML und Javascript-seiten ist das kein Problem und funzt sofort auf einer anderen Seite von mir großartig.
Nur Drupal stellt sich quer.
Selbst einen Button zu einer anderen Homepage von mir mit dortigem CGI Skript verweigert Drupal mir.
Ich bin echt frustriert. Obwohl ich anfangs ein wahrer Drupal Fan war, stehe ich kurz davor das
System wieder runter zu werfen. :-(
BITTE DRINGEND UM HILFE
DANKE
So etwas nennt man wohl einen
am 28.03.2010 - 21:01 Uhr
So etwas nennt man wohl einen Monolog.
Da ich überzeugt bin, dass es nach mir auch weitere User geben wird, die irgendwann auf meinen Beitrag stoßen,
habe ich hier noch ein paar Links zusammengetragen.
dynamische Formulare mit Ahah
Sexy Exposed
Ihr müsste in die template.php eueres jeweiligen Themes. Dort innerhalb der hook_form müsst ihr $form_state einfügen. Das sorgt für die Formular Bearbeitung. Genauere Infos findet ihr hier oder aber auch hier in deutsch.
Neu 1
Neu2
Good Luck
Monologe können passieren,
am 28.03.2010 - 22:02 Uhr
Monologe können passieren, muss aber nicht.
Und irgendwie kann ich mir nicht vorstellen, dass Webform, Werte unterschlägt beim Absenden des Forms. Ich denke mal, es hat schon bei der Einstellung/Erstellung des Formulars gehapert bei Dir.
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Das Verhältnis anderen zu helfen muss höher sein, als von anderen Hilfe zu erfragen/erwarten.
Ein Dialog ist mir allemal lieber als Monolog :-D
am 29.03.2010 - 01:12 Uhr
Moin erstmal,
Ich habe mittels HTML und Javascript eine Funktion geschrieben, die bei Wechsel eines Drop-Down Menüs auch ein Bildwechsel vornimmt.
<select ... onChange="swapImage()">
<option value="../sites/default/files/bilder/platzhalter.jpg">
<option value="../sites/default/files/bilder/art-nr-1234.jpg"> Produkt1 </option>
<option value=" ../sites/default/files/bilder/art-nr-3456.jpg"> Produkt2 </option>
...
</select>
<script type="text/javascript">
function swapImage(){
...}
</script>
<img id="imageToSwap" src="../sites/default/files/bilder/logo.jpg" />
Klappt auch primar. Wenn der User ein Produkt wählt, wird anhand der Artikel-Nr
(die der User nicht aktiv sehen soll, daher brenutze ich einen Value-Wert)
das entsprechende Produktbild neben dem Formular gezeigt.
Nun soll der User aber mir Fragen zu diesem Produkt stellen können.
Also hab ich unter dem Code ein Formular mittels Webform erstellt. (Name, email ...)
Wenn der User auf "Speichern" klickt, landen sämtliche Daten in der Datenbank und somit
auch bei mir als email. Ich kann aber leider nicht sehen, welches Produkt er ausgewählt hat.
Lege ich aber in Webform unter "Formularkomponenten" ein select Feld an, kann ich dort
kein Javascript mit einfliessen lassen, sprich es gibt kein Produktbild für den User :-(
Ich kann zwar dort auch einen anderen Value anlegen, als im Sichtfeld (safe_key|Some readable option)
allerdings wird dieser Value nicht in die Datenbank bzw. email übertragen.
(Wozu gibt es dann überhaupt die Möglichkeit der Key-value pairs???)
Egal, ich bräuchte also entweder die Möglichkeit auf das select-Feld im Webform
mittel Javascript zu agieren, oder aber die Möglichkeit die selbst geschriebene Funktion
mit in die Datenbank bzw. email zu übertragen.
Früher war so etwas kein Problem, da hat mein CGI schön alles übertragen, was der User
im Formular ausgewählt hat, aber wie kann ich das mittels Drupal realisieren?
Dank dir vielmals!!!
Also ich würde eher für die
am 29.03.2010 - 07:08 Uhr
Also ich würde eher für die Bilder, IDs verwenden anstatt Pfade. Und Formulare via HTML und nicht via Form-Api zu erstellen, ist ein ganz schlechtes Vorgehen.
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Das Verhältnis anderen zu helfen muss höher sein, als von anderen Hilfe zu erfragen/erwarten.
Das Problem dabei: ich habe
am 29.03.2010 - 11:18 Uhr
Das Problem dabei: ich habe nicht nur ein paar Produkte, sondern über 7.000.
(Geplant ist auch noch ein Magento Shop, aber eins nach dem anderen)
Daher werden auch die User erst mal nach Kategorie und dann nach Hersteller
gefiltert (mittels Javascript und auch einem DropDown)
Meine jetzigen Daten habe ich von meiner CSV Datei in Excel importiert.
Dort könnte ich dann schnell z.B. vor der Spalte "Artikel_Nr" eine Spalte mit
dem Wert
<option value="../sites/default/files/bilder/"
und hinter die Spalte "Artikel_Nr" eineSpalte mit
".jpg" anlegen.
(siehe unten) Dementsprechend könnte ich via copy + paste relativ schnelleinige hundert Produkte einbauen. (Meine Bilder haben die Namen der Artikel-Nr)
Auch wenn mein Magento jetzt noch nicht steht, möchte ich vorab eine
"Hallo da bin ich Seite", wo man mir schon jetzt Fragen stellen kann.
Wenn du mir zeigst, wie ich IDs auch mit zahlreichen Produkten mit Copy + Paste nutzen kann
(ohne jeden Artikel einzeln anzulegen), dann bin ich dazu gerne bereit.
Aufbau meiner Excel-Struktur
Spalte A | Spalte B | Spalte C| Spalte D
<option value="../sites/default/files/bilder/ | Art-Nr1234 | .jpg"> | Artikelbeschreibung
<option value="../sites/default/files/bilder/ | Art-Nr3456 | .jpg"> | Artikelbeschreibung
Und Formulare via HTML und nicht via Form-Api zu erstellen, ist ein ganz schlechtes Vorgehen.
Wenn mir die Form-Api auch Javascript gestatten würde, hätte ich das Problem nicht. Es war nur Mittel zum Zweck.
Haste nicht ein Link oder
am 29.03.2010 - 09:36 Uhr
Haste nicht ein Link oder sowas. Ich kann mir das leider so schlecht vorstellen.
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Das Verhältnis anderen zu helfen muss höher sein, als von anderen Hilfe zu erfragen/erwarten.
Klick michBei Veränderung
am 29.03.2010 - 12:29 Uhr
Klick mich
Bei Veränderung des Select, wird auch das bild verändert.
Wenn du es im Explorer öffnest kriegst du einen Alert, mit einer Variablen.
(die Artikel-Nr später für den User nicht sichtbar sein) die ich mittels Javascript ausgeben kann.
(bei Firefox funzt. der Alert leider nicht, aber soll ja auch nur als Beispiel sein)
Ich möchte halt, dass zumindest einer dieser Variablen aus dem Javascript auch via
email übertragen werden.
(P.S. rechte Maustaste ist gesperrt - Quelltext über Menü. Wollte vermeiden, dass Rechtsklick auf
Bild und dann "speichern unter")
Sorry, war noch nicht
am 29.03.2010 - 10:32 Uhr
Sorry, war noch nicht veröffentlicht.
Hatte ich im Admin Modus gar nicht gemerkt.
Du musst die Auswahlliste in
am 29.03.2010 - 20:30 Uhr
Du musst die Auswahlliste in das Formular einbauen, ansonsten wird da nie was in der E-Mail landen, weil die Auswahlliste momentan nicht Teil der Webform ist.
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Das Verhältnis anderen zu helfen muss höher sein, als von anderen Hilfe zu erfragen/erwarten.
Ich hab das ja nicht aus
am 29.03.2010 - 20:55 Uhr
Ich hab das ja nicht aus lauter Langeweile gemacht, sondern einfach weil mir Webform
keine Möglichkeit des Bildwechsels (Javascript) gibt.
Hab ein vergleichbares Formular auf ner andern Seite von mir probiert
(ganz normale HTML Seiten) Dort funzt alles primar, auch die Übertragung an mein CGI.
Da wir hier aber keine normalen Seiten sondern ein CMS haben...
Aber du hast recht, mit normalem HTML komme ich bei Drupal nicht weit, dafür brauchts schon PHP.
(bin dort noch absoluter newby, hab sonst nur html und javascript benutzt)
Ich hab heute spät nachmittag endlich mein bestelltes Buch "Das Drupal Entwicklerhandbuch" bekommen, was hier ja auch in der Buchempfehlung steht.
(Gibt ja automatisch 1,- Euro Spende an Drupal ;-)
Dort steht step für step drin, wie man eigene Module baut.
Bin gerade dabei mich in die Formular-Api einzuarbeiten und mein erstes eigenes Modul zu bauen.
Ist gar nicht so leicht und ne Menge Arbeit.
Aber wenn ich die Sache verstehen will, bleibt mir nichts anderes übrig.
Dafür, dass ich vor knapp 3 Wochen noch nie was von Drupal gehört habe...
So, mach mich weiter ans Werk.
Wünsch mir Glück, dass es läuft
Gruß
Mike
drupal_add_js
am 29.03.2010 - 21:09 Uhr
Ich hab das ja nicht aus lauter Langeweile gemacht, sondern einfach weil mir Webform
keine Möglichkeit des Bildwechsels (Javascript) gibt.
Naja, Webform hat damit eigentlich auch nur wenig zu tun.
Was Du tun kannst (ganz ohne FormAPI!):
erstelle Dir in der template.php (falls nicht bereits vorhanden) eine Funktion namens
phptemplate_preprocess_page
mit folgendem Inhalt:<?php
/**
* Override or insert PHPTemplate variables into the templates.
*/
function phptemplate_preprocess_page(&$vars) {
// Bitte die 12345 mit der gewünschten Node-Id ersetzen.
if (arg(0) == 'node' && is_numeric(arg(1)) && arg(1) == 12345) {
// "mytheme" bitte durch den Namen Deines Themes ersetzen.
drupal_add_js(drupal_get_path('theme', 'mytheme') .'/scripts/webform_image.js');
$vars['scripts'] = drupal_get_js();
}
}
?>
Dies lädt die besagte Javascript Datei genau dann, wenn Dein Webform angezeigt wird.
In der Javascript Datei kannst Du jetzt mittels Drupal.behaviors eine Funktion zum Ändern des Bildes an ein beliebiges Objekt binden.
Zum Beispiel an ein Dropdown, welches Du per Webform-Konfiguration erstellt hast.
Beispiel:
Drupal.behaviors.imageChanger = function () {
// Wir hängen uns jetzt einfach mal in das Change-Event des Feldes rein.
$('#node-12345 .cssKlasseDesDropDowns').change(function () {
// Quelle des Bildes ändern auf beispielsweise "http://example.com/sites/default/files/akku-0.png".
$('#idDesBildElements').attr('src', Drupal.settings.basePath + '/sites/default/files/akku-' + $(this).val() + '.png');
});
};
Das sollte eigentlich genügen.
hth,
Stefan
Disclaimer: obiger Code ist vollkommen ungetestet und erhebt aus diesem Grund auch keinerlei Anspruch auf Funktion
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
DANKE VIELMALS :-)
am 29.03.2010 - 22:57 Uhr
Moin Stefan,
das wäre ja zu schön, um wahr zu sein.
Wenn das auch genaus so klappt ? *freu*
Ich werd's gleich mal ausprobieren.
Hab mich genau nach Anleitung gehalten :-(
am 29.03.2010 - 22:51 Uhr
Habe jetzt die webform_image.js angelegt unter /scripts (mein Node-ID = node/300 )
Drupal.behaviors.imageChanger = function () {
// Wir hängen uns jetzt einfach mal in das Change-Event des Feldes rein.
$('#node-300 .cssKlasseDesDropDowns').change(function () {
// Quelle des Bildes ändern auf beispielsweise "http://example.com/sites/default/files/bilder/produkt-big-400/000-vorschau.jpg".
$('#idDesBildElements').attr('src', Drupal.settings.basePath + '/sites/default/files/bilder/produkt-big-400' + $(this).val() + '.jpg');
});
};
Hab dann in meinem node/300 eine Select Liste im Form-Api angelegt namens CssKlasseDesDropDowns
Dort habe ich folgende Werte unter Optionen eingegeben
B55726|Akku1
B55113|Akku2
B55102|Akku3
Meine template.php sieht so aus:
<?php
/**
* Override or insert PHPTemplate variables into the templates.
*/
function phptemplate_preprocess_page(&$vars) {
// Bitte die 12345 mit der gewünschten Node-Id ersetzen.
if (arg(0) == 'node' && is_numeric(arg(1)) && arg(1) == node-300) {
// "mytheme" bitte durch den Namen Deines Themes ersetzen.
drupal_add_js(drupal_get_path('theme', 'pixture') .'/scripts/webform_image.js');
$vars['scripts'] = drupal_get_js();
}
}
?>
Hab es auch schon nur mit "300" (ohne node-) probiert.
Kriege darauf immer Parse error: syntax error, unexpected '<' in /var/www/web62/html/themes/pixture/template.php on line 89, wobei 89 genau der Anfang des Skriptes ist. (* Override or insert PHPTemplate variables into the templates.)
Den Kommentar zu entfernen bringt leider auch keinen Erfolg, habs schon getestet.
Ich muss zugeben, dass mich die Müdigkeit überrumpelt. Werde also gleich ins Bett tapern und morgen noch mal über den/die Fehler nachdenken.
Wenn du (oder wer auch immer) aber schon was siehst ... ;-D
Ich sag dennoch erst mal Danke und bis morgen
Gruß
Mike
preprocess
am 30.03.2010 - 07:23 Uhr
$('#idDesBildElements').attr('src', Drupal.settings.basePath + '/sites/default/files/bilder/produkt-big-400' + $(this).val() + '.jpg');
Heissen die Bilder wirklich "produkt-big-400B55726.jpg"?
Kriege darauf immer Parse error: syntax error, unexpected '<' in /var/www/web62/html/themes/pixture/template.php on line 89, wobei 89 genau der Anfang des Skriptes ist.
Hast Du die Funktion mit den PHP-Tags (
<?php ?>
) in die Datei eingefügt? Wenn ja, nimm die mal wieder raus.Tipp: Beachte die Verhaltensregeln des DrupalCenter.
So, endlich Feierabend
am 30.03.2010 - 17:08 Uhr
Heissen die Bilder wirklich "produkt-big-400B55726.jpg"?
Ok, hab den Slash am Ende vergessen ;-)
Hast Du die Funktion mit den PHP-Tags (
<?php
?>
Stimmt, das hat doch schon mal ganz Ordentlich geklappt. :-)
Jetzt muss ich nur noch sehen, dass das Javascript auch den Bildwechsel durchführt. (bislang noch nicht)
Heute abend bin ich aber nicht zuhause, desswegen schaue ich mir das Morgen an.
Ich werde das Script ja für mehrere Formulare benötigen. (Pro Hersteller ein eigenes Formular)
Diese möchte ich natürlich nicht node/300 benennen, sondern z.B. Werkzeugakku Makita bzw. Werkzeugakku Bosch etc.
Dann kann ich doch vermutlich einfach mit PHP einen Array erzeugen und dort die Namen eingeben, richtig?
Ich probier mich die Tage dort weiter.