Hey @Paulinchen !
Wow, das ist ein komplexer Use-Case und ob wir die Lösung finden die du brauchst, kann ich nicht versprechen. Wie hast du das früher gemacht und auf welcher Plattform? Und wenn dir unsere 1st party und nativen Features in Shopify nicht haben helfen können, sowie auch unsere Affiliate Apps, wie Refersion oder Affiliatly, dann werden wir einen anderen Approach implementieren müssen mit einem unserer zertifizierten Experten und Programmierer.
Wenn du es selber machen möchtest dann immer in einer Testumgebung zuerst testen und zusammen mit einem Experten/Programmierer. Du kannst ein Backup deines Themes erstellen, bevor man den Code bearbeitet, oder den Code wiederherstellen, falls dies nötig sein sollte. Du könntest auch einen unserer Experten engagieren indem du denen eine E-Mail rüberschießt. Unsere Experten antworten meist sehr schnell.
Änderungen zu deinem Theme Code können auch 1) die Page Loading Speeds negativ beeinflussen und 2) dein Theme aus den Theme Updates ausschließen. Das folgende ist Theme-abhängig, ohne Gewähr und dient lediglich dazu dich in die richtige Richtung zu weisen!
Dein Use-Case und dessen Komplexität
Dein spezifisches Anliegen, automatisch den besten Rabatt anzuwenden, ohne dass Kunden mehrere Codes eingeben müssen, und gleichzeitig zu verhindern, dass Rabatte sich aufstapeln, ist eigentlich mit unserem nativen Rabatt Feature möglich aber du brauchst noch etwas mehr, wie es aussieht, was eine Herausforderung darstellt. Shopify bietet zwar flexible Möglichkeiten zur Einrichtung von Rabatten, doch diese Logik wird eine etwas komplexere Herangehensweise erfordern, ggf. mit unseren Shopify Functions und Checkout UI Extensions.
Die empfohlene und notwendige Logik:
Du kannst für deine Aktionen automatische Rabatte anwenden, die auf bestimmte Produkte oder Kategorien angewendet werden, ohne dass ein Code eingegeben werden muss. So profitieren Kunden automatisch von diesen Rabatten, wenn die Bedingungen erfüllt sind.
Für die spezifische Logik, die du brauchst, teste doch mal Apps wie die oben erwähnten Affiliate Apps oder Apps wie “Automatic Discounts & Gifts” oder “Discount Ninja” ermöglichen es teilweise, komplexere Rabatt Logiken einzurichten, bei denen bestimmte Bedingungen überprüft und der bestmögliche Rabatt automatisch angewendet wird. Diese Apps bieten oft die Möglichkeit, Rabattregeln und Logiken zu erstellen, die genau auf solche Szenarien zugeschnitten sind.
Shopify selber ermöglicht es, wie gesagt, Rabatte zu kombinieren, was bedeutet, dass du verschiedene Arten von Rabatten (z.B. automatische Rabatte und Rabattcodes) gleichzeitig in deinem Shop anbieten kannst. Dies kann dazu beitragen, dass Kunden den besten verfügbaren Rabatt erhalten, ohne dass sie mehrere Codes eingeben müssen. Mehr dazu hier.
Wenn du Shopify Plus nutzt, kannst du den Shopify Script Editor verwenden, um benutzerdefinierte Rabattlogiken zu erstellen, sprich, spezifische Bedingungen für Rabatte festlegen, basierend darauf, was im Warenkorb des Kunden liegt. So kannst du beispielsweise spezielle Links und Logiken verwenden, um Rabatte nur unter bestimmten Bedingungen anzuwenden.
Zusammen mit einem Experten den Shopify Script Editor, oder die neuen Shopify Functions und Checkout UI Extensions nutzen, um mit Ruby-Skripte, die im Checkout-Prozess ausgeführt werden, die spezifische Rabattlogiken erstellen, einschließlich der Anwendung des besten Rabatts basierend auf den im Warenkorb enthaltenen Produkten.
Zuerst musst du klar definieren, unter welchen Bedingungen welche Rabatte angewendet werden sollen. Zum Beispiel:
- Wenn ein Produkt, das zu einer bestimmten Aktion gehört, im Warenkorb ist, ein Rabatt von 20% auf dieses Produkt angewendet wird.
- Wenn ein Kunde über einen Affiliate-Link kommt und einen bestimmten Code verwendet, soll ein 10% Rabatt auf alle anderen Produkte im Warenkorb angewendet werden.
Im Code muss man somit Produkte festlegen, die für best. Rabatte qualifiziert sind. Dies kann über Produkt-Tags, Produkttypen oder spezifische Produkt-IDs geschehen. Ebenso musst du die Logik implementieren, um zu erkennen, ob ein Rabattcode bereits verwendet wurde.
Du könntest eine Logik implementieren, die prüft, ob bestimmte Produkte im Warenkorb liegen und ob ein Rabattcode eingegeben wurde. Basierend darauf kannst du dann entscheiden, welcher Rabatt angewendet werden soll.
Hier ist ein Beispielcode dass ich aus den Entwickler Foren und dem obigen Blogartikel zusammen geworfen habe, habe es aber nicht testen können, es dient lediglich zur Veranschaulichung der Logik die dafür notwendig wäre:
Input.cart.line_items.each do |line_item|
product = line_item.variant.product
if product.tags.include?("Aktionsprodukt") && Input.cart.discount_code
if Input.cart.discount_code.code == "AFFILIATE10"
line_item.change_line_price(line_item.line_price * 0.9, message: "10% Affiliate Rabatt")
end
elsif product.tags.include?("Aktionsprodukt")
line_item.change_line_price(line_item.line_price * 0.8, message: "20% Aktionsrabatt")
end
end
Output.cart = Input.cart
In dieser Logik wird die product.tags.include?("Aktionsprodukt") Bedingung überprüft, ob das Produkt zu einer bestimmten Aktion gehört, und Input.cart.discount_code.code == "AFFILIATE10" prüft, ob der Affiliate-Rabattcode verwendet wurde. Basierend darauf werden entsprechende Rabatte angewendet.
Die Herausforderung besteht darin, eine Lösung zu finden, die es ermöglicht, entweder den Affiliate-Rabatt von 10% oder den Aktionen-Rabatt von 20% anzuwenden, ohne dass die Rabatte sich addieren, wenn beide Codes eingegeben werden.
Hier eine weitere Logik, die voraussetzt, dass man zwischen den Rabattcodes unterscheidet und entsprechend die Rabatte anwendet:
# Initialisiere die Rabattsätze
AFFILIATE_DISCOUNT = 0.1
ACTION_DISCOUNT = 0.2
# Funktion zur Anwendung des Rabatts
def apply_discount(line_item, discount)
line_item.change_line_price(line_item.line_price * (1 - discount), message: "#{discount * 100}% Rabatt angewendet")
end
# Überprüfe den eingegebenen Rabattcode und wende entsprechende Logik an
Input.cart.line_items.each do |line_item|
# Annahme: 'discount_code' ist der vom Kunden eingegebene Rabattcode
discount_code = Input.cart.discount_code ? Input.cart.discount_code.code : nil
# Prüfe, ob das Produkt zur Aktion gehört
if line_item.variant.product.tags.include? 'Aktionsprodukt'
# Wenn der Aktionen-Rabattcode eingegeben wurde, wende 20% Rabatt an
if discount_code == '654321'
apply_discount(line_item, ACTION_DISCOUNT)
end
# Für alle anderen Produkte
else
# Wenn der Affiliate-Rabattcode eingegeben wurde, wende 10% Rabatt an
if discount_code == '123456'
apply_discount(line_item, AFFILIATE_DISCOUNT)
end
end
end
Output.cart = Input.cart
Dieses Skript geht davon aus, dass du erkennen kannst, ob ein Produkt zur Aktion gehört (z.B. durch Produkt-Tags). Es behandelt jeden Artikel im Warenkorb individuell und wendet den entsprechenden Rabatt basierend auf dem erkannten Rabattcode und der Produktkategorie an.
Shopify unterstützt standardmäßig NICHT die Eingabe mehrerer Rabattcodes im Checkout (das sog. “Discount Code Stacking”) und somit müsste man eine Logik implementieren, die vor dem Checkout bestimmt, welcher Rabatt anzuwenden ist, oder eben eine App nutzen, die die Verwendung mehrerer Rabattcodes ermöglicht.
Die Apps erlauben viele Dinge wie verschiedene Rabatte für bestimmte Kunden erstellen samt Mengenrabatte oder Rabatte in Datumsbereichen festlegen die automatisch für Kunden angewendet wie beispielsweise Affiliates, Großhandelskunden oder B2B-Partnergruppen mit Sonderpreisen erstellen ohne manuellen Code schreiben zu müssen. Sie sind darauf ausgelegt, komplexe Rabattlogiken zu unterstützen wie “Discount Ninja”, die eine Vielzahl von Promotionen ermöglicht, wie BOGO (Buy One, Get One), gestaffelte Rabatte und automatische Rabatte, die basierend auf dem Warenkorbwert oder -inhalt angewandt werden. Diese App ermöglicht es dir, mehrere Angebote zu kombinieren und automatische Rabatte mit Rabattcodes zu stapeln, was genau das sein könnte, was du suchst:
- Erstelle Rabatte für ausgewählte Kunden, ausgewählte Produkte, mit ausgewählten Regeln.
- Kombiniere und stapel Rabatte: BOGO, kostenloses Geschenk, gestaffelte und Mengenrabatte usw.
- Schließen Kategorien oder bereits reduzierte Produkte von Verkäufen Rabatte aus.
- Bieten “VIP”-Kunden private Aktionen mit einem Rabattlink an.
- Nutzen die Leistungsfähigkeit von Shopify Functions und Checkout UI Extensions für ein skalierbares und natives Erlebnis.
Hoffe das hilft dir weiter - lass wissen falls nicht! 