Newsletter Anmeldung im Footer

Hallo kann mir jemand einen Tip geben wie man in shopware 6 ein Newsletter widget im Footer umsetzten kann? 

danke

                {{ sw_csrf('frontend.form.newsletter.register.handle') }}
                {% set formViolations = app.request.get('errors') %}
                
                
                
                    
                        
                            {{ "account.personalMailPlaceholder"|trans }}{{ "general.required"|trans }}
                        
                        
                    
                    
                        {{ "newsletter.formSubmit"|trans }}

Sollte so eigentlich bei 6.1 funktionieren

4 Likes

Hey, 

wenn wir schon beim Footer sind. Würde gerne mehrere Footer-Blöcke einbinden. Funktioniert das über die Footer.html.twig?

Hatte das mal bei “Shopware 5” umgesetzt, allerdings funktionierte des über die Textbausteine, gleiche Prozedere? 
 

vielen Dank im Vorraus! 
 

Mfg.

@larosam schrieb:

Hey, 

wenn wir schon beim Footer sind. Würde gerne mehrere Footer-Blöcke einbinden. Funktioniert das über die Footer.html.twig?

Hatte das mal bei „Shopware 5“ umgesetzt, allerdings funktionierte des über die Textbausteine, gleiche Prozedere? 
 

vielen Dank im Vorraus! 
 

Mfg.

Ja genau, der Footer lässt sich dort anpassen. Textbausteine gibt es auch noch. Die Navigation wird als Kategoriestruktur angelegt. Weitere infos hier:

Nach dem absenden erscheint:

all.js:5 Uncaught TypeError: Cannot set property 'innerHTML' of null

Keine gültige Lösung also aktuell mehr.

Hat jemand die o.s. Lösung im Footer auch eingebaut?

Wie kann ich dem Benutzer nach Klick auf “Jetzt anmelden” eine Meldung ausgeben “Vielen Dank für Ihre Anmeldung” o.ä.?

Ihr könnt den Fehler beheben indem Ihr die Klasse „cms-block“ an das „footer-newsletter“-div hängt.
 

                {{ sw_csrf('frontend.form.newsletter.register.handle') }}
                {% set formViolations = app.request.get('errors') %}
                
                
                
                    
                        
                            {{ "account.personalMailPlaceholder"|trans }}{{ "general.required"|trans }}
                        
                        
                    
                    
                        {{ "newsletter.formSubmit"|trans }}

 

4 Likes

Könnte bitte mal jemand posten, wie genau ihr das in die footer.html.twig gepackt habt? Mit dem obigen Code bekomme ich leider immer einen 500er Error. 

Ich hab das ganze jetzt ebenfalls aufgegriffen und im Footer ein Newsletter Formular eingebaut, aber ich hänge ebenfalls an der Ausgabe einer „Bestätigungsmeldung“ - das mit cms-block habe ich probiert, aber ich bekomme immer noch die json Meldung.

Heyo!

Also ich hänge an diesem Post seit letztes Jahr und ich glaube ich weiss jetzt wie es geht. Ich kam aber auf die Idee erst gestern. Bin mir nicht sicher ob ich es richtig mache oder halt nur Mül habe.

Mein Shop ist momentan nur Lokal, also ich kann es nicht bestätigen ob es funktioniert. Immerhin bekomme eine Bestätigung, dass es geklappt hat.

Ich habe ein Block erstellt und beim Footer hinzugefügt:

{% block layout_footer_navigation_newsletter %}

<div class="cms-block col-md-3 footer-column js-footer-column">
    {% block layout_footer_navigation_newsletter_headline %}
        <div class="footer-column-headline footer-headline js-collapse-footer-column-trigger"
             id="collapseFooterNewsletterTitle"
             data-target="#collapseFooterNewsletterTitle"
             aria-expanded="true"
             aria-controls="collapseFooterNewsletter">
            Newsletter
            {% block layout_footer_navigation_newsletter_icons %}
                <div class="footer-column-toggle">
                        <span class="footer-plus-icon">
                            {% sw_icon 'plus' %}
                        </span>
                    <span class="footer-minus-icon">
                            {% sw_icon 'minus' %}
                        </span>
                </div>
            {% endblock %}
        </div>
    {% endblock %}

    {% block layout_footer_navigation_newsletter_content %}
        <div id="collapseFooter"
             class="footer-column-content collapse js-footer-column-content"
             aria-labelledby="collapseFooterTitle">
            <div class="footer-column-content-inner">
                <div class="footer_newsletter_text">
                    Newsletterdingsbumpstext.
                </div>

                {% block layout_footer_navigation_newsletter_elements %}
                    <div class="cms-element-form">
                        <form action="{{ path('frontend.form.newsletter.register.handle') }}"
                              method="post"
                              data-form-csrf-handler="true"
                              data-form-validation="true">
                            {% block cms_form_newsletter_hidden_fields %}
                                <div class="form-hidden-fields">
                                    {% block cms_form_newsletter_csrf %}
                                        {{ sw_csrf('frontend.form.newsletter.register.handle') }}
                                    {% endblock %}
                                    {% set formViolations = app.request.get('errors') %}
                                    {#based on a POST req. to: Controller/NewsletterController.php#}
                                    <input type="hidden" name="option" value="subscribe"/>
                                    <input type="submit" class="submit--hidden d-none" />
                                </div>
                            {% endblock %}
                            <div class="form-content">
                                <div class="w-75 form-group input-group mb-0">
                                    <label for="footerNewsletterMail" class="hidden"></label>
                                    <input name="email"
                                           type="email"
                                           id="footerNewsletterMail"
                                           placeholder="E-Mail Adresse"
                                           required="required"
                                           value="{{ data.get('email') }}"
                                           class="form-control{% if formViolations.getViolations('/email') %} is-invalid{% endif %}"/>

                                    {% if formViolations.getViolations( '/email' ) is not empty %}
                                        {% sw_include '@Storefront/storefront/utilities/form-violation.html.twig' with {
                                            violationPath: ('/email')
                                        } %}
                                    {% endif %}

                                    <button type="submit" class="btn btn-newsletter">
                                            <span class="footer-newsletter-icon">
                                                {% sw_icon 'paperplane' style {'color': 'dark'} %}
                                            </span>
                                    </button>
                                </div>
                                <a data-toggle="modal"
                                   href="{{ path('frontend.cms.page',{ id: shopware.config.core.basicInformation.tosPage }) }}"
                                   data-url="{{ path('frontend.cms.page',{ id: shopware.config.core.basicInformation.tosPage }) }}">
                                    Datenschutzsbestimmung
                                </a>
                            </div>
                        </form>
                    </div>
                {% endblock %}

            </div>
        </div>
    {% endblock %}
</div>
{% endblock %}

Unter „Controller/NewsletterController.php“ könnt ihr die Details des POST request checken.
Best practice wäre ein Custom-Controller zu erstellen und mithilfe des NewsletterController selber ein HTTP-Request + ne Custom-Meldung zu bauen.

Ich hoffe ihr könnt irgendwas damit anfangen! :+1:t4:

@jfranke
Vielen Dank für das Code-Beispiel.
Scheint so auch zu funktionieren. Eine Sache müsste aber noch angepasst werden:

Die Bestätigungsmeldung öffnet sich nicht wie normal auf einer neuen Seite oder in einem Modal-Fenster. Im Moment kommt die Meldung im Footer, im selben div wie das Widget.

Hast Du einen Tipp, eine Lösung, wie man die Meldung z.B. in einem Modal ausgeben lassen kann? Oder auf einer Bestätigungsseite?

LG
Joachim

Heyo!

Ja, das ist noch einie Sache, die mir immer noch stört. Ideal wäre es in einem Modal -Fenster oder den Text so anzupassen, dass beim widget besser aussieht.

Was mir sehr geholfen hat, ist mir andere Shopware6 Seiten anzugucken. Unter diese Seite (welche beim Showcase von Shopware6 zu sehen ist) kann man genau dasselbe Prinzip sehen.

Noch eine Variante wäre sowas zu bastelln:

Von aufwand her ehr sehr gering, da hier ein Modal-Fenster mit dem Path zur Formulars implementiert ist.

Ansonsten könnte man ein Custom-Controller zu erstellen und dadurch den Text bzw. die Alert zu manipulieren.
" Controller/NewsletterController.php"

Ich hoffe es hat dir ein bisschen geholfen! Gib Bescheid, falls du eine bessere Lösung findest :smiley:

LG
Franke

Hallo,

danke für die schnelle Antwort. Ich werd’s erstmal so lösen, dass ich nur einen Button einfüge und auf die Newsletter-Anmeldeseite verlinke. Ist für mich im Moment die sauberste Lösung.

Warum Shopware das aus dem Footer rausgenommen hat ist mir ein Rätsel. Zumal die ganzen Textbausteine dafür vorhanden sind, werden eben nur nicht genutzt. Ist alles sehr rätselhaft und fragwürdig, was Shopware da mit der 6er Version auf den Markt gebracht hat.

Viele Grüße
Joachim

Hahaha besser könnte man das nicht ausdrucken. Rätselhaft und fragwürdig XD An sich SW6 ist auf eine sehr frühe Phase noch. Nach und nach werden Sachen und Features implementiert. Es hat fast 5 Jahre gedauert bis SW5 fertig war. Mal sehen wie es weiter geht.

Kannst du mir zeigen, wie du die Verlinkung gemacht hast? Ich habe vor die Seite als Modal anzuzeigen.

Bei der 6.4. haben sich einige Sachen geändert und irgendwie finde ich die Newsletter Seite nicht mehr und bin mir nicht so sicher, wie ich am bestens die Problematik löse.

VG
Franke

Hallo,

ich habe einfach einen Button eingebaut und den auf die Standard-Anmeldeseite vom Newsletter verlinkt.

6.4. hab ich noch nicht, mal sehen, was sich da alles geändert hat.

Viele Grüße
Joachim

Welchen Link nutzt denn die Standard-Anmeldeseite vom Newsletter?

Und eine noch spannendere Frage, was mache ich denn mit den gesammelten Adressen? Weder habe ich eine integrierte Funktionalität noch eine Möglichkeit zum Export der Emailadressen gefunden.

Heyo,

bin mir nicht sicher, ob du die Lösung gefunden hast, aber so habe ich es eingebaut bei mir.

<a data-toggle="modal"
    class="btn btn-danger"
    href="{{ path('frontend.cms.page',
        { id: config('core.basicInformation.newsletterPage') }) }}"
    data-url="{{ path('frontend.cms.page',
        { id: config('core.basicInformation.newsletterPage') }) }}">
    {{ "account.newsletterTitle"|trans }}
</a>

Wichtig ist „href“ & „data-url“ mit den ID’s

hat jetzt schon jemand eine Lösung wie man nach dem Anmelden auf die Bestätigungsseite kommt?

1 Like

Mich würde auch interessieren wie man nach dem Anmelden auf die Bestätigungsseite kommt.
Kann jemand helfen?