Debug liquid for Shopify

I'm really puzzled and can't understand why my {{ time }} returns an empty value.

I'm trying to calculate the difference between the time currently and a booking time in Shopify. For the booking I have the date (first line_item.property) and the time (second one) coming separately. I want to add one to another and then compare it to the current time, but before I can do the math I have tried to display the different variables I have created.{{ now }} & {{ date }} work fine but for {{ time }} it returns an empty value. On the other hand if instead of assigning it a value name I just display the line.item.property it works just fine.

Can you help me understand what I am doing wrong here?

 {% assign today = 'now' | date: '%s' %} {% for order in customer.orders %} {%- for line_item in order.line_items -%} {% for property in line_item.properties limit:1 %} {% assign date = property.last | date: '%s' %} {% endfor %} {% for property in line_item.properties offset:1 %} {% assign time = property.last | date: '%s' %} {% endfor %} {%- endfor -%} {{ now }} - {{ date }} - {{ time }} {% endfor %}
1

2 Answers

By using plus: 0 you can convert the string to integer, this will enable math operation for your comparison.

 {% assign today = 'now' | date: '%s' | plus: 0 %}

check with {% unless line_item.properties == empty %} to see if properties exist.

{% assign date = property.last | date: '%s' %} , the variable property.last must follow a well-formatted dates for date to work. liquid-date-format

{% for property in line_item.properties offset:1 %} {% assign time = property.last | date: '%s' %} {% endfor %}

problem with offset:1, if the array only has 1 line_item.properties this will not run at all. Hence time is empty; or it exist but property.last does not have a date format.

{% assign today = 'now' | date: '%s' | plus: 0 %}
{% for order in customer.orders %} {%- for line_item in order.line_items -%} {% unless line_item.properties == empty %} {% for property in line_item.properties %} {% if forloop.index == 1 %} {% assign date = property.last | date: '%s' | plus: 0 %} {% if date == 0 %} {% comment %}Opp! Not A Date, Terminate loop{% endcomment %} {% break %} {% endif %} {% else %} {% assign time = property.last | date: '%s' | plus: 0 %} {% unless time == 0 %} {% assign date = date - time %} {% endunless %} {% endif %} {% endfor %} {% endunless %}
{% endfor %}
{{today - date}}
0

Thanks Charles that really unblocked me. Posting here the final version I went with as I needed to compare exact time and not simply the date of the order.

 {% assign now_date = 'now' | date: '%s' | plus: 0 %} {% assign now_time = 'now' | date: '%s' | plus: 0 %} {% for order in customer.orders %} {%- for line_item in order.line_items -%} {% for property in line_item.properties limit:1 %} {% assign booking_date = property.last | date: '%s' | plus: 0 %} {% endfor %} {% for property in line_item.properties offset:1 limit:1 %} {% assign booking_time = property.last | date: '%s' | plus: 0 %} {% endfor %} {% assign date_to_compare = booking_date | plus: '86400' %} {% unless now_date > date_to_compare %} {% if now_time <= booking_time or now_date <= booking_date %}SEANCE A VENIR{% endif %} {% endunless %} {%- endfor -%} {% endfor %}

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

You Might Also Like