Viewing 12 posts - 1 through 12 (of 12 total)
  • Author
    Posts
  • #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?

    #854781

    Hey 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ünter

    #854861

    Hallo 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
    Henning

    #855258

    Hi,

    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ünter

    #858416

    Hallo 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
    Henning

    #858446

    Hi,

    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ünter

    #916678

    Hallo,
    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
    Henning

    #917792

    Hi,

    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ünter

    #1229038

    Hello

    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

    #1229338

    Hi 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,
    Rikard

    #1229478

    OK 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, 4 months ago by s29ers.
    #1229733

    Hi,

    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

Viewing 12 posts - 1 through 12 (of 12 total)
  • You must be logged in to reply to this topic.