/
Shopify alternative feed template (pagination)

Shopify alternative feed template (pagination)

In case you experience issues with products missing, you can use an alternative feed template. This utilizes Shopify’s pagination system to avoid their collection display limits. The template differences are:

  • We paginate the collection, meaning Shopify will automatically generate pages such as exampleshop.co.uk/pages/squeezely-product-feed?page=2 (as many pages as needed).

  • We list the next page link in the theme via the <nextpagelink> attribute. We then recursively retrieve each next page link until we reach the last page.

  • We only list the categories on the first page to avoid redundant data.

Template:

{%- layout none -%}<?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0"> <channel> <title>{{shop.name | escape_once }} Squeezely Feed</title> <link>{{shop.url}}</link> {% assign cnt = 0 %} {% paginate collections.all.products by 50 %} <nextpagelink>{{ paginate.next.url | prepend: shop.url }}</nextpagelink> {% for product in collections.all.products %} {% for variant in product.variants %} {% assign cnt = cnt | plus: 1 %} <!-- Item #{{ cnt }} --> <item> <id>{{variant.sku}}</id> <external_object_id>{{variant.id}}</external_object_id> <condition>new</condition> <description>{{ product.description | strip_html | strip_newlines | escape_once }}</description> <link>{{shop.url}}{{variant.url}}</link> <currency>{{shop.currency}}</currency> <price>{{variant.price | divided_by: 100.00 }}</price> <inventory>{{ variant.inventory_quantity }}</inventory> <brand>{{product.vendor | escape_once }}</brand> <parent_id>{{ product.id }}</parent_id> {% if variant.title == 'Default Title' %} <title>{{ product.title | strip_html | strip_newlines | escape_once }}</title> {% else %} <title>{{ product.title | strip_html | strip_newlines | escape_once }} {{ variant.title | strip_html | strip_newlines | escape_once }}</title> {% endif %} <image_links> {% for image in product.images %} <image_link>https:{{ image | image_url}}</image_link> {% endfor %} </image_links> <category_ids> {% for collection in product.collections %} <category_id>{{ collection.id }}</category_id> {% endfor %} </category_ids> <availability>{% if variant.inventory_quantity > 0 %}in stock{% else %}out of stock{% endif %}</availability> {% if product.options_with_values.size > 0 -%} {% for optionobj in product.options_with_values -%} {% assign optionname = 'option' | append: optionobj.position %} {% if optionobj.name == 'size' or optionobj.name == 'Size' %} {% if variant[optionname] %} <size>{{ variant[optionname] }}</size> {% endif %} {% endif %} {% if optionobj.name == 'color' or optionobj.name == 'Color' %} {% if variant[optionname] %} <color>{{ variant[optionname] }}</color> {% endif %} {% endif %} {%- endfor %} {%- endif %} </item> {% endfor %} {% endfor %} {% assign pagecount = paginate.current_page %} {% endpaginate %} {% assign cnt = 0 %} {% if pagecount == 1 %} <categories> {% for collection in collections %} <category> <id>{{ collection.id }}</id> <title>{{ collection.title | strip_html | strip_newlines | escape_once }}</title> <description>{{ collection.description | strip_html | strip_newlines | escape_once }}</description> <link>{{shop.url}}{{ collection.url }}</link> </category> {% endfor %} </categories> {% endif %} </channel> </rss>

 

Related content

Installeren van Shopify Plugin
Installeren van Shopify Plugin
Read with this
Process categories concisely or extensively in XML Feed (EN)
Process categories concisely or extensively in XML Feed (EN)
More like this
Installing Shopify Plugin (EN)
Installing Shopify Plugin (EN)
Read with this
Set up the XML Feed (EN)
Set up the XML Feed (EN)
More like this
Implementeren Deployteq
Implementeren Deployteq
Read with this
Product Catalog
Product Catalog
More like this