[gelöst] Artikelnummer in Mail (Kontaktformular) ausgeben.
am 02.04.2013 - 10:09 Uhr in
Hallo,
ich habe ein Problem bei dem ich nicht recht weiterkomme und hoffe auf eure Hilfe.
Hoffentlich verwirrt die Überschrift nicht, aber ich wuste nicht wie ich es sonst beschreiben könnte.
Auf einer Inhaltsseite wird ein Produkt beworben.
Diesen bekommt mit per Unique field Modul eine eindeutige Artikelnummer.
So weit so gut.
jetzt möchte ich gerne unten auf der Inhaltsseite, die der Besucher aufruft einen Link zur einem Kontaktformular einfügen.
Über dieses Formular soll der Besucher direkt eine Anfrage zum Produkt stellen können.
Es soll also jeweils die Artikelnummer (Unique field) mit in der Mail ausgegeben werden,
so dass der Empfänger sehen kann, für welches Produkt sich der Besucher interessiert.
Hat vielleicht jemand eine Idee, wie ich das hinbekommen kann?
- Anmelden oder Registrieren um Kommentare zu schreiben
Wenn Du Webform für das
am 02.04.2013 - 10:24 Uhr
Wenn Du Webform für das Kontaktformular verwendest kannst Du die Artikelnummer als GET Parameter übergeben und in den Betreff der Mail übernehmen oder als HIDDEN Field hinterlegen.
Schau mal...
am 02.04.2013 - 12:58 Uhr
...in diesen Thread. Da gehts um etwas ähnliches.
Das schaue ich mir mal an.
am 02.04.2013 - 16:10 Uhr
Das schaue ich mir mal an. Schon mal vielen Dank!
Sense schrieb Wenn Du Webform
am 05.04.2013 - 13:03 Uhr
Wenn Du Webform für das Kontaktformular verwendest kannst Du die Artikelnummer als GET Parameter übergeben und in den Betreff der Mail übernehmen oder als HIDDEN Field hinterlegen.
Hi,
ich glaube das ist die einfachste Möglichkeit.
Kannst du mir erklären wie ich die Artikelnummer mit dem GET Parameter übergeben kann?
Ich habe das Webform Modul installiert und schaue es mir gerade an.
Kann mir noch jemand einen
am 06.04.2013 - 10:45 Uhr
Kann mir noch jemand einen Tip geben?
die Übergabe den Tokens habe ich mit %get[node:field_artikelnummer] versucht.
Drupal gibt mir aber nur "%get[node:field_artikelnummer] " aus und nicht den Wert.
Was mache ich falsch ?
Die Artikelnummer steht bei mir nicht in der URL sondern in einem Feld....
Wenn Du es mit GET machst,
am 06.04.2013 - 11:45 Uhr
Wenn Du es mit GET machst, musst Du auch eine Query mit der url übergeben, in der Form deineurl?artikelnummer=12345
Der Wert für das Feld in der Webform ist in desem Fall %get[artikelnummer] - also der Value vom Key 'artikelnummer' in Deinen GET-Array. Der Token hat hier nichts verloren.
Also wäre die Lösung, einen dynamischen Link von der Artikelseite zur Webform zu erstellen. Praktisch wäre es, die l()-Funktion von Drupal zu benutzen, die stellt auch eine Query-Array zur Verfügung.
Gruß
Christian
Danke für deine Antwort, aber
am 06.04.2013 - 12:16 Uhr
Danke für deine Antwort, aber ich weiß leider nicht wie du das meinst.
so halt ungefähr den Link
am 06.04.2013 - 15:11 Uhr
so halt ungefähr den Link erzeugen, in Deiner node.tpl :
$field = field_get_items('node', $node, 'field_DEINEARTNR');
$artnr = $field[0]['value'];
print l('DEIN_LINK_TEXT', 'DEIN_PFAD', array('query' => array('artikelnummer' => $artnr)));
(oder wie auch immer Du den Wert des Feldes auslesen willst)
ergibt eine URL die so ausschaut: /DEIN_PFAD?artikelnummer='wert vom Feld field_DEINEARTNR'
Und die kannst Du mit %GET['artikelnummer'] in dein Formularfeld holen.
Gruß
Christian
Brian schrieb Danke für deine
am 06.04.2013 - 16:21 Uhr
Danke für deine Antwort, aber ich weiß leider nicht wie du das meinst.
Ich glaube es für die Leute hier hilfreich, wenn du mal kurz anmerkst, ob du irgendwelche PHP Kenntnisse hast oder oder nicht. Sense und Oteno setzen dies bei ihren Antworten voraus.
Nein, habe ich nicht, sry
am 06.04.2013 - 18:19 Uhr
Nein, habe ich nicht, sry
Ok, ginge aber auch ohne PHP
am 06.04.2013 - 18:53 Uhr
Ok, ginge aber auch ohne PHP mit Views, wenn man dort die Ausgabe überschreibt.
Wenn Du eine feste url auf das Formular hast, dann könntest Du mit Views das Feld für die Artikelnummer überschreiben (unter "Rewrite results"->Rewrite the output of this field)
mit
<a href="DEIN_PFAD?artikelnummer=[TOKEN_DEINES_FELDES]">LINK</a>
Wichtig ist halt, dass das Prinzip klar ist, die Query-Parameter (?artikelnummer=12345) mit der url mitzugeben.
Gruß
Christian
Jetzt hab ich es gescheckt!
am 08.04.2013 - 07:37 Uhr
Jetzt hab ich es gescheckt!
$field = field_get_items('node', $node, 'field_DEINEARTNR');
$artnr = $field[0]['value'];
print l('DEIN_LINK_TEXT', 'DEIN_PFAD', array('query' => array('artikelnummer' => $artnr)));
Damit klappt es prima. Vielen Dank !
Super! Stellst Du bitte den
am 08.04.2013 - 08:01 Uhr
Super! Stellst Du bitte den Beitrag noch auf [gelöst]?
Gruß
Christian
Eine letzte Frage habe ich
am 08.04.2013 - 08:42 Uhr
Eine letzte Frage habe ich noch.
Wie kann ich bestimmen auf welchen Seiten der Link gezeigt wird?
Deinen PHP code habe ich ja in der Node.tpl eingefügt, nun wird der Link mir z.B. auf der Formularseite nochmals darunter angezeigt.
Edit: Ich könnte auf den entsprechenden Seiten den Link per CSS auf display: none setzen, aber es gibt bestimmt eine elegante Lösung...
Wenn Du nur eine node.tpl
am 08.04.2013 - 08:59 Uhr
Wenn Du nur eine node.tpl hast, kannst du den Content type einfach abfragen, auf dem es ausgegeben wird - hoffe mal, dass deine Formularseite einen eigenen hat.
if ($type=='DEIN_CONTENTYPE'):
$field = field_get_items('node', $node, 'field_DEINEARTNR');
$artnr = $field[0]['value'];
print l('DEIN_LINK_TEXT', 'DEIN_PFAD', array('query' => array('artikelnummer' => $artnr)));
endif;
[edit]
Da fällt mir noch ein, vielleicht wäre es sogar besser abzufragen, ob es eine Arikelnummer gibt:
$field = field_get_items('node', $node, 'field_DEINEARTNR');
$artnr = $field[0]['value'];
if (isset($artnr)):
print l('Link Text', 'news', array('query' => array('artikelnummer' => $artnr)));
endif;
Mir persönlich wäre das schon zu viel in der node.tpl, aber es funktioniert schon.
Ich würde das meiste in die template.php auslagern - das kannst Du mal machen, wenn du Dich mehr damit beschäftigt hast.
Gruß
Christian
Super, vielen vielen Dank für
am 08.04.2013 - 09:09 Uhr
Super, vielen vielen Dank für Eure Hilfe!
Zitat: Mir persönlich wäre
am 08.04.2013 - 11:06 Uhr
Mir persönlich wäre das schon zu viel in der node.tpl, aber es funktioniert schon.
Ich würde das meiste in die template.php auslagern...
Funktioniert einwandfrei. Vielen Dank Christian.
Nur des Verständnisses halber. Warum ist das in der Node.tpl.php schon zuviel und wie kann man das in die template.php auslagern ?
In die node.tpl sollte
am 08.04.2013 - 12:13 Uhr
In die node.tpl sollte sowenig Logik und PHP-Code wie möglich, das ist "best practice" und hat einige Vorteile, bezüglich Übersichtlichkeit und Wiederverwertbarkeit.
In der template.php würde das dann so aussehen
function DEINTHEME_preprocess_node(&$vars) {
$node = $vars['node'];
$field = field_get_items('node', $node, 'field_DEINARTIKELNUMMERFELD');
$artnr = $field[0]['value'];
if (isset($artnr)):
$vars['link'] = l('Link Text', 'news', array('query' => array('artikelnummer' => $artnr)));
endif;
}
und in der node.tpl würde dann lediglich:
<?php
if (isset($link)): print $link; endif;
?>
stehen.
In die Arbeitsteilung mit einem Webdesigner bringt sowas dann schon Komfort.
Gruß
Christian
Nochmal Danke, jetzt bin ich
am 08.04.2013 - 13:26 Uhr
Nochmal Danke, jetzt bin ich schlauer. (: