variable unless tag else all_products shopify liquid liquid-layout

shopify - unless - Fecha Matemáticas/Manipulación en Filtro de Plantilla Líquido



unless liquid shopify (1)

Estoy creando una "URL de integración" en Desk.com, que utiliza la sintaxis del filtro de la plantilla de Shopify Liquid. Esta URL debe contener una "fecha de inicio" y una "fecha de finalización" para una consulta donde la fecha de inicio es hace 7 días y la fecha de finalización es ahora.

Para lograr esto, creo que necesito restar 7 días (604800 en tiempo de época) del objeto ''ahora'' y luego aplicar mi formato, pero no puedo entender la sintaxis válida para eso.

Para la hora actual, esta sintaxis es válida y funciona: {{''now'' | date: "%b %d, %Y %I:%M %p -0500" | uri_encode | replace:"+","%20"}} {{''now'' | date: "%b %d, %Y %I:%M %p -0500" | uri_encode | replace:"+","%20"}}

Hace 7 días, aquí está lo mejor que pude encontrar (no funciona): {{''now'' | minus : 604800 | date: "%b %d, %Y %I:%M %p -0500" | uri_encode | replace:"+","%20"}} {{''now'' | minus : 604800 | date: "%b %d, %Y %I:%M %p -0500" | uri_encode | replace:"+","%20"}}

¿Alguna sugerencia sobre una sintaxis válida para "hace 7 días" en Liquid? Apreciaría mucho cualquier consejo!


Muchas gracias a @iveskev del equipo "WOW" de Desk.com por esta respuesta:

Si haces {{''now''}} , devuelve la cadena "ahora", no una marca de tiempo para la hora actual. Así que si lo haces {{''now'' | minus: 604800 }} {{''now'' | minus: 604800 }} devuelve "-604800" no la hora actual de Unix menos 604800. Cuando usa el filtro de date , entonces el líquido detecta que está haciendo referencia a la hora actual y genera la hora como una cadena. Sin embargo, incluso si obtenemos ''ahora'' para generar la fecha actual, todavía estamos restando de una cadena y, por lo tanto, se devolverá con "-604800". La única vez que las matemáticas en una cadena funcionan correctamente es si la picadura es solo un número.

Entonces, para obtener la fecha correcta, primero tenemos que obtener la marca de tiempo de Unix por ahora, hacer la resta y luego volver a formatear al formato deseado. Puedes usar %s para obtener tiempo de Unix. Así que para obtener la hora actual en Unix sería: {{''now'' | date: ''%s'' }} {{''now'' | date: ''%s'' }}

En ese momento, puede hacer la resta y luego formatear la hora de la manera correcta. Podemos hacer todo esto de una vez en la siguiente declaración:

{{''now'' | date: "%s" | minus : 604800 | date: "%b %d, %Y %I:%M %p -0500" | uri_encode | replace:"+","%20"}}