shopware-handbuch-fuer-entwickler
Shopware-Das Handbuch für Entwickler
[expand title=“mehr lesen…“]
[/expand]
[expand title=“mehr lesen…“]
[/expand]
[expand title=“mehr lesen…“]
[/expand]
[expand title=“mehr lesen…“]
[/expand]
[expand title=“mehr lesen…“]
What is the best way to create a SalesChannelContext, eg. when using a CLI command? I loaded a SalesChannelEntity and used SalesChannelContext::createFrom($loadedSalesChannelEntity), but the SalesChannelContext generated this way is missing the generic Context and doesn’t contain a setter to add one.
What is the best way to add it there?
there is a sales channel context factory service
$salesChannelContext = $this->salesChannelContextFactory->create(
Uuid::randomHex(),
$bid->getSalesChannel()->getId(),
[
SalesChannelContextService::LANGUAGE_ID => $bid->getLanguage()->getId(),
SalesChannelContextService::CUSTOMER_ID => $bid->getCustomer()->getId(),
SalesChannelContextService::COUNTRY_ID => $bid->getCustomer()->getDefaultBillingAddress()->getCountry()->getId()
]
);
[/expand]
[expand title=“mehr lesen…“]
| Hannes Wernery 13:40 Uhr Hey! The ACL system is supposed to be upwards and downwards compatible https://hi.shopware.com/ACL But as I see it, if I activate this feature and set up a role for a user, any models that are not listed in the role/permission management are not allowed. Meaning: entities that are not explicitly listed and activated in the management cannot be used by that user. This requires changes in our plugin.
code: „0“ |
[Meteor] Brent Robert10:55 UhrWe seem to be having an issue with a template of the B2B suite:This is default shopware:
{% block page_checkout_confirm_address_billing_actions_link %}
<a href="{{ path('frontend.account.address.edit.page', {'addressId': billingAddress.id}) }}"
title="{{ "account.overviewChangeBilling"|trans|striptags }}"
class="btn btn-light"
data-address-editor="true"
data-address-editor-options='{{ addressEditorOptions|json_encode }}'>
{{ "account.overviewChangeBilling"|trans|sw_sanitize }}
</a>
{% endblock %}
This is B2B suite:
{% block page_checkout_confirm_address_shipping_actions_link %}
{% if b2bSuite %}
<a
title="{{ "account.overviewChangeShipping"|trans|striptags }}"
class="btn btn-light ajax-panel-link {{ b2b_acl('b2bcontactaddress', 'list') }}"
data-target="address-select"
href="{{ path('frontend.b2b.b2baddressselect.index', {'type': 'shipping', 'selectedId': shippingAddress.id}) }}"
>
{{ "account.overviewChangeShipping"|trans|sw_sanitize }}
</a>
{% else %}
{{ parent() }}
{% endif %}
{% endblock %}
The B2B suite is losing the data-addresss-editor(-options) tags and breaking the layout?
[/expand]
[expand title=“mehr lesen…“]
Über den in Shopware 6 enthaltenen Rule Builder kannst Du anhand von Bedingungen individuelle Regeln erstellen, die z.B. für die Berechnung von Versandkosten oder von kundenspezifischen Produktpreisen verwendet werden können.

Beim Aufruf des Menüpunkts Einstellungen > Shop > Rule Builder erhältst Du eine Übersicht über alle bereits angelegten Regeln. Die Übersicht ist in mehrere Spalten aufgeteilt, die Dir direkt die folgenden Informationen bieten:
Hier zeigen wir Dir, wie Du Regeln erstellst und welche Bedingungen und Operatoren Dir dafür zur Verfügung stehen.
Außerdem findest Du am Ende diverse Beispiele für gängige Szenarien, die Du als Grundlage für Deine eigenen Regeln verwenden kannst.
Eine Regel besteht aus mindestens einer Bedingung, kann aber auch mehrere Bedingungen enthalten die über eine UND / ODER – Verknüpfung verbunden werden. Außerdem besteht die Möglichkeit, eine Unterbedingung hinzuzufügen.
Beim Erstellen der Bedingung stehen dir je nach Bedingung diverse Operatoren zur Verfügung, um diese näher definieren zu können.
Um eine neue Regel anzulegen, klicke auf den Button Regel erstellen.
Anschließend öffnet sich die folgende Maske.

In den Allgemeinen Einstellungen der Regel definierst Du einen Namen und die Priorität der Regel.
Über die Priorität kannst Du bei mehreren existierenden Regeln definieren, welche Regel als erstes ausgeführt werden soll. Je höher der hinterlegte Wert im Vergleich zu den anderen Regeln, umso eher wird die Regel ausgeführt. (Eine Regel mit Priorität 5 wird vor einer Regel mit Priorität 3, aber nach einer Regel mit Priorität 9 ausgeführt)
Zusätzlich kannst Du einen Beschreibungstext hinterlegen, um z. B. zu erläutern, wofür diese Regel verwendet wird.
Diese Beschreibung wird nur in der Administration angezeigt und ist nicht im Frontend sichtbar.
Außerdem kannst Du den Typ der Regel festlegen um diese Regel nur in bestimmten Programmmodulen verfügbar zu machen, z.B. für die Versandkosten.
Die meisten Bedingungen werden über zusätzliche Operatoren näher definiert.
Die verfügbaren Operatoren variieren zwischen den einzelnen Bedingungen und nicht bei jeder Bedingung stehen alle Optionen zur Verfügung.
Im Folgenden erläutern wir Dir zunächst die Funktion der einzelnen Operatoren
Es stehen folgende Bedingungen zur Verfügung
Die Bedingung Abweichende Adressen bezieht sich auf eine von der Rechnungsadresse abweichende Lieferadresse, daher stehen als Optionen „Ja“ oder „Nein“ zur Verfügung.
Geprüft wird hier, ob der Kunde die Option „Lieferadresse weicht von der Rechnungsadresse ab“ aktiviert hat.
Beispiel:
Rechnungsadresse – Musterstraße 123, 12345 Musterstadt
Lieferadresse – Testweg 45, 45678 Testort
Prüfe hierüber die Anzahl der bisherigen Bestellungen Deines Kunden
Beispiel: 5
Bei der Anzahl der Warenkorb-Güter kannst Du entweder einfach nur auf die Gesamtzahl der Produkte im Warenkorb prüfen, alternativ stehen Dir aber auch noch wesentlich umfangreichere Zusatzbedingungen zur Verfügung.
Für die Prüfung der Anzahl stehen Dir diverse Optionen zur Verfügung.
Beispiel: 10
Die optionalen Zusatzfilter öffnest Du über den Filter-Button (1) auf der rechten Seite. Es öffnet sich dann ein Modal für die Erstellung der untergeordneten Bedingungen.

Mögliche Unterbedingungen sind
Die Bedingung ist innerhalb des gesetzten Datumsbereichs gültig.
Es wird zwischen den Optionen „Mit Zeitabfrage“ und „Ohne Zeitabfrage“ unterschieden. Beispiel: 2019-05-23 (06:00) – 2019-05-31 (22:00)
Hierüber kannst Du prüfen, ob es sich um einen Firmenkunden handelt.
Dazu stehen Dir die Optionen „Ja“ und „Nein“ zur Verfügung.
Beispiel:
Ermöglicht die Prüfung auf die Hersteller-Angabe der Produkte.
Als Optionen stehen „Ist eine von“ und „ist keine von“ zur Verfügung. Diese beiden Optionen ermöglichen aus eine Mehrfachauswahl.
Beispiel: shopware AG
Diese Bedingung trifft immer zu, eine tiefergehende Konfiguration ist hierfür nicht notwendig.
Wenn Du die Kundengruppe als Bedingung verwendest, kannst Du zwischen den beiden erweiterten Operatoren „Ist eine von“ und „Ist keine von“ wählen.
Beispiel: Nettopreis-Kundengruppe
Für eine genaue Einschränkung steht die Kundennummer zur Verfügung.
Hier wählst Du zwischen den Operatoren „Ist eine von“ oder „Ist keine von“.
Beispiel: 12345, 23456
Für die PLZ der Lieferadresse kannst Du die Operatoren „Ist eine von“ und „Ist keine von“ verwenden.
Beispiel: 48612, 48624, 48683
So, wie Du auf die Daten der Rechnungsanschrift prüfen kannst, stehen Dir auch die Informationen aus der Lieferanschrift zur Verfügung.
Beim Lieferland definierst Du die Bedingung über die Operatoren „Ist eine von“ oder „Ist keine von“.
Beispiel: Schweiz
Für die Bedingung Lieferstraße stehen Dir die Operatoren „Gleich“ oder „Ungleich“ zur Verfügung.
Beispiel: Ebbinghoff 10
Neben der Kundennummer kannst Du auch auf den Kunden-Nachnamen prüfen.
Dazu kannst Du einer der Optionen „Gleich“ oder „Ungleich“ verwenden.
Beispiel: Müller
Du hast hierüber die Möglichkeit, als Bedingung auf Neukunden zu prüfen.
Hierzu stehen die Optionen „Ja“ und „Nein“ zur Verfügung und Du kannst somit z.B. eine Zahlungsart nur für Kunden freigeben, die bereits einmal in Deinem Shop bestellt haben.
Definition Neukunde:
Als Neukunde wird ein Kunde deklariert, bei dem das Datum des ersten Logins gleich dem heutigen Datum ist.
Über diese Bedingung kannst Du definieren, ob in der Regel eine Prüfung auf Produkt-Neuheiten erfolgen soll.
Als Operatoren stehen hierfür „Ja“ und „Nein“ zur Verfügung.
Damit ein Produkt als Neuheit gekennzeichnet wird, ist es erforderlich, dass das Erscheinungsdatum gepflegt ist und max. 30 Tage in der Vergangenheit liegt.
Beispiel:
Über den Typ eine Position kannst Du abfragen, ob ein Produkt oder ein Rabatt bzw. Aufschlag, z.B. im Warenkorb, vorhanden ist.
Als Operatoren kannst Du „Gleich“ und „Ungleich“ verwenden.
Beispiel: Rabatt / Aufschlag
Über die Positionen kannst Du bestimmte Produkte prüfen.
Hierzu stehen Dir die Operatoren „Ist eine von“ und „Ist keine von“ zur Verfügung. Eine Mehrfachauswahl von Produkten ist möglich.
Beispiel: Enormous Copper Cubicide
Über diese Bedingung kannst Du den Einkaufspreis von Produkten abfragen. Der Einkaufspreis bezieht sich hier auf den Preis eines einzelnen Produkts. Eine Aufsummierung erfolgt nicht.
Für die Definition stehen Dir diverse Operatoren zur Verfügung.
Beispiel: 20,00
Der Gesamtpreis der Positionen bezieht sich auf den Gesamtpreis einer Position im Warenkorb. Wenn Du also mehrmals das gleiche Produkt in den Warenkorb legst, wird der Preis in dieser Bedingung aufsummiert.
Beispiel: 50,00
Der Preis der Positionen bezieht sich auf den Preis eines einzelnen Produkts. Für den Abgleich stehen Dir verschiedene Operatoren zur Verfügung.
Beispiel: 30,00
Hierüber kannst Du mittels der Operatoren Ist eine von und Ist keine von prüfen, ob ein bestimmtes Produkt im Warenkorb enthalten ist.
Beispiel: Synergistic Aluminum Mainstay
Mittels der Operatoren „Ist eine von“ und „Ist keine von“ kannst Du prüfen, ob ein Produkt einer bestimmten Kategorie zugewiesen ist. Die Struktur des Kategoriebaums wird hierbei berücksichtigt. Wenn Du hier also eine Oberkategorie auswählst, gelten die Bedingungen auch für die darunter befindlichen Kategorien.
Beispiel: Die Kategoriestruktur ist „Katalog #1 > Nahrung > Backwaren“. Das Produkt ist der Kategorie Backwaren zugeordnet. In der Bedingung prüfen wir auf die Kategorie Nahrung.
Hierüber kannst Du prüfen, ob ein Produkt als Abverkauf markiert ist. Dazu stehen Dir die Operatoren „Ja“ und „Nein“ zur Verfügung.
Ermöglicht die Prüfung auf die Anzahl eines bestimmten Produkts im Warenkorb. Hierzu wählst Du zum einen das Produkt, das abgefragt werden soll. Zusätzlich legst Du dann einen Operator und die gewünschte Anzahl fest.
Beispiel: Produkt „Sleek Wool Wasabi Fresh“ mit der Anzahl 5
Für die Prüfung der Breite eines Produkts stehen Dir diverse Operatoren zur Verfügung. Beachte hierbei, dass sich die Breite immer auf ein einzelnes Produkt bezieht. Eine Aufsummierung erfolgt nicht.
Beispiel: 750
Mittels der Operatoren „Ist eine von“ und „Ist keine von“ kannst Du Prüfungen auf die Eigenschaften der Produkte durchführen.
Beispiel: XL
Ermöglicht die Abfrage des Erscheinungsdatums der Produkte.
Diese Bedingung steht aktuell noch nicht zur Verfügung und wird mit einem der kommenden Updates bereitgestellt.
Hierüber kannst Du auf das Erstelldatum prüfen. Das Erstelldatum bezieht sich auf den Zeitpunkt, an dem das Produkt im Shop angelegt wurde.
Diese Bedingung steht aktuell noch nicht zur Verfügung und wird mit einem der kommenden Updates bereitgestellt.
Für die Prüfung des Gewichts eines Produkts stehen Dir diverse Operatoren zur Verfügung. Beachte hierbei, dass sich das Gewicht immer auf ein einzelnes Produkt bezieht. Eine Aufsummierung erfolgt nicht.
Beispiel: 5
Für die Prüfung der Höhe eines Produkts stehen Dir diverse Operatoren zur Verfügung. Beachte hierbei, dass sich die Höhe immer auf ein einzelnes Produkt bezieht. Eine Aufsummierung erfolgt nicht.
Beispiel: 350
Für die Prüfung der Länge eines Produkts stehen Dir diverse Operatoren zur Verfügung. Beachte hierbei, dass sich die Länge immer auf ein einzelnes Produkt bezieht. Eine Aufsummierung erfolgt nicht.
Beispiel: 475
Die Prüfung der Steuersätze eines Produkts ist über die Operatoren „Ist eine von“ und „Ist keine von“ möglich. Es ist eine Mehrfachauswahl möglich. Hierzu kann aus einem Dropdown der im System angelegten Steuersätze gewählt werden.
Ermöglicht die Verwendung des Streichpreises eines Produkts als Bedingung.
Beispiel: 15
Hierüber kannst Du prüfen, ob einem Produkt eine bestimmte Kennzeichnung (engl. „Tag“) zugewiesen ist. Für die Konfiguration der Bedingung stehen die Operatoren „Ist eine von“ und „Ist keine von“ zur Verfügung. Die Tags werden in der Produktverwaltung hinzugefügt. Informationen hierzu erhältst Du hier.
Beispiel: Testtag1
Ermöglicht die Prüfung, wie viele Positionen sich im Warenkorb befinden.
Auch dazu stehen Dir diverse Optionen zur Verfügung.
Beispiel: 10
Beim Preis der Warenkorb-Güter werden nur die Preise der Produkte zusammengerechnet, es werden keine Rabatte, Gutscheine oder Versandkosten berücksichtigt.
Auch hier kannst Du aus einer Vielzahl an Operatoren wählen
Beispiel: 49,99
Neben Rechnungsland und -straße kannst Du auch auf die Rechnungsadressen-PLZ prüfen.
Die Bedingung kann entweder als Einschluss (Ist eine von) oder Ausschluss (Ist keine von) konfiguriert werden.
Beispiel: 48612, 48624, 48683
Als Bedingung kannst Du ebenfalls auf das Rechnungsland prüfen.
Auch hier definierst Du über „Ist eine von“ oder „Ist keine von“, ob die hinterlegten Länder bei Übereinstimmung gewertet werden oder wenn die Länder nicht zutreffen.
Beispiel: Schweiz, USA
Es ist auch möglich, die Rechnungsstraße als Bedingung zu verwenden.
Hier kannst Du zwischen den Operatoren „Gleich“ und „Ungleich“ wählen.
Beispiel: Ebbinghoff 10
Ermöglicht Dir die Prüfung, wie viele Tage seit der letzten Bestellung des Kunden vergangen sind.
Beispiel: 10
Hierüber kannst Du prüfen, ob es sich bei einer Position um einen Hervorgehobene Position handelt. Um ein Produkt manuell als Hervorgehobene Position zu deklarieren, kannst Du in den Einstellungen des Produkts Produkt hervorheben aktivieren.
Als Operatoren kannst Du zwischen „Ja“ und „Nein“ wählen.
Wähle hier aus den vorhandenen Verkaufskanälen Einen oder Mehrere aus.
Zusätzlich wählst Du zwischen den Operatoren „Ist eine von“ oder „Ist keine von“.
Beispiel: Hauptshop
Prüfe mittels dieser Bedingung, ob es sich um eine bestimmte Versandart handelt. Dazu wählst Du aus den Operatoren „Ist eine von“ und „Ist keine von“. Anschließend kannst Du aus einem Dropdown-Menü eine oder mehrere der vorhandenen Versandarten hinzufügen.
Dies kannst Du z.B. verwenden, um Versandarten nicht mit bestimmten Zahlungsarten zusammen anzubieten.
Beispiel: Express-Versand
Über die Operatoren „Ja“ und „Nein“ kannst Du prüfen, ob sich im Warenkorb aktuell Artikel befinden, die als versandkostenfrei markiert sind.
Wähle hier die Währung(en) aus, die für diese Bedingungen berücksichtigt werden sollen.
Es können die unter Einstellungen > Währungen definierten Währungen ausgewählt werden.
Als Operator wählst Du zwischen „Ist eine von“ oder „Ist keine von“.
Beispiel: Euro, Pfund
Prüfung auf das Gewicht des gesamten Warenkorbs.
Beispiel: 2,0
Für die Prüfung auf den Warenkorbwert stehen umfangreiche Möglichkeiten zur Verfügung.
Bitte beachte hierbei, dass dieser Bedingung keine Währung zugewiesen wird.
Wenn du dies zusätzlich an eine Währung koppeln möchtest, kannst du hierzu eine weitere, über UND verknüpfte Bedingung für Währung hinzufügen.
Beispiel: 49,99
Hierüber kannst Du eine Prüfung auf einen Wochentag durchführen.
Eine genaue Definition ist über die Operatoren „Gleich“ und „Ungleich“ möglich
Beispiel: Donnerstag
Prüfe mittels dieser Bedingung, ob es sich um eine bestimmte Zahlungsart handelt. Dazu wählst Du aus den Operatoren „Ist eine von“ und „Ist keine von“. Anschließend kannst Du aus einem Dropdown-Menü eine oder mehrere der vorhandenen Zahlungsarten hinzufügen.
Dies kannst Du z.B. verwenden, um Zahlungsarten nicht mit bestimmten Versandarten zusammen anzubieten.
Beispiel: Rechnung
Hierüber definierst du einen Zeitraum, in dem die Bedingung zutrifft. Beispiel: 06:00 – 22:00
Innerhalb einer Regel kannst Du mehrere Bedingungen miteinander verknüpfen, dadurch ist es Dir möglich, auch sehr komplexe Szenarien abzubilden.
Bei einer Und-Verknüpfung müssen alle Bedingungen zutreffen, damit die Regel erfüllt ist.
Für die Erfüllung einer Oder-Verknüpfung muss nur eine der Bedingungen übereinstimmen.
Außerdem hast Du die Möglichkeit, Unterbedingungen zu erstellen. Hierbei wird zunächst die Oberbedingung geprüft und wenn diese erfüllt ist, erfolgt die Prüfung der untergeordneten Bedingung(en).
[/expand]
[expand title=“mehr lesen…“]
| Roles & Permissions is planned for NovemberPrepare your plugin now: In November we plan to release the highly demanded feature „Roles & Permissions“ (ACL). With this feature you will be able to assign rights and roles to users in the administration. Prepare your plugins: In order for store operators to be able to use the feature „Roles & Permissions“ to its full extent, you should prepare the rights in your plugins now. What you have to do for that? The feature „Roles & Permissions“ is already completely implemented on the master (GitHub) and can be tested by activating a feature flag. A detailed instruction on how to activate the feature flag can be found below in the mailing. Important to know: All customizations are upward and downward compatible. That means you can make the changes now and your plugin is still compatible in older Shopware 6 versions and of course in future versions. Documentation Activate feature flagDevelopment Template If the Development Template is used, the feature flag can be activated as follows: 1.) The following code should be integrated in the .psh.yaml.override Check out the Code on GitHub 2.) After that the cache should be cleared with the following command: ./psh.phar cache Activate feature flagProduction Template and all other installation types For all other types of installation, proceed as follows: 1.) An environment variable should be created with the following values: FEATURE_NEXT_3722=1 You can also use e.g. the .env file. 2.) The cache should be cleared with the following command: bin/console cache:clear 800,000 +Downloads 2000 +Developers on Slack |
| shopware AG Ebbinghoff 10 Schöppingen DE: +49 (0) 2555 928850 UK: +44 (0) 203 095 2445 World: 00 800 746 7626 0 info@shopware.com Board: Stefan Hamann, Sebastian Hamann |
[/expand]
[expand title=“mehr lesen…“]
[/expand]
[expand title=“mehr lesen…“]
[/expand]
[expand title=“mehr lesen…“]
To publish your plugins in the Shopware Community Store, you need to register your own developer prefix in your Shopware account.
After that process you can compile your created theme, then create a zip file of the folder and upload your theme to the Shopware Community Store.
# run this to compile your theme
$ bin/console theme:compile
[/expand]