Liquid, JavaScript, Themes
Hallo liebe Leute,
ich nutze das folgende Liquid um meinem Artikel pro Variante unterschiedliche Lieferzeiten geben zu können. An sich funktioniert das auch hervorragend, bis auf eine Kleinigkeit. Wenn ich die Variante wechsel wird der Code nicht erneut ausgeführt und die alte Lieferzeit bleibt bestehen. Wenn ich die Seite aktualisiere wird der Code erneut ausgeführt und das richtige Datum erscheint. Wie kann ich erreichen das der Code erneut ausgeführt wird wenn die Variante gewechselt wird ?
der Code:
{% assign holidays = "25.12,01.01,01.05" | split: "," %}
{% assign current_year = "now" | date: "%Y" %}
{% assign ShippingTime = 3 %}
{%- if product.metafields.custom.versandzeit -%}
{% assign ShippingTime = product.metafields.custom.versandzeit %}
{%- elsif product.selected_or_first_available_variant.metafields.custom.versandzeit -%}
{% assign ShippingTime = product.selected_or_first_available_variant.metafields.custom.versandzeit %}
{%- endif -%}
{% assign daysStart = ShippingTime | times: 86400 %}
{% assign daysEnd = ShippingTime | plus: 3 | times: 86400 %}
{% assign deliveryStart = "now" | date: "%s" | plus: daysStart %}
{% assign deliveryEnd = "now" | date: "%s" | plus: daysEnd %}
{%- assign deliveryStartDay = deliveryStart | date: "%w" -%}
{%- assign deliveryEndDay = deliveryEnd | date: "%w" -%}
{% comment %}
Überprüfen, ob das Start- oder Enddatum auf einen Sonntag fällt
{% endcomment %}
{%- if deliveryStartDay == '0' -%}
{% assign deliveryStart = deliveryStart | plus: 86400 %}
{%- endif -%}
{%- if deliveryEndDay == '0' -%}
{% assign deliveryEnd = deliveryEnd | plus: 86400 %}
{%- endif -%}
{% comment %}
Feiertage berücksichtigen, dynamisch mit dem aktuellen Jahr
{% endcomment %}
{%- for holiday in holidays -%}
{%- assign holiday_with_year = holiday | append: "." | append: current_year -%}
{% assign deliveryStart_formatted = deliveryStart | date: "%d.%m.%Y" %}
{% assign deliveryEnd_formatted = deliveryEnd | date: "%d.%m.%Y" %}
{% comment %}
Prüfen, ob das Start- oder Enddatum ein Feiertag ist
{% endcomment %}
{%- if deliveryStart_formatted == holiday_with_year -%}
{% assign deliveryStart = deliveryStart | plus: 86400 %}
{%- endif -%}
{%- if deliveryEnd_formatted == holiday_with_year -%}
{% assign deliveryEnd = deliveryEnd | plus: 86400 %}
{%- endif -%}
{%- endfor -%}
Vorraussichtliche Lieferung: {{ deliveryStart | date: "%d.%m.%Y" }} - {{ deliveryEnd | date: "%d.%m.%Y" }}
Vielen Dank für eure Hilfe vorab !
Gelöst! Zur Lösung
Erfolg.
@meicker folgende Seite beschreiben die Option, Varianten-Informationen beim Wechsel abzurufen. Allerdings betrifft es das Dawn Theme:
Du möchtest zwar keine SKU abrufen, aber es geht in dem Beitrag um das Prinzip, das auf dein Variantemetafeld angewandt werden kann.
@meicker, das kommt darauf an, welches Theme du verwendest, aber im Grunde musst du noch ein Skript einfügen, das diesen Bereich bei einem Variantenwechsel aktualisiert (so wie beim Preis).
Hi Finer,
ich nutze das Craft Theme.
Der Code sieht zwar toll aus, aber dabei konnte mir ChatGPT ganz gut unter die Arme greifen🤣 Leider habe ich keine Ahnung wie der Code aussehen soll und wo er hin muss. Ich hatte schon bei den .liquids geschaut aber ohne zu wissen was ich machen soll hab ich da wohl keine Chance.
Könntest Du mir helfen oder ein paar Hinweise geben ?
vg Marc
Erfolg.
@meicker folgende Seite beschreiben die Option, Varianten-Informationen beim Wechsel abzurufen. Allerdings betrifft es das Dawn Theme:
Du möchtest zwar keine SKU abrufen, aber es geht in dem Beitrag um das Prinzip, das auf dein Variantemetafeld angewandt werden kann.
da steige ich nicht durch zumal bei mir die SKU ja beim wechsel der Variante bereits aktualisiert wird. Nicht das ich da was doppelt einbaue und mir Fehler produziere.
Es müsste doch irgendwie möglich sein die bestehenden Befehle die z.B die SKU updaten auf das benutzerdefinierte liquid auszuweiten.
@meicker das ist ja mein Punkt. In der Schule hätte man das als Transferaufgabe bezeichnet. 😉
Du willst ja nicht die SKU aktualisieren, aber Du willst einen Varianten-Wert (identisch zu einer SKU) laden.
Im Theme JS sollte irgendwo eine Stelle zu finden sein, welche die SKU aktualisiert. Diese muss man dann für das Element erweitern, auf die sich das beziehen soll. Leider kenne ich den Code & die Stelle beim Craft Theme nicht.
😃Ja - so lernt man das auch - Du hast absolut Recht. Ich schaue mir das mal genauer an ...
@Finer Schade - hab es tatsächlich geschnallt und könnte es wahrscheinlich auch nutzen. Aber leider hat sich scheinbar die global.js so stark geändert, dass ich keine Passage für die Änderung mehr finde oder zuordnen könnte ... Da scheint alles anders zu sein.
Das wirft natürlich auch noch eine weitere Frage auf. Wie update sicher ist denn so eine Anpassung überhaupt ? Wenn ich ein Theme update, werden dann meine Änderungen überschrieben ? Müsste ja eigentlich so sein ... oder ?
Das ist die richtige Lösung. Ich habe es damit umsetzen können. Allerdings sind die erforderlichen Codestellen nicht wie beschrieben in der global.js sondern in der product-info.js zu finden.
Teil 2 - Wie die Prinzipien des UX-Designs dir dabei helfen können einen großartigen Shop ...
By Kai Sep 16, 2024Teil 1 - Wie die Prinzipien des UX-Designs dir dabei helfen können einen großartigen Shop ...
By Kai Sep 9, 2024Anpassungen des benutzerdefinierten Codes an Shopify-Themes (CSS) leicht gemachtIn diesem...
By Gabe Aug 28, 2024