Gibt es in SW6 keine Möglichkeit die Registrierung je Verkaufskanal nur für gewerbliche Kunden vorzubelgen? Quasi die Logik wenn ich bei “Ich bin*” Gewerblich auswähle. Also die Felder Unternehmen, Abteilung, Ust-Id anzeigen? Es soll kein Auswahlfeld geben. In der Konfiguration zur Registrierung sehe ich leider keine Option. Im Template auch nicht… Gibt es vielleicht noch einen anderen Weg ohne Templatenanpassung?
Es ist ein Zusammenspiel mehrer Faktoren notwendig um die Funktion bereitzustellen (scss, js und Templateanpassungen). Wir haben die Logik in ein Pluign gepackt und werden prüfen ob wir dies im Store bereitstellen können.
Es ist ein Zusammenspiel mehrer Faktoren notwendig um die Funktion bereitzustellen (scss, js und Templateanpassungen). Wir haben die Logik in ein Pluign gepackt und werden prüfen ob wir dies im Store bereitstellen können.
Hallo, oh das klingt super. Eine Frage vorab, kann man das dann pro Verkaufskanal zuweisen? Ich hab nämlich zwei Verkaufskanäle, einer ist B2C und einer B2B. Und ich würde das eben für B2B brauchen.
entweder das Plugin nehmen oder einfach ein neues Template Override in /custom/plugins//src/Resources/views/storefront/component/address/address-personal.html.twig mit folgenden Inhalt setzen:
{% sw_extends '@Storefront/storefront/component/address/address-personal.html.twig' %}
{% block component_address_personal_account_type_select %}
{% if shopware.config.core.loginRegistration.showAccountTypeSelection %}
<select name="{% if prefix %}{{ prefix }}[accountType]{% else %}accountType{% endif %}"
id="{{ prefix }}accountType"
required="required"
class="custom-select contact-select"
data-form-field-toggle="true"
data-form-field-toggle-target=".js-field-toggle-contact-type-company"
data-form-field-toggle-value="{{ constant('Shopware\\Core\\Checkout\\Customer\\CustomerEntity::ACCOUNT_TYPE_BUSINESS') }}"
data-form-field-toggle-scope="{% if scope == 'parent' %}parent{% else %}all{% endif %}"
{% if scope == 'parent' %}data-form-field-toggle-parent-selector={{ parentSelector }}{% endif %}
>
{% endif %}
{% set isCompany = false %}
{% if page.address.company or data.company is not empty %}
{% set isCompany = true %}
{% endif %}
{% if accountType and accountType == constant('Shopware\\Core\\Checkout\\Customer\\CustomerEntity::ACCOUNT_TYPE_BUSINESS') %}
{% set isCompany = true %}
{% endif %}
{% set isLoginPage = false %}
{% if activeRoute == 'frontend.account.login.page' %}
{% set isLoginPage = true %}
{% endif %}
<option value="{{ constant('Shopware\\Core\\Checkout\\Customer\\CustomerEntity::ACCOUNT_TYPE_BUSINESS') }}"
{% if isLoginPage == false %} selected="selected"{% endif %} aria-hidden="true">
{{ "account.personalTypeBusiness"|trans|sw_sanitize }}
</option>
</select>
{% endblock %}
Ist dirty, funktioniert aber und lässt alle Funktionen vorhanden.
Alternativ den Block noch unsichtbar machen. SCSS:
ich würde auch gerne die Private anmeldung verhindern.
So wie oben beschrieben (von @schnere ) klappt es bei mir leider nicht immer.
Wenn ich ganz normal über „Anmelden“ oder „registrieren“ gehe funktoniert es.
Wenn ich aber etwas in den Warnkrob lege und dann auf weiter zur Kasse gehe. Mich dort anmelde funktoniert es nicht.
Ich gebe alle Daten ein, klicke auf weiter und nix passiert. Alle Felder sind ausgefüllt und Grün.
Hier mein Code:
{% sw_extends '@Storefront/storefront/component/address/address-personal.html.twig' %}
{% block component_address_personal_account_type_select %}
{{ dump() }}
{% if onlyCompanyRegistration or config('core.loginRegistration.showAccountTypeSelection') %}
<select name="{% if prefix %}{{ prefix }}[accountType]{% else %}accountType{% endif %}"
id="{{ idPrefix ~ prefix }}accountType"
{% if onlyCompanyRegistration %}disabled{% endif %}
required="required"
class="{{ formSelectClass }} contact-select"
data-form-field-toggle="true"
data-form-field-toggle-target=".js-field-toggle-contact-type-company{% if customToggleTarget %}-{{ prefix }}{% endif %}"
data-form-field-toggle-value="{{ constant('Shopware\\Core\\Checkout\\Customer\\CustomerEntity::ACCOUNT_TYPE_BUSINESS') }}"
data-form-field-toggle-scope="{% if scope == 'parent' %}parent{% else %}all{% endif %}"
{% if scope == 'parent' %}data-form-field-toggle-parent-selector={{ parentSelector }}{% endif %}
>
{% endif %}
{% set isCompany = true %}
{% if page.address.company or data.company is not empty %}
{% set isCompany = true %}
{% endif %}
{% if onlyCompanyRegistration or (accountType and accountType == constant('Shopware\\Core\\Checkout\\Customer\\CustomerEntity::ACCOUNT_TYPE_BUSINESS')) %}
{% set isCompany = true %}
{% endif %}
{% set isLoginPage = false %}
{% if activeRoute == 'frontend.account.login.page' %}
{% set isLoginPage = true %}
{% endif %}
{% if isLoginPage %}
<option disabled="disabled"
selected="selected"
value="">
{{ "account.personalTypeLabel"|trans|sw_sanitize }}{{ "general.required"|trans|sw_sanitize }}
</option>
{% endif %}
{#### BAM - Entfernen Privat ####}
<option value="{{ constant('Shopware\\Core\\Checkout\\Customer\\CustomerEntity::ACCOUNT_TYPE_BUSINESS') }}"
{% if isCompany == true and isLoginPage == false %} selected="selected"{% endif %}>
{{ "account.personalTypeBusiness"|trans|sw_sanitize }}
</option>
</select>
{% if onlyCompanyRegistration %}<input type="hidden" name="accountType" value="{{ constant('Shopware\\Core\\Checkout\\Customer\\CustomerEntity::ACCOUNT_TYPE_BUSINESS') }}">{% endif %}
{% endblock %}
Ich habe nur das „{% set onlyCompanyRegistration = true %}“ weggelassen, da ich sonst auf der normal „Anmelden“ oder „registrieren“ nicht die Select box ändenr kann und die Daten von der Privaten anmeldung angezeigt werden, ohne Abteilung, Umsatzsteuer-ID .
Aber auch mit „{% set onlyCompanyRegistration = true %}“ funktoniert es nicht bei der checkout/register Seite.
Dadurch kann als Rechnungsadresse nur noch ein Gewerbe genutzt werden. Als Lieferadresse allerdings kann abweichend auch eine Privatanschrift genutzt werden.
Wir hatten hin und wieder auch das Problem, dass man nicht weiterkam, wenn man ein Firmenkunde ist, obwohl alle angezeigten Felder grün sind.
Bei uns ist das Problem gewesen, dass das Geburtsdatum auch mit abgefragt wird, dieses Feld wurde aber bei Firmenkunden nicht gezeigt. Somit ist ein Pflichtfeld nicht gefüllt, welches man aber gar nicht sehen kann… Lösung war das Geburtstagsfeld einfach immer einzublenden, dann können es Firmenkunden auch ausfüllen und es wird rot gezeigt, wenn es nicht gefüllt ist.
Hallo Leute, aus unserer Sicht gibt es hier irgendwie einen Bug in Shopware. Die Lösung von mewald funktionierte bei uns bei der Schnellbestellung nicht. Das Problem liegt in der address-personal.html.twig - hier wird mit onlyCompanyRegistration irgendwie der JavaScript Check nicht mehr richtig ausgeführt, wenn das Select inaktiv ist und man kommt nicht mehr weiter.
Unsere Lösung forciert, dass das Select immer ausgewählt werden muss und löscht dann zusätzlich das „privat“ Feld raus. Außerdem wird das „auswählen …“ Feld immer mir ausgegeben. Das bedeutet aktuell einen Klick auf „auswählen …“ mehr, aber funktioniert wenigstens sauber auf register und login Seite.
Lösung:
Keine Änderung in der register.html.twig
Änderung in address-personal.html.twig zu:
{% sw_extends '@Storefront/storefront/component/address/address-personal.html.twig' %}
{% block component_address_personal_account_type_select %}
{% if onlyCompanyRegistration or config('core.loginRegistration.showAccountTypeSelection') %}
<select name="{% if prefix %}{{ prefix }}[accountType]{% else %}accountType{% endif %}"
id="{{ idPrefix ~ prefix }}accountType"
{% if false && onlyCompanyRegistration %}disabled{% endif %}
required="required"
class="form-select contact-select"
data-form-field-toggle="true"
data-form-field-toggle-target=".js-field-toggle-contact-type-company{% if customToggleTarget %}-{{ prefix }}{% endif %}"
data-form-field-toggle-value="{{ constant('Shopware\\Core\\Checkout\\Customer\\CustomerEntity::ACCOUNT_TYPE_BUSINESS') }}"
data-form-field-toggle-scope="{% if scope == 'parent' %}parent{% else %}all{% endif %}"
{% if scope == 'parent' %}data-form-field-toggle-parent-selector={{ parentSelector }}{% endif %}
>
{% endif %}
{% set isCompany = false %}
{% if page.address.company or data.company is not empty %}
{% set isCompany = true %}
{% endif %}
{% if onlyCompanyRegistration or (accountType and accountType == constant('Shopware\\Core\\Checkout\\Customer\\CustomerEntity::ACCOUNT_TYPE_BUSINESS')) %}
{% set isCompany = true %}
{% endif %}
{% set isLoginPage = false %}
{% if activeRoute == 'frontend.account.login.page' %}
{% set isLoginPage = true %}
{% endif %}
{% if true || isLoginPage %}
<option disabled="disabled"
selected="selected"
value="">
{{ "account.personalTypePlaceholder"|trans|sw_sanitize }}
</option>
{% endif %}
{% if false && not onlyCompanyRegistration %}
<option value="{{ constant('Shopware\\Core\\Checkout\\Customer\\CustomerEntity::ACCOUNT_TYPE_PRIVATE') }}"
{% if isCompany == false and isLoginPage == false %} selected="selected"{% endif %}>
{{ "account.personalTypePrivate"|trans|sw_sanitize }}
</option>
{% endif %}
<option value="{{ constant('Shopware\\Core\\Checkout\\Customer\\CustomerEntity::ACCOUNT_TYPE_BUSINESS') }}"
{% if isCompany == true and isLoginPage == false %} selected="selected"{% endif %}>
{{ "account.personalTypeBusiness"|trans|sw_sanitize }}
</option>
</select>
{% if onlyCompanyRegistration %}<input type="hidden" name="accountType" value="{{ constant('Shopware\\Core\\Checkout\\Customer\\CustomerEntity::ACCOUNT_TYPE_BUSINESS') }}">{% endif %}
{% endblock %}