Похоже, что нигде не определена переменная collection
.
Я бы предложил изменить начало фрагмента кода с:
{% paginate collections[settings.frontpage_collection].products by 20 %}
Кому:
{% assign collection = collections[settings.frontpage_collection] %}
{% paginate collection.products by 20 %}
Существует неявная переменная collections
всякий раз, когда вы находитесь на странице, которая включает в себя /collections/[something]
в URL, но когда вы находитесь на URL, который /page/[something]
, у вас есть неявная переменная page
в Liquid вместо этого.
Примечание: если набор, установленный в значении вашей темы для settings.frontpage_collection
, не тот, который вам нужен, вы можете:
а. Измените значение, используя ссылку «Настроить» рядом с вашей темой (проще всего найти на странице / admin / themes), полезно, если вы не собираетесь использовать эту настройку для чего-либо еще;
б. Жесткий код дескриптора коллекции, например: collections['i-am-sure-this-will-never-change']
, но жестко закодированные строки некрасивы и обычно их следует избегать;
с. Создайте свой собственный параметр темы, добавив запись в config/settings_schema.json
- см. https://help.shopify.com/en/themes/development/theme-editor/settings-schema, если вы все еще в курсе всех настроек пользовательской темы; или
d. Если весь ваш контент находится в разделе, вы можете использовать настройки раздела (аналогично настройкам темы), чтобы создать переменную, которая привязана именно к этому блоку кода.
Если вам нужно создать эти специальные страницы для нескольких коллекций, и на каждой из этих страниц в основном используется один и тот же код, вы можете упростить свою жизнь, переместив общий код в фрагмент и передав ему переменные из шаблона страницы. , Для этого:
- Создайте файл в папке «snippets» вашей темы. (Например, допустим, файл называется
collection-in-page.liquid
. Мы передадим коллекцию в этот фрагмент, поэтому вы можете удалить оператор assign
.
В своем шаблоне для конкретной страницы определите, каким будет дескриптор коллекции
а. Это может быть жестко запрограммировано, или это может быть что-то, что вы можете найти, используя метаполя или теги на странице. Примеры:
{% assign collection_handle = 'hardcoded-handle' %}
, {% assign collection_handle = page.metafields.related_items.collection %}
В шаблоне вашей страницы включите созданный вами фрагмент. Я считаю, что это помогает явно передавать любые переменные, которые я хочу использовать, например:
{% include 'collection-in-page', collection: collections[collection_handle] %}
Надеюсь, это поможет!