Skip to content

Instantly share code, notes, and snippets.

@zanderwar
Created January 7, 2024 10:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zanderwar/676a9e1ce297e72bc2538f940772090f to your computer and use it in GitHub Desktop.
Save zanderwar/676a9e1ce297e72bc2538f940772090f to your computer and use it in GitHub Desktop.
Shopify Query Params As Variables

Sometimes it may be useful to use query parameter values in your liquid template within Shopify, however Shopify does not expose this information.

Conveniently the content_for_header output actually includes the full page url that is being used, so with a chain of liquid filters we can actually extract this information into something we can use.

Copy the file below into your snippets folder, and on any template that you need to access query strings, simply use the following code:

{% include 'query-to-variables' %}
Sorting by {{ paramSortBy }}

The list of available parameters:

  • paramSortBy
  • paramMinPrice
  • paramMaxPrice
  • paramPage
  • paramLimit
  • paramVendor
  • paramProductType
  • paramTag
  • paramCollection
  • paramPublishedStatus
  • paramPublishedAtMin
  • paramPublishedAtMax
  • paramUpdatedAtMin
  • paramUpdatedAtMax
  • paramTitle
  • paramHandle
  • paramProductId
  • paramVariantId
  • paramCreatedAtMin
  • paramCreatedAtMax
  • paramPublishedScope
  • paramPresentmentCurrencies
  • paramSinceId
  • paramStatus
  • paramFields
  • paramTaxonomy
  • paramWeight
  • paramInventoryManagement
  • paramInventoryPolicy
  • paramInventoryQuantity
  • paramGrams
  • paramSku
  • paramBarcode
  • paramFulfillmentService
  • paramLocationId
  • paramCreatedAt
  • paramUpdatedAt
  • paramPublishedAt
  • paramMetafield

If I have made any errors or I have missed any officially supported Shopify query parameters, please comment so that I can add them

{%- capture contentForQuerystring -%}{{ content_for_header }}{%- endcapture -%}
{% assign pageUrl = contentForQuerystring
| split: '"pageurl":"'
| last
| split: '"'
| first
| replace: "\u0026", "&"
| split: '?'
| last
| split: '&'
%}
{% for param in pageUrl %}
{% assign keyValue = param | split: '=' %}
{% if keyValue[0] == 'sort_by' %}
{% assign paramSortBy = keyValue[1] %}
{% elsif keyValue[0] == 'filter.v.price.gte' %}
{% assign paramMinPrice = keyValue[1] %}
{% elsif keyValue[0] == 'filter.v.price.lte' %}
{% assign paramMaxPrice = keyValue[1] %}
{% elsif keyValue[0] == 'page' %}
{% assign paramPage = keyValue[1] %}
{% elsif keyValue[0] == 'limit' %}
{% assign paramLimit = keyValue[1] %}
{% elsif keyValue[0] == 'vendor' %}
{% assign paramVendor = keyValue[1] %}
{% elsif keyValue[0] == 'product_type' %}
{% assign paramProductType = keyValue[1] %}
{% elsif keyValue[0] == 'tag' %}
{% assign paramTag = keyValue[1] %}
{% elsif keyValue[0] == 'collection' %}
{% assign paramCollection = keyValue[1] %}
{% elsif keyValue[0] == 'published_status' %}
{% assign paramPublishedStatus = keyValue[1] %}
{% elsif keyValue[0] == 'published_at_min' %}
{% assign paramPublishedAtMin = keyValue[1] %}
{% elsif keyValue[0] == 'published_at_max' %}
{% assign paramPublishedAtMax = keyValue[1] %}
{% elsif keyValue[0] == 'updated_at_min' %}
{% assign paramUpdatedAtMin = keyValue[1] %}
{% elsif keyValue[0] == 'updated_at_max' %}
{% assign paramUpdatedAtMax = keyValue[1] %}
{% elsif keyValue[0] == 'title' %}
{% assign paramTitle = keyValue[1] %}
{% elsif keyValue[0] == 'handle' %}
{% assign paramHandle = keyValue[1] %}
{% elsif keyValue[0] == 'product_id' %}
{% assign paramProductId = keyValue[1] %}
{% elsif keyValue[0] == 'variant_id' %}
{% assign paramVariantId = keyValue[1] %}
{% elsif keyValue[0] == 'created_at_min' %}
{% assign paramCreatedAtMin = keyValue[1] %}
{% elsif keyValue[0] == 'created_at_max' %}
{% assign paramCreatedAtMax = keyValue[1] %}
{% elsif keyValue[0] == 'published_scope' %}
{% assign paramPublishedScope = keyValue[1] %}
{% elsif keyValue[0] == 'presentment_currencies' %}
{% assign paramPresentmentCurrencies = keyValue[1] %}
{% elsif keyValue[0] == 'since_id' %}
{% assign paramSinceId = keyValue[1] %}
{% elsif keyValue[0] == 'status' %}
{% assign paramStatus = keyValue[1] %}
{% elsif keyValue[0] == 'fields' %}
{% assign paramFields = keyValue[1] %}
{% elsif keyValue[0] == 'taxonamy' %}
{% assign paramTaxonomy = keyValue[1] %}
{% elsif keyValue[0] == 'weight' %}
{% assign paramWeight = keyValue[1] %}
{% elsif keyValue[0] == 'inventory_management' %}
{% assign paramInventoryManagement = keyValue[1] %}
{% elsif keyValue[0] == 'inventory_policy' %}
{% assign paramInventoryPolicy = keyValue[1] %}
{% elsif keyValue[0] == 'inventory_quantity' %}
{% assign paramInventoryQuantity = keyValue[1] %}
{% elsif keyValue[0] == 'grams' %}
{% assign paramGrams = keyValue[1] %}
{% elsif keyValue[0] == 'sku' %}
{% assign paramSku = keyValue[1] %}
{% elsif keyValue[0] == 'barcode' %}
{% assign paramBarcode = keyValue[1] %}
{% elsif keyValue[0] == 'fulfillment_service' %}
{% assign paramFulfillmentService = keyValue[1] %}
{% elsif keyValue[0] == 'location_id' %}
{% assign paramLocationId = keyValue[1] %}
{% elsif keyValue[0] == 'created_at' %}
{% assign paramCreatedAt = keyValue[1] %}
{% elsif keyValue[0] == 'updated_at' %}
{% assign paramUpdatedAt = keyValue[1] %}
{% elsif keyValue[0] == 'published_at' %}
{% assign paramPublishedAt = keyValue[1] %}
{% elsif keyValue[0] == 'published_scope' %}
{% assign paramPublishedScope = keyValue[1] %}
{% elsif keyValue[0] == 'm' %}
{% assign paramMetafield = keyValue[1] %}
{% endif %}
{% endfor %}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment