Kontaktformular anpassen

Hallo Sebastian,

vielen Dank für den Tipp. Enterprise-Version von Shopware haben wir leider nicht und das PlugIn scheint ja nur eine 30-tägige Testversion zu sein, ohne dass es eine Kaufversion gibt oder?

ABER:

Ich habe gerade eben herausgefunden, dass es mittlerweile tatsächlich ohne PlugIn eine Funktion gibt, wie man zumindest die Pflichtfelder anpassen kann. Nur an einer Stelle, an der ich das nie und nimmer vermutet hätte.

Für alle, die diese Möglichkeit noch suchen:

Sie befindet sich unter unter:

Einstellungen > Stammdaten

1 „Gefällt mir“

Hallo,

das Plugin ist bereits Bestandteil der Professional Edition und kann dort kostenfrei genutzt werden, nicht nur bei der Enterprise Edition.

Grüße

Sebastian

Wir haben die Professional Edition, aber wo kann ich die Formulare über die Administration anpassen?
In den Erlebniswelten habe ich ein Formular in die Seite eingefügt, kann hier aber nur zwischen Kontakt und Newsletter wählen und nicht wie hier beschrieben

https://docs.shopware.com/de/shopware-6-de/erweiterungen/cms-erweiterungen

eingene Vorlagen wählen.

Hallo,
hast du denn das von mir genannte Plugin auch installiert, also CMS-Extensions | Detailseite | Produktdarstellung | Storefront / Detailanpassungen | Erweiterungen | Shopware Community Store ? Das Plugin liefert ja die Funktionalität mit. Wenn ja, hast du denn auch den Cache einmal geleert? Dann dürfte der neue CMS - Block auch wie in der Dokumentation mit auftauchen.

Grüße
Sebastian

1 „Gefällt mir“

Also in der Professional sind drei Plugins dabei.
Die haben wir alle installiert in der aktuellsten Version.
Die „CMS-Erweiterungen für Shopware 6“ in der Version 1.8.1

Hallo,

dann müsste der neue CMS-Block wie in der Dokumentation beschrieben auch angezeigt werden. Wenn nicht, einfach mal den kompletten Cache leeren.

Grüße
Sebastian

Ok, es geht jetzt. Warum auch immer :-). Hatte den Cache zigmal über die ./bin/console cache:clear gelöscht.
Nächstes Problem. Ich kann kein eigenes Formular erstellen, weil ich keine E-Mail-Templates auswählen kann.


Ich habe auch ein neues E-Mail-Template extra erstellt, aber kann es nicht auswählen und auch nicht die Standard-Templates. Woran kann es liegen?

1 „Gefällt mir“

Du solltest für das Plugin ein Support-Ticket erstellen können. Mach dies am Besten mal mit den Zugangsdaten zu deinem Shop und wir schauen es uns dann dort an. :slight_smile:

Ich habe es erstellt.

Wir haben exakt das gleiche Problem und können keine Email-Templates auswählen. Gibt es hierzu mittlerweile eine Lösung?

Wir konnten das Problem mittlerweile beheben. Plugin einmal deaktivieren und wieder aktivieren bewirkt manchmal Wunder.

1 „Gefällt mir“

Allerdings hätte ich noch eine andere Frage. Wir haben ein Email-Formular erstellt und würden nun gerne, dass diese Email in den Newsletter-Verteiler eingetragen wird und die entsprechende Double-Opt-In Email verschickt wird.

Hallo,

dafür gibt es ja extra das Newsletterformular.

Andernfalls muss man solch eine Funktionalität selbst implementieren, da der Formularbaukasten dafür nicht gedacht ist.

Grüße

Sebastian

Beim Newsletterformular sind aber zu viele Felder, die ich der Übersichtlichkeit halber gerne ausblenden würde. Außerdem sind dann die Felder und Texte starr vorgegeben.

Hallo,

wie erwähnt, das kriegst du out of the box nicht umgesetzt, ohne es selbst zu programmieren oder programmieren zu lassen. Dafür ist der Formularbaukasten nicht vorgesehen - das Newsletterformular dagegen schon (das kann man sich im Theme ja auch entsprechend anpassen oder anpassen lassen, das es am Ende nur die Felder enthält, die man möchte).

Grüße

Sebastian

Ich habe die Felder beim Newsletter problemlos anpassen bzw. ein- und ausblenden können, nur beim Select-Feld „Newsletter abonnieren bzw. abbestellen“ komme ich einfach nicht weiter. Hat jemand einen Ansatz, wie ich dies ausblenden kann, ohne das die eigentliche Funktion verloren geht.

Ich habe das Kontaktformular in der Community Edition ein wenig anpassen müssen. Die von Shopware definierten Pflichtfelder haben sich folgendermaßen überschreiben lassen:

MyPlugin/src/Resources/config/services.xml

<?xml version="1.0" encoding="UTF-8" ?>
<container xmlns="http://symfony.com/schema/dic/services" xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance" xsd:schemaLocation="http://symfony.com/schema/dic/services https://symfony.com/schema/dic/services/services-1.0.xsd">
    <services>
        <service id="Shopware\Core\Content\ContactForm\SalesChannel\ContactFormRoute" class="MyPlugin\Content\ContactForm\SalesChannel\ContactFormRoute">
            <argument type="service" id="Shopware\Core\Content\ContactForm\Validation\ContactFormValidationFactory"/>
            <argument type="service" id="Shopware\Core\Framework\Validation\DataValidator"/>
            <argument type="service" id="event_dispatcher"/>
            <argument type="service" id="Shopware\Core\System\SystemConfig\SystemConfigService"/>
            <argument type="service" id="cms_slot.repository" />
            <argument type="service" id="salutation.repository" />
            <argument type="service" id="category.repository" />
        </service>

        <service id="MyPlugin\Content\ContactForm\Validation\ContactFormValidationFactory" class="StudioSolid\Elbgarden\Content\ContactForm\Validation\ContactFormValidationFactory">
            <argument type="service" id="event_dispatcher"/>
            <argument type="service" id="Shopware\Core\System\SystemConfig\SystemConfigService"/>
        </service>
    </services>
</container>

MyPlugin/src/Content/ContactForm/Validation/ContactFormValidationFactory.php
kopiert von
Shopware/Core/Content/ContactForm/Validation/ContactFormValidationFactory.php

...
private function createContactFormValidation(string $validationName, SalesChannelContext $context): DataValidationDefinition
{
    $definition = new DataValidationDefinition($validationName);

    // Nur noch Email und Comment/Message als Pflichtfelder
    $definition
        ->add('email', new NotBlank(), new Email())
        ->add('comment', new NotBlank());
...

MyPlugin/src/Content/ContactForm/SalesChannel/ContactFormRoute.php
kopiert von
Shopware/Core/Content/ContactForm/SalesChannel/ContactFormRoute.php

...
public function load(RequestDataBag $data, SalesChannelContext $context): ContactFormRouteResponse
{
    $this->validateContactForm($data, $context);
    $mailConfigs = $this->getMailConfigs($context, $data->get('slotId'), $data->get('navigationId'));

    // Nur nach der SalutationID suchen, wenn sie auch geliefert wird
    if ($data->get('salutationId')) {
        $salutationCriteria = new Criteria([$data->get('salutationId')]);
        $salutationSearchResult = $this->salutationRepository->search($salutationCriteria, $context->getContext());

        if ($salutationSearchResult->count() !== 0) {
            $data->set('salutation', $salutationSearchResult->first());
        }
    }
....

Namespaces müssen natürlich angepasst werden. Außerdem ist fraglich, bis zu welchem Update das gut geht. Für mich aber vorerst einen ausreichende Lösung. Alternativ kann man sich ein eigenes Formular anlegen indem man sich die Struktur aus Shopware/Core/Content/ContactForm abschaut.

1 „Gefällt mir“

Einfach mal „Push“. Scheint mit jedem Thema mehr, welches man liest zur guten Note von Shopware zu gehören. Es ist wirklich schade, dass man die Community bei vielen Sachen einfach hängen lässt.

1 „Gefällt mir“

Tut sich nach dieser langen Zeit eigtl. noch etwas? Zwei verwendbare Formulare in Shopware 6 (Com. Edition) sind nicht sonderlich berauschend.

2 „Gefällt mir“

Hänge mich hier mal ran würde mich auch brennend interessieren!