-
AuthorPosts
-
September 20, 2017 at 9:49 am #854268
Hallo,
ich möchte für eine Hotelseite z.B. bei der Beschreibung der Zimmertypen ein Formular einbinden, bei dem ich beispielsweise Anreisedatum, Abreisedatum etc. abfrage, um dann nach Absenden des Formulars direkt auf unser Onlinebuchungssystem zu verlinken und die abgefragten Parameter und weitere (hidden) an den Link anzuhängen.
Kann ich das auf Basis z.B. des Kontaktformulars des erweiterten Layout Editors realisieren?September 21, 2017 at 12:16 pm #854781Hey henning-lenste,
Danke dass Du unser Theme verwendest.
Soferne das Kontaktformular alle Steuerelemente bietet, ist es sicher eine Möglichkeit. Abfangen kannst Du das gesendete Forumar in der Datei enfold\framework\php\class-form-generator.php Zeile 806 mit dem Filter:
//hook to stop execution here and do something different with the data $proceed = apply_filters( 'avf_form_send', true, $new_post, $this->form_params, $this );
und die Ausgabe erfolgt über enfold\config-templatebuilder\avia-shortcodes\contact.php function shortcode_handler und enfold\framework\php\class-form-generator.php functionen create_elements und display_form.
Ich hoffe, das hilft Dir einmal weiter.
Es gibt auch noch andere plugins wie z.B. Contact Form 7 https://de.wordpress.org/plugins/contact-form-7/ die recht gut sind. Wie die aber zum Abfangen gehen, kann ich momentan nicht sagen.
Best regards,
GünterSeptember 21, 2017 at 2:10 pm #854861Hallo Günter,
vielen Dank für deine Antwort!
Da ich noch WordPress- und Enfold -Anfänger bin, würde ich mich gern vergewissern, ob ich auf dem richtigen Weg bin.Ich habe über den Formular Element-Typ “Custom HTML” das Feld
<input name="hns" type="hidden" value="1" />
eingefügt.Nun würde ich unter enfold\framework\php\class-form-generator.php Zeile 806 so etwas wie
//hook to stop execution here and do something different with the data if($_POST[hns]) echo "<meta http-equiv=\"refresh\" content=\"5\"; URL=https://xyz.de/booking.aspx?arrival=".$_POST[avia_1_1]."departure=".$_POST[avia_2_1]."&rooms=1&adults=".$_POST[avia_3_1]."\">";
einfügen.
Bevor ich es ausprobiere meine Frage: Wäre das ein gangbarer Weg?
Allerdings geht diese Änderung, wenn ich es richtig verstehe, bei einem Udate verloren. Ich habe bereits ein Child-Theme eingerichtet, weiss allerdings nicht, wie ich diesen Fall “Update -Sicher” realisieren kann?!
Viele Grüße von der Ostsee
HenningSeptember 22, 2017 at 9:10 am #855258Hi,
Um eine Modifikation updatesicher zu machen, musst Du alle Änderungen im Child theme vornehmen (z.B. in functions.php des child themes).
Das Anlegen der hidden fields sollte so funktionieren.
Nach dem Absenden:
In functions.php des child themes einfügen:
add_filter('avf_form_send', 'my_avf_form_send', 10, 4 ); /** * * @param boolean $send * @param array $post all $_POST with "avia_" removed * @param array $form_params * @param avia_form $objec * @return boolean true to continue, false to stop sending email */ function my_avf_form_send( $send, $post, $form_params, $objec ) { return $send; }
Im Funktionsrumpf kannst Du dann deine Werten verarbeiten.
Best regards,
GünterSeptember 29, 2017 at 11:07 am #858416Hallo Günter,
vielen Dank für deine bisherigen Bemühungen! Leider bin ich noch nicht am Ziel…
Ich habe nun folgendes (s.u.) in die functions.php des Child-Themes eingefügt.
Nach dem Absenden verschwindet das Formular, ich bleibe aber auf der selben Seite.Viele Grüße
HenningSeptember 29, 2017 at 12:11 pm #858446Hi,
Zuerst einmal war die php Syntax falsch mit den einfachen Hochkomma. Ich habe das einmal korrigiert.
function my_avf_form_send( $send, $post, $form_params, $objec ) { if($_POST['hns']) { $arrival=$_POST['1_1']; $departure=$_POST['2_1']; $adults=$_POST['3_1']; $roomtype=$_POST['hns']; echo '<meta http-equiv=”refresh” content="URL=https://www.cbooking.de/v3/booking.aspx?id=kraehenberg&module=public&ratetype=bar&lang=de&arrival=' . $arrival . '&departure=' . $departure . '&rooms=1&adults=' . $adults . '&roomtype=' . $roomtype . '”>'; } else { return $send; } }
Nur so wird das nicht gehen, weil zum Zeitpunkt dieses Filters noch keine Header definiert sind. Dies erfolgt erst viel später.
Außerdem ist dieser “Aufruf” ein quasi ajax call, da später im frontend nur mehr die form relevanten Teile ausgefiltert werden.
Man müsste sich in deinem Fall grundsätzlich anschauen, wie die Schnittstelle genau arbeitet und ob Du da nicht besser gleich ein rerouting auf eine eigene Seite einbauen musst.
Nur das sprengt leider den Rahmen dieses Support Forums und ist customization.
Best regards,
GünterFebruary 23, 2018 at 1:52 pm #916678Hallo,
ich habe nochmal eine Frage:
Ich möchte gern die Eingabe eines oder mehrerer Eingabefelder des Kontaktformulars im Betreff der versendeten Mail stehen haben. Ist das möglich?
Vielen Dank für eure Hilfe!
Viele Grüße
HenningFebruary 26, 2018 at 12:15 pm #917792Hi,
Out of the box – nein.
Zuständig für den Aufbau des Mails ist die Datei enfold\framework\php\class-form-generator.php funktion send().
In Zeile 865 gibt es das Filter:
$subject = apply_filters("avf_form_subject", $subject, $new_post, $this->form_params);
resp. in Zeile 807:
//hook to stop execution here and do something different with the data $proceed = apply_filters( 'avf_form_send', true, $new_post, $this->form_params, $this );
Hoffe, das hilft weiter.
Best regards,
GünterJuly 9, 2020 at 4:43 am #1229038Hello
I read post using google translate and am possibly incorrectly asking here, but since it’s the only one referring to the meta http-equiv=”refresh” directive, here goes. Hopefully you can help.
I want to place a meta refresh like this
<meta http-equiv=”refresh” content=”5; url=http://otherdomain.com/some-page there/>
in the head section of one page only (i.e. mydomin.com/temppage/) so when a user arrives at there, Analytics will fire and after a second or two the user is sent automatically to the actual destination page.How do I add this on that page in Enfold?
Thanks
July 10, 2020 at 8:12 am #1229338Hi s29ers,
There’s nothing like that in the theme by default, but I think a redirect plugin should be able to accomplish that for you?
Best regards,
RikardJuly 10, 2020 at 8:29 pm #1229478OK understood, thanks, but surely there must be a way to add custom code to <head> or specific tag etc. of any specific page? Then I can put this statement <meta http-equiv=”refresh” content=”5; url=http://otherdomain.com/some-other-page/> in the <head> section of the specific page that I need it. How to do so? Thanks.
- This reply was modified 4 years, 5 months ago by s29ers.
July 12, 2020 at 4:58 am #1229733Hi,
Yes, you can use the wp_head hook: https://developer.wordpress.org/reference/hooks/wp_head/, then add a conditional statement to only load it on one page: https://developer.wordpress.org/reference/functions/is_page/
Best regards,
Rikard -
AuthorPosts
- You must be logged in to reply to this topic.