Микроразметка shema.org в MODX Revolution

107
10 августа 2021, 15:30

Подскажите пожалуйста такой момент. Я добавляю микроразметку, но валидатор требует чтобы у каждой крошки был мета-тег position (<meta itemprop="position" content="тут номер элемента" />).

Проблема в том, что нужно сделать счетчик именно в коде MODX, чтобы в content ставился индекс крошки, у меня даже идей особо нету как это сделать.

Вот весь код хлебных крошек:

[[BreadCrumb?
&containerTpl=`@INLINE <ul id="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList">[[+crumbs]]</ul>`
&homeCrumbTpl=`@INLINE <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a href="[[+link]]" itemprop="item"><span itemprop="name">[[+pagetitle]]</span></a><meta itemprop="position" content="" /></li>`
&currentCrumbTpl=`@INLINE <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><span itemprop="name">[[+pagetitle]]</span><meta itemprop="position" content="" /></li>`
&linkCrumbTpl=`@INLINE <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a href="[[+link]]" itemprop="item"><span itemprop="name">[[+pagetitle]]</span></a><meta itemprop="position" content="" /></li>`
&categoryCrumbTpl=`@INLINE <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a href="[[+link]]" itemprop="item"><span itemprop="name">[[+pagetitle]]</span></a><meta itemprop="position" content="" /></li>`
&maxCrumbTpl=`@INLINE <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><span itemprop="name">...</span></li>`]]
Answer 1

В последней версии Breadcrumb 1.4.4 добавлен плейсхолдер [[+position]], так что можете использовать плагин без костылей сейчас.

Answer 2

Могу только предложить использовать pdoCrumbs из библиотеки pdoTools (https://modx.com/extras/package/pdotools?version=557c464fdc532f69510518f6) там есть чанк [[+idx]] который содержит порядковый номер элемента.

Документация: https://docs.modx.pro/komponentyi/pdotools/snippetyi/pdocrumbs

Answer 3

Cниппет BreadCrumb не поддерживает плейсхолдер для значений порядковых номеров элементов.

Посмотрите в сторону использования сниппета pdoCrumbs.

Если по каким-то причинам вы хотите решить задачу на сниппете Breadcrumb, то вы можете добавить требуемый плейсхолдер сами, слегка изменив его код:

  1. Добавить перед строкой 127:
$bc = 0;
  1. Изменить строку 164 на следующую:
$placeholders = array_merge($resource->toArray(), array('link' => $link, 'idx' => ++$bc));

После этого вы сможете использовать плейсхолдер [[+idx]]

READ ALSO
как добавить слэш в конец URL адреса

как добавить слэш в конец URL адреса

не получается добавить слеш в конце url

113
JS Array не работает push

JS Array не работает push

Должен добавлять значения типа

288
Undefined при попытке вывести элемент массива (FileReader) [дубликат]

Undefined при попытке вывести элемент массива (FileReader) [дубликат]

При попытке вывести любой элемент массива получаю undefined, однако если вывести весь массив через consolelog, то он выводится

200
Работа с двусвязным списком на C++, классы

Работа с двусвязным списком на C++, классы

Нужно создать двусвязный список и проделать с ним некоторые действия - a) Добавить новый элемент в начало, b) Убрать первый элемент, c) Добавить...

217