schafferer/common-bundle

schafferer common changes that do not fit into more specialized bundle

4.22.1 2024-04-22 07:24 UTC

README

Any changes that apply to all schafferer shops but can not be placed into a sensible bundle. The Bundle should include all other Bundles that are common to all Schafferer projects.

To automatically activate any new bundle, make sure you add it to ./bundles.inc.php

Google Analytics: Rohertrag (#34612)

Es wird der Netto-Rohertrag übermittelt. Das Bundle setzt voraus, dass das external tracker bundle installiert und aktiv ist.

Variantenwert im Produktname (#34844)

Da Schafferer den Variantenwert immer schon im Produktnamen führt, fügen wir den Wert nicht mehr automatisch an den Produktnamen.

Produktname in Listen (#34867)

Über das Feld "Alternativer Produktname für Listen" beim Produkt kann ein Alternativtitel für das Produkt in allen Listenansichten ausgegeben werden.

Produktbilder in Listen (#34867)

Ist das Feld "Alternatives Listenbild" gefüllt, dann wird dieses Bild in allen Produkt-Listen verwendet.

Produktlisten einschränken

Produktlisten können eingeschränkt werden, indem ein Service erstellt wird, der das Interface \Schafferer\Common\Interfaces\QuerySnippetModifierInterface implementiert und mit "schafferer_common.active_product_query_modifier" getagged wird.

Teaser Texte aus HTML extrahieren (#34867 Kommentar 8)

Der Service schafferer_common.teaser_text_extractor kann verwendet werden, um einen Plain-Text Teaser aus einem HTML Text zu generieren.

Validierung von Adressfeldern

Um das etwas zu vereinheitlichen, wurde \Schafferer\CommonBundle\Bridge\Chameleon\TableObject\DataExtranetUserAddressTableObject eingefügt. Dort wird Resources/config/validation.xml verarbeitet.

Wichtig: die Gruppen mit angeben (ob die Validierung für Rechnungs-, Liefer- oder beide Adressen gilt).

Achtung: Module wie Registrierung oder Newsletteranmeldung werden aktuell separat validiert. Das heisst, die oben aufgeführte validation.xml kommt dort nicht zum Einsatz. Dies betrifft genauer folgende Module:

  • \Schafferer\CustomerBundle\Bridge\Chameleon\TableObject\ExtranetUser
  • \MTPkgNewsletterSignup

Es ist nicht ausgeschlossen, dass noch weitere unabhängige Validierungen von Adressdaten im jeweiligen System vorhanden sind.

Events

Wenn ein Datensatz im Backend gespeichert wird, dann wird der Event \Schafferer\CommonBundle\SchaffererCommonEvent::RECORD_CHANGED_VIA_TABLE_EDITOR geworfen.

Wenn ein Produkt aktiviert/deaktiviert wird (z.B. durch einen Kauf - oder durch Lagerbestandsänderungen), dann wird der Event \Schafferer\CommonBundle\SchaffererCommonEvent::PRODUCT_ACTIVATED bzw \Schafferer\CommonBundle\SchaffererCommonEvent::PRODUCT_DEACTIVATED geworfen.

Gast Besteller bekommen immer eine neue Kundennummer (#37342)

In der Regel bekommen Gast-Besteller einmal eine Kundennummer und behalten diese dann für dei aktive session. Das hat zur Folge, dass mehrere Bestellungen des gleichen Kunden in der gleichen Session immer mit der gleichen Kundennummer ausgeführt werden.

Dieses Verhalten wurde für Schafferer so angepasst, dass die Kundennummer des Gastbestellers nach erfolgreicher Bestellung zurück gesetzt wird (per event Listener. Event: \Schafferer\CommonBundle\SchaffererCommonEvent::ORDER_CREATED_SUCCESS_EVENT).

Kundenlogin (E-Mailadresse) ist immer in Kleinbuchstaben (#36471)

Bei Registrierung und Login werden die Kundeneingaben der E-Mailadresse zu kleinbuchstaben umgewandelt. So ist es egal, ob der Kunde bei der E-Mailadresse Groß- oder Kleinbuchstaben verwendet.

Produkt existiert, ist aber nicht mehr aktiv: HTTP Code 404. Wenn das Produkt überhaupt nicht existiert: HTTP Code 410 (#40261)

Es gibt einen Produkkontroller (shop_article_inactive_product_code) der dieses Verhalten umsetzt. Es gibt aber auch noch zwei andere Produkt-Controller. Je nachdem, welchen man aktiv haben möchte, muss man diesen im CMS unter Routing-Konfiguration höher sortieren.

Liste der Produkt-Controller:

Inaktive Produkte (410 -> Produkt exisitert nicht 404 -> Produkt nicht aktiv) Inaktive Produkte (404 und Kategorieseite anzeigen) Produkte (Nur Kunden Katalog Produkte anzeigen)

44834 Staffelpreise über Rabatte mit Anzeige auf Detailseite und Overlay mit weiteren Produkten die für diesen Rabatt in Frage kommen.

Es können nun zusammenhängende Rabatte angelegt werden, die dann als Staffelpreise auf der Produktdetailseite angezeigt werden. Beim Rabatt muss das Feld "ist eine Rabattstaffel" auf "Ja" gestellt werden. Die Felder "Mindestanzahl betroffener Artikel" und "Maximalanzahl betroffener Artikel" müssen für eine Staffel korrekt konfiguriert werden. Im Feld "vorherige Rabattstaffel" muss immer die niedrigere Staffel ausgewählt werden. Bei der ersten Staffel muss dieses Feld leer bleiben.

z.B. Staffel 1 - Stück 5-9 5% Rabatt -> Feld "vorherige Rabattstaffel" bleibt leer.

    Staffel 2 - Stück 10-20 10% Rabatt -> Feld "vorherige Rabattstaffel" hier muss Staffel 1 ausgewählt werden.
    

Die Produkte die für die Rabattstaffeln gültig sind, müssen entweder im Feld "Auf folgende Artikel oder im Feld "Auf folgende Produktkategorien einschränken" einschränken" asugewählt werden. Beides geht nicht.

Rabattstaffeln gelten nur für Prozentuale Rabatte nicht für absolute Werte, das das CMS den absoluten Wert nur von der Gesammtsumme abzieht nicht aber von dem Preis jedes einzelnen Artikels.

Zum Anzeigen aller Artikel, die für den Rabatt in Frage kommen, muss eine Seite mit einer Artikelliste im CMS angelegt werden. Bei der Artikelliste muss unbedingt der Filter "Produkte die für den aktiven Rabatt gelten." verwendet werden. Diese Seite muss dann im Portal bei der Systemseite "Produktliste für aktiven Rabatt" ausgewählt werden.