首页 > 解决方案 > 使用 shopify 创建动态交货日期

问题描述

我想在我们的“添加到购物车”按钮下方显示预计交货日期。因此,我正在使用液体并尝试将英文日期翻译成德文。

我还想排除周六和周日,而是使用周一(如果预计交货日期是周日或周六)。

这就是我想出的:

{% assign wday = "today" | date: "%a" %}
{% assign dtime = 4 | times: 86400 %}
{% assign dmonth = "today" | date: "%B" %}
{% assign dday = {{ wday | plus: dtime | date: "%a"}} %}
{% assign ddate = {{ "now" | date: '%s' | plus: dtime | date: "%-d %B" }} %}
{% assign gdate = "today" | date: "%a" %}

<!-- Translation Days -->
{% if dday == 'Mon' %}
    {% assign dday = "Montag" %}
{% elsif dday == 'Tue' %}
    {% assign dday = "Dienstag" %}
{% elsif dday == 'Wed' %}
    {% assign dday = "Mittwoch" %}
{% elsif dday == 'Thu' %}
    {% assign dday = "Donnerstag" %}
{% elsif dday == 'Fri' %}
    {% assign dday = "Freitag" %}
{% elsif dday == 'Sat' %}
    {% assign dday = "Samstag" %}
{% else %}
    {% assign dday = "Sonntag" %}
{% endif %}

<!-- Translation Months -->
{% if dmonth == 'January' %}
    {% assign dmonth = 'Januar' %}
{% endif %}

<div class="delivery-trust">
    <span class="check-icon"></span> Kostenloser DHL-Versand - <span class="delivery-date">Lieferung bis {{ dday }}, {{ dmonth }}</span>
</div>

dday 已经很好用了。唯一奇怪的是,您必须添加 4 天 dtime 才能在我们当天增加 3 天。

我想无论如何都有一种更简单的方法,但我刚刚开始使用液体。

标签: shopifyliquid

解决方案


Firstly {{ }} denotes output and {% %} denotes logic. You can't use output tags within logic tags.

So your assigns should be like this:

{% assign wday = "today" | date: "%a" %}
{% assign dtime = 4 | times: 86400 %}
{% assign dmonth = "today" | date: "%B" %}
{% assign dday = wday | date: "%s" | plus: dtime | date: "%a"  %}
{% assign ddate = "now" | date: '%s' | plus: dtime | date: "%-d %B" %}
{% assign gdate = "today" | date: "%a" %}

Other than that, your code should work fine.

To account for Saturdays and Sundays, you can simply check if dday is 'Sat' or 'Sun' and recalculate dtime if necessary. Like so:

{% assign wday = "today" | date: "%a" %}
{% assign dtime = 4 | times: 86400 %}
{% assign dmonth = "today" | date: "%B" %}
{% assign dday = wday | date: "%s" | plus: dtime | date: "%a"  %}

{% comment %}If dday is 'Sat' or 'Sun', recalculate to use Monday{% endcomment %}
{% if dday == 'Sat' %}
  {% assign dtime = dtime | plus: 172800 %}
{% elsif dday == 'Sun' %}
  {% assign dtime = dtime | plus: 86400 %}
{% endif %}
{% assign dday = wday | date: "%s" | plus: dtime | date: "%a"  %}

{% assign ddate = "now" | date: '%s' | plus: dtime | date: "%-d %B" %}
{% assign gdate = "today" | date: "%a" %}

As for having to add 4 days to get a 3 day increase, that is likely due to Shopify's caching. You can check this by outputting {{ wday }} beneath your {% assign wday = "today" | date: "%a" %} line. You may see that it shows the day yesterday instead of today.

It is better to use JavaScript for these sort of date related tasks as you can't rely on the accuracy of Shopify's cached date.


推荐阅读