Цикл заполняется не только конкретной коллекцией, которую я написал для цикла. Я попробовал Может ли цикл Liquid For содержать переменную страницы
Главная страница
---
collection: criminal
---
Вот мой config.yml для настройки коллекций:
config.yml
# Collections
collections:
practices:
output: true
permalink: /legal-practice/:title:output_ext
civil:
output: true
permalink: /legal-practice/civil-law/:title:output_ext
criminal:
output: true
permalink: /legal-practice/criminal-law/:title:output_ext
attorney:
output: true
permalink: /lawyers/:title:output_ext
collections_dir: collections
Уголовная коллекция
FS: /legal/collections/_criminal
- домашнее насилие.html
- наркотики-правонарушение.html
- dui.html
- ххх
Коллекция практик
FS: /legal/collections/_practices
- гражданское право.html
- уголовное право.html
- ххх
Файл, к которому я обращаюсь, это /practice-law/criminal-defense/index.html
, который имеет front matter
определение collection: criminal
.
Включение JSON+LD определяет CollectionPage
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "CollectionPage",
"name": "{{page.title}}",
"mainEntity": {
"@type": "ItemList",
"itemListElement": [
{% for item in site[page.collection] %}
{
"@type": "article",
"name": "{{ item.title }}",
"@id": "{{site.url}}{{ item.permalink }}",
"about": { "@id": "{{item.wikidata}}" },
"mainEntity": { "@id": "{{site.url}}{{ item.permalink }}/#article" }
{% if forloop.last %} } {% else %} }, {% endif %}
{% endfor %}
]
},
"image":
{
"@type": "ImageObject",
"width": {{ page.img_width | default: site.img_width }},
"height": {{ page.img_height | default: site.img_height }},
"url": "{{ page.img_url | default: site.img_url }}"
},
"url": "{{ site.url }}{{ page.url }}",
"description": {{ page.summary | strip_newlines | strip | strip_html | remove: "\n\n" | jsonify }},
"mainEntityOfPage":
{
"@type": "CollectionPage",
"hasPart":
{
"@type": "SiteNavigationElement",
"xpath": "/html/body/nav"
},
"breadcrumb":
{
"@type": "BreadcrumbList",
"itemListElement":
[
{
"@type": "ListItem",
"position": "1",
"item":
{
"@id": "{{ site.url | append: "/index.html" }}",
"name": "Home"
}
},
{% assign crumbs = page.url | split: '/' %}
{% assign crumbs_total = crumbs | size | minus: 1 %}
{% for crumb in crumbs offset: 1 %}
{% if forloop.index == crumbs_total %}
{
"@type": "ListItem",
"position": {{ crumbs_total | plus:1 }},
"item":
{
"@id": "{{ site.url }}{{ page.url }}",
"name": {{ page.crumbtitle | jsonify }}
}
}
{% else %}
{
"@type": "ListItem",
"position": {{ crumbs_total }},
"item":
{
"@id": "{% assign crumb_limit = forloop.index | plus: 1 %}{% for crumb in crumbs limit: crumb_limit %}{{ crumb | append: '/' }}{% endfor %}",
"name": "{{ crumb | replace:'-',' ' | upcase }}"
}
},
{% endif %}
{% endfor %}
]
}
}
}
</script>
Полученные результаты
Вместо этого зацикливается массив FS: /legal/collections/_practices
вместо _criminal. Цель цикла JSON меняется на каждой странице любой коллекции, содержащей список элементов. Так обстоит дело с _criminal
. Я буду продолжать делать `JSON + LD действительным. Я просто застрял в цикле for. Инструмент тестирования структурированных данных Google показывает цикл статей из коллекции _practices вместо _criminal. https://search.google.com/structured-data/testing-tool#url=https%3A%2F%2Flegaldemo.strikehawk.com%2Fpractice-law%2Fcriminal-defense%2Findex.html< /а>