FROM CACHE - de_header

Paypal Express Button anzeigen abhängig vom Produkt-Preis

Paypal Express Button anzeigen abhängig vom Produkt-Preis

E-com-bird
Tourist
4 1 1

Hallo zusammen,

 

da wir in der Vergangenheit teilweise Probleme mit den Paypal Express Buttons auf der Produktseite hatten, wenn Versandkosten anfallen, würden wir diesen Button gerne abhängig vom Produktpreis anzeigen lassen wollen. Der PP Express Button soll nur angezeigt werden wenn der Produktpreis größer als 69 € ist.

 

Den entsprechenden Code habe ich hier identifiziert:

"buy_buttons": {
"type": "buy_buttons",
"settings": {
"show_smart_checkout": true
}

-> Wenn man true auf false setzt wird PP Express nicht mehr angezeigt

 

Mein Code für meine Logik sieht wie folgt aus:

 "buy_buttons": {
"type": "buy_buttons",
"settings": {
"show_smart_checkout": "{% if product.price > 69.00 %} true {% else %} false {% endif %}"

 

Leider funktioniert dieser nicht wie erwartet.

 

Für jemanden der sich mit Liquid auskennt, ist das wahrscheinlich ziemlich simpel? 😉

 

PS: Ich bin mir bewusst, dass das Nachteile bei der Page Performance haben könnte. Das wäre im Anschluss zu prüfen.

4 ANTWORTEN 4

Gabe
Shopify Staff
18475 2895 4263

Hey @E-com-bird 

 

Danke für den Code und was genau meinst du mit "Leider funktioniert dieser nicht wie erwartet"?

 

Du möchtest also den PayPal Express Button abhängig vom Produkt-Preis mit einer Liquid Logik anzeigen, indem du eine Bedingung in den "show_smart_checkout"-Wert integrierst. Allerdings gibt es einen wichtigen Punkt zu beachten: die Preise in Liquid werden in Cent (oder der kleinsten Währungseinheit) angegeben, daher wird der Vergleichswert auf 6900 gesetzt (entspricht 69 Euro):

 

{
  "buy_buttons": {
    "type": "buy_buttons",
    "settings": {
      "show_smart_checkout": "{% if product.price > 6900 %}true{% else %}false{% endif %}"
    }
  }
}

 

Beachte, dass product.price in Cent ausgedrückt sein sollte. Sollte product.price bereits in Euro ausgedrückt sein, wäre dein ursprünglicher Wert von 69.00 korrekt.

 

Zum Thema Page Performance, es ist korrekt, dass zusätzliche Logik im Liquid, insbesondere wenn sie bedingte Anweisungen umfasst, die Ladezeit negativ beeinflussen kann, es sollte allerdings relativ gering ausfallen, vor allem wenn es sich nur um eine einzige bedingte Instruction handelt. Das kannst du danach immer in der Dev Console analysieren, um zu schauen, ob es zu Verzögerungen kommt mit dem Code.

 

Wenn du es selber programmieren möchtest dann immer in einer Themekopie/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 obige ist Theme-abhängig, ohne Gewähr und dient lediglich dazu dich in die richtige Richtung zu weisen!

 

Hoffe das hilft dir weiter - lass wissen falls nicht! 😉

---
Habt ihr auch den Shop auf Ostern eingestellt das jetzt um die Ecke liegt? Warum nicht eine Ostereierjagd 🐣 in das Shop einbauen, um deinen Kunden etwas Gamification und Fun im Shop anzubieten? Gerne kann ich bei Interesse Tipps dazu geben!

Hast du weitere Fragen zum Shop? Gebe einfach ein Suchbegriff oben in der Suchleiste der Community Landingpage ein, denn das Thema haben wir sehr wahrscheinlich schon besprochen. Halte bitte Ausschau in deiner E-Mail auf Notifications zu Antworten auf deine Fragen in der Community.

Gabe | Social Care @ Shopify
 - War meine Antwort hilfreich? Klicke Like um es mich wissen zu lassen! 
 - Wurde deine Frage beantwortet? Markiere es als Akzeptierte Lösung 
 - Um mehr zu erfahren, besuche das Shopify Help Center oder den Shopify Blog

E-com-bird
Tourist
4 1 1

Hallo @Gabe ,

vielen Dank für die ausführliche und großartige Hilfe. Allerdings führt der von dir gepostete Code bei mir nicht zum gewünschten Ergebnis.

Der Paypal Express Button auf der Produktseite wird trotzdem immer angezeigt, auch bei Produkten für 39 Euro.

 

Hast du eine IDee woran das liegen kann? Die Logik klingt für mich stimmig und ich kann mir nicht erklären, warum es nicht funktioniert.

 

PS: Ich habe den Code grundsätzlich mal geprüft und bspw. in dem Visual Editor als custom liquid block eingefügt. HIer funktioniert die Prüfung der Bedingung und hier wird dann in einem Textfeld true oder false ausgegeben. Also müsste es eigentlich passen.

E-com-bird
Tourist
4 1 1

Mir kommt gerade noch eine Idee: Kann es sein, dass das System das ausgegebene true und false nicht als Boolean Wahrheitsvariable erkennt sondern lediglich als string text? Kann das vielleicht auch mit den Anführungszeichen vor und hinter dem if zusammenhängen?

 

Geht diese Logik überhaupt in einem JSON Template file oder muss ich im Theme liquid die logik einbauen, die mir true oder false zurückgibt

 

Gabe
Shopify Staff
18475 2895 4263

Hey @E-com-bird 

 

Ok lass uns das weiter analysieren - ein paar Schritte sind wir ja weiter. 💪

 

Es scheint i.d.T. dass der Challenge in der Art & Weise liegt, wie Shopify JSON mit Liquid-Logik interpretiert und wie Boolesche Werte im THeme verarbeitet werden. Insbesondere bei Liquid-Logiken innerhalb eines JSON-Strukturteils eines Shopify-Themes zu nutzen, wird es komplex, da JSON und Liquid unterschiedlich verarbeitet werden. Shopify erlaubt ja die Verwendung von Liquid innerhalb von JSON-Dateien in Themes, aber der Liquid-Code muss vor der JSON-Verarbeitung ausgeführtw erden was ggf. bedeutet, dass das Ergebnis deiner Liquid-Logik als String und nicht als Boolescher Wert in die JSON-Struktur eingefügt wird.

 

Wenn du {% if product.price > 6900 %}true{% else %}false{% endif %} verwendest, interpretiert Shopify true und false tatsächlich als Strings, nicht als Boolesche Werte. Dies könnte erklären, warum der Button immer angezeigt wird, unabhängig vom Preis des Produkts.

 

Vielleicht anstatt zu versuchen, die Logik direkt in die JSON-Struktur einzubinden, sie in einem der Liquid-Files implementieren, wo Liquid nativ unterstützt wird wie. z. B. in einen Liquid-Block, der die Bedingung zuerst prüft und dann entsprechend einen Booleschen Wert für die show_smart_checkout Einstellung setzt, wie  die folgende Logik:

 

{% assign show_smart_checkout = false %}
{% if product.price > 6900 %}
  {% assign show_smart_checkout = true %}
{% endif %}

<!-- Hier den Wert von show_smart_checkout im JSON verwenden -->

 

Diese Logik ist außerhalb der JSON-Datei, aber innerhalb des Produkt-Templates, wo der Button angezeigt wird. Vielleicht versuchen, diesen zugewiesenen Wert im JSON-Objekt einzufügen, obwohl das direkte Einbinden von Liquid-Variablen in JSON-Dateien begrenzt sein kann.

 

In einigen Threads haben User versucht, den PayPal Express Checkout-Button zu entfernen oder anzupassen. Dies beinhaltet typischerweise das Bearbeiten der Liquid-Dateien des Themes, wie product-template.liquid, und möglicherweise die Verwendung von JavaScript für dynamische Verhaltensweisen. Zum Beispiel hat einer es geschafft, einen benutzerdefinierten PayPal-Button auf der Produktseite hinzuzufügen, um sein Verhalten genauer zu steuern, einschließlich der Handhabung des Transaktionsbetrags direkt über die PayPal-API​​​.

 

Hoffe das hilft dir weiter - lass wissen falls nicht! 😉

Gabe | Social Care @ Shopify
 - War meine Antwort hilfreich? Klicke Like um es mich wissen zu lassen! 
 - Wurde deine Frage beantwortet? Markiere es als Akzeptierte Lösung 
 - Um mehr zu erfahren, besuche das Shopify Help Center oder den Shopify Blog