Задать вопрос

Пытаюсь создать модификатор для breadcrumb OpenCart 3 — где напортачил?

Доброго времени суток!
Пытаюсь создать, мой первый, модификатор для breadcrumb в OpenCart 3. И он даже работает, но с небольшой ошибкой.
В шаблоне есть код
<div class="breadcrumbs">
	<div class="container">
      <ul class="breadcrumb">
        {% for breadcrumb in breadcrumbs %}
        <li><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
        {% endfor %}
      </ul>
    </div>
</div>


Его я изменяю этим кодом
<?xml version="1.0" encoding="UTF-8"?>
<modification>
	<code>microdata_breadcrumblist</code>
	<name><![CDATA[Microdata BreadcrumbList OC 3.0.x]]></name>
	<version><![CDATA[1.0]]></version>
	<author><![CDATA[AlexSF]]></author>
	<date><![CDATA[2018.02.01]]></date>
	<file path='catalog/language/ru-ru/ru-ru.php'>
		<operation info='Fix for Font Awesome'>
			<search><![CDATA[
				<i class="fa fa-home"></i>
			]]></search>
			<add position='replace'><![CDATA[
				<i class="fa fa-home"></i><span style="display:none">Главная</span>
			]]></add>
		</operation>
	</file>
	<file path='catalog/view/theme/*/template/{product,information,checkout,account}/*.twig'>
		<operation error="skip">
			<search><![CDATA[
				<ul class="breadcrumb">
        	]]></search>
			<add position="replace" offset="12"><![CDATA[
				<ul class="breadcrumb" itemscope itemtype="https://schema.org/BreadcrumbList">
					{% for key,breadcrumb in breadcrumbs %} 
					<li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
					<a itemscope itemtype="https://schema.org/Thing" itemprop="item" href="{{ breadcrumb['href'] }}">
						<span itemprop="name">{{ breadcrumb['text'] }}</span>
					</a>
					<meta itemprop="position" content="{{ key+1 }}" />
					</li>
					{% endfor %} 
				</ul>
			]]></add>
		</operation>
	</file>
</modification>

Свою задачу модификатор выполняет = добавляет микроразметку schema.org. Но после его ещё добавляются li из исходного кода которые дублируют ссылки на страницы.
5a73f1e65b08e945824908.png
Где я ошибся?
Почему модификатор не полностью заменяет исходный код своим?

Спасибо!
  • Вопрос задан
  • 485 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
zoozag
@zoozag
Opencart
<add position="replace" offset=" количество строк">
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Konstanin_by
Вчера на Гуглил Ваш вариант Microdata BreadcrumbList. Модификатор рабочий, но при анализе в Webmaster Tools - Rich получаю ошибку. Требует добавить значение для @id . После нескольких часов, потраченных на попытки понять чего хочет Google, меня "о синило" - Google хочет тоже самое, но в формате ld+json ! Потратил ещё несколько часов. Когда не знал, а ещё и забыл - потратить несколько часов это нормально. В итоге у меня получился такой Модификатор Breadcrumb ld+json для OpenCart 3
<?xml version="1.0" encoding="UTF-8"?>
<modification>
  <code>breadcrumblist_json</code>
  <name><![CDATA[BreadcrumbList ld+json OC 3.0.x]]></name>
  <version><![CDATA[1.0]]></version>
  <author><![CDATA[AlexSF]]></author>
  <date><![CDATA[2020.03.04]]></date>  
  <file path='catalog/language/ru-ru/ru-ru.php'>
    <operation info='Fix for Font Awesome'>
      <search><![CDATA[
        <i class="fa fa-home"></i>
      ]]></search>
      <add position='replace'><![CDATA[<i class="fa fa-home"></i><span style="display:none">Главная</span>]]></add>
    </operation>
  </file>  
  <file path='catalog/view/theme/*/template/{product,information,checkout,account}/*.twig'>
    <operation error="skip">
      <search><![CDATA[
        <ul class="breadcrumb">
        	]]></search>
      <add position="before"><![CDATA[
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "BreadcrumbList",
"itemListElement":
[
{% for key,breadcrumb in breadcrumbs %}
  {
	  "@type": "ListItem",
	  "position": {{ key+1 }},
	  "item":
	  {
		  "@id": "{{ breadcrumb['href'] }}",
		  "name": "{{ breadcrumb['text']|striptags }}"
	  }
  {% if loop.last == false %}
	},  
  {% else %}
	}
  {% endif %}
{% endfor %}
 ]
}
</script>
      ]]></add>
    </operation>
  </file>  
</modification>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы