FROM CACHE - de_header

Impact Shipping Bar

egiflex
Shopify Partner
2 0 0

Hi ! leuts, ich hab mich mit Blackbox.ai und so weiter mal in den Code getraut...
es geht um den free-shipping-bar.liquid

der sieht so aus:

 

 

 

{%- liquid
  assign calculated_total_price = 0

  for line_item in cart.items
    if line_item.requires_shipping
      assign calculated_total_price = calculated_total_price | plus: line_item.final_line_price
    endif
  endfor
-%}

<free-shipping-bar class="free-shipping-bar" threshold="{{ settings.cart_free_shipping_threshold | times: 100.0 }}" total-price="{{ calculated_total_price }}" reached-message="{{ 'cart.free_shipping_bar.limit_reached_html' | t | escape }}" unreached-message="{{ 'cart.free_shipping_bar.limit_unreached_html' | t | escape }}">
  {%- comment -%}The span below is the placeholder where the content will be inserted in JS{%- endcomment -%}
  <span>&nbsp;</span>

  <progress-bar class="progress-bar" role="progressbar" aria-valuemin="0" style="--progress: 0"></progress-bar>
</free-shipping-bar>

 

 

 

 und der rechnet aus wie viel Warenwert noch nötig ist, dass man die Promotion bekommt:

Bildschirmfoto 2024-01-14 um 03.16.43.png

Ich werde gleich den modifizierten Code posten.. Unser Ziel ist es das line_item mit einem Filter zu versehen. Damit nur die Produkte mit dem Tag BACandles zum Free Shipping Bar gezählt werden.

et voilà:

 

 

 

{%- liquid
 assign calculated_total_price = 0

 for line_item in cart.items
    if line_item.requires_shipping
      for tag in line_item.product.tags
        if tag == "BACandles"
          assign calculated_total_price = calculated_total_price | plus: line_item.final_line_price
        endif
      endfor
    endif
 endfor
-%}

<free-shipping-bar class="free-shipping-bar" threshold="{{ settings.cart_free_shipping_threshold | times: 100.0 }}" total-price="{{ calculated_total_price }}" reached-message="{{ 'cart.free_shipping_bar.limit_reached_html' | t | escape }}" unreached-message="{{ 'cart.free_shipping_bar.limit_unreached_html' | t | escape }}">
 {%- comment -%}The span below is the placeholder where the content will be inserted in JS{%- endcomment -%}
 <span>&nbsp;</span>

 <progress-bar class="progress-bar" role="progressbar" aria-valuemin="0" style="--progress: 0"></progress-bar>
</free-shipping-bar>

 

 

 

 Siehst du den kleinen aber feinen Unterschied? true/false? haha nein, leider nach einigen Stunden probieren und verzweifeln komme ich nicht zu einer Lösung die klappt. Es zählt immer noch alle Produkte genau gleich zusammen bis CHF 200.--  Ich finde, das wäre richtig cool, wenn wir hier zusammen eine Lösung ausarbeiten. Die Damen der BA Candles freuts dann natürlich am meisten, wenn Sie durch unsere Hilfe mehr Kerzen verkaufen könnten. Bei Fragen gerne einfach Bescheid geben. Ich danke dir vorab. !!!

1 ANTWORT 1

Gabe
Shopify Staff
15895 2517 3759

Hey @egiflex 

 

Danke  für die Angaben und ich sehe, du versuchst, den Shopify-Code so anzupassen, dass nur Produkte mit dem spezifischen Tag "BACandles" zur Berechnung des Mindestbetrags für kostenlosen Versand beitragen. Der modifizierte Code sollte theoretisch korrekt sein, da er über die Tags der Produkte iteriert und nur den Preis der Produkte mit dem entsprechenden Tag zur Gesamtsumme hinzufügt.

 

Jedoch funktioniert der Code nicht wie erwartet, wie du sagst? Wenn ja, es könnte sein, dass das Problem irgendwo anders im Ablauf liegt. Zum Beispiel könnte es sein, dass die Tags nicht korrekt ausgewertet werden, oder dass es irgendwo einen Fehler in der Logik gibt, der nicht offensichtlich ist. Hast du mit den Hextom App Entwickler darüber gesprochen? Die können hier bestimmt die besten Pro-Tipps abgeben! 😉

 

Vielleicht könntest du den Code, der sich auf das Rendering der Free-Shipping-Bar bezieht, und die dazugehörige JavaScript-Logik mit den App Entwickler mit einer 🔎 👀... Es ist möglich, dass der 🪱 in der berechneten Gesamtsumme die dann im Frontend verarbeitet wird, sitzt... 😉

 

{%- liquid
 assign calculated_total_price = 0

 for line_item in cart.items
    if line_item.requires_shipping
      for tag in line_item.product.tags
        if tag == "BACandles"
          assign calculated_total_price = calculated_total_price | plus: line_item.final_line_price
        endif
      endfor
    endif
 endfor
-%}

 

Diese FOR-Loop macht ja folgendes:

  1. Sie initialisiert calculated_total_price mit 0.
  2. Sie iteriert über alle line_item im Warenkorb.
  3. Für jedes line_item, das Versand benötigt, durchgeht sie dann alle tags des Produktes.
  4. Wenn das Produkt den Tag "BACandles" hat, addiert sie den final_line_price des line_item zur calculated_total_price.

Hier sind ein paar Dinge, die zu beachten sind oder die möglicherweise Probleme verursachen könnten:

  • Stelle sicher, dass line_item.product.tags tatsächlich die Tags des Produkts enthält. Manchmal können sich Tags in einer anderen Eigenschaft befinden oder die Tags sind nicht richtig gesetzt.
  • Wenn ein Produkt mehr als ein Tag hat und einer davon "BACandles" ist, wird es trotzdem zum Gesamtpreis hinzugefügt. Ist das beabsichtigt?
  • Beachte, dass die Logik in if tag == "BACandles" nur dann den Preis hinzufügt, wenn der Tag exakt "BACandles" ist. Es ist case-sensitive, was bedeutet, dass "bacandles" oder "BA Candles" nicht als Übereinstimmung zählen würden.

Es gibt auch eine andere Möglichkeit, wie dieser Code scheitern könnte:

  • Wenn das Produkt die entsprechenden Tags hat, aber line_item.requires_shipping auf false gesetzt ist, wird der Preis dieses Artikels nicht hinzugefügt. Stelle sicher, dass requires_shipping korrekt für die Produkte gesetzt ist, die du zählen möchtest.
  • Außerdem könnte es sein, dass final_line_price nicht der Wert ist, den du verwenden möchtest. Es gibt verschiedene Preisattribute für Line-Items in Shopify, wie z.B. line_price, original_line_price, final_line_price etc., und manchmal kann es sein, dass man ein anderes Attribut verwenden muss, um die korrekte Preislogik zu bekommen.

Es könnte auch nützlich sein, zusätzliche Debugging-Informationen auszugeben, um zu überprüfen, welche Line-Items berücksichtigt werden. Du könntest zum Beispiel vorübergehende Ausgaben in deinen Code einfügen, um zu überprüfen, welche Produkte und Tags verarbeitet werden:

{%- liquid
 assign calculated_total_price = 0

 for line_item in cart.items
    if line_item.requires_shipping
      for tag

 

in line_item.product.tags
# Debug-Ausgabe des Tags
echo "Verarbeitung des Tags: ", tag, "\n"
if tag == "BACandles"
# Debug-Ausgabe des Preises, der zum totalen Preis hinzugefügt wird
echo "Hinzufügen des Preises: ", line_item.final_line_price, "\n"
assign calculated_total_price = calculated_total_price | plus: line_item.final_line_price
endif
endfor
endif
endfor
-%}

 

Diese Debug-Ausgaben werden in der Liquid-Vorschau angezeigt, wenn du die Vorlage in deinem Shopify-Admin-Bereich bearbeitest. Sie werden nicht im Frontend angezeigt, aber du kannst sehen, was im Admin-Bereich passiert, wenn du Änderungen vornimmst oder den Code testest. Vergiss nicht, diese Debug-Ausgaben zu entfernen, bevor du den Code live schaltest.
 
Wenn du immer noch Probleme hast, nachdem du diese Punkte überprüft hast, wäre es hilfreich, die vollständige JavaScript-Funktionalität zu sehen, die diese Variablen im Frontend verwendet, um den Fortschrittsbalken zu aktualisieren. Dort könnte auch ein Problem liegen, insbesondere wenn der Wert von `calculated_total_price` nicht korrekt verarbeitet oder gerendert wird.
 
Falls du mehr Unterstützung brauchst, empfehle ich den Code mit den App Entwickler durchzugehen und zu sehen, ob ihr gemeinsam den 🪱 findet. Es wäre hilfreich, wie gesagt, denen die JavaScript-Funktionen zur Verfügung zu stellen, die die Werte aus dem Liquid-Template verarbeiten, oder weitere Kontextinformationen darüber, wie die Free-Shipping-Bar im Frontend dargestellt und aktualisiert wird. Wie gesagt, die App Entwickler können dazu am besten beraten. 

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