Автор Тема: Помогите разобраться с breadcrumb  (Прочитано 739 раз)

19 Февраль 2020, 20:17:22
  • Фрилансер
  • *
  • Сообщений: 142
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Добрый вечер! Помогите поправить breadcrumb.
<!-- Breadcrumb -->
{if isset($smarty.capture.path)}
{assign var='path' value=$smarty.capture.path}
{/if}

<div class="breadcrumb clearfix">
<a class="home" href="{$base_dir}" title="{l s='Return to Home'}">
    <i class="fa fa-home"></i>
    </a>
{if isset($path) AND $path}
<span class="navigation-pipe"{if isset($category) && isset($category->id_category) && $category->id_category == 1} style="display:none;"{/if}>{$navigationPipe|escape:'html':'UTF-8'}</span>
{if $path|strpos:'span' !== false}
<span class="navigation_page">{$path|@replace:'<a ': '<span itemscope itemtype="http://data-vocabulary.org/Breadcrumb"><a itemprop="url" '|@replace:'data-gg="">': '><span itemprop="title">'|@replace:'</a>': '</span></a></span>'}</span>
{else}
{$path}
{/if}
{/if}
</div>

{if isset($smarty.get.search_query) && isset($smarty.get.results) && $smarty.get.results > 1 && isset($smarty.server.HTTP_REFERER)}
    <div class="pull-right">
        <strong>
        {capture}{if isset($smarty.get.HTTP_REFERER) && $smarty.get.HTTP_REFERER}{$smarty.get.HTTP_REFERER}{elseif isset($smarty.server.HTTP_REFERER) && $smarty.server.HTTP_REFERER}{$smarty.server.HTTP_REFERER}{/if}{/capture}
            <a href="{$smarty.capture.default|escape:'html':'UTF-8'|secureReferrer|regex_replace:'/[\?|&]content_only=1/':''}" name="back">
                <i class="fa fa-chevron-left left"></i>
                {l s='Back to Search results for "%s" (%d other results)' sprintf=[$smarty.get.search_query,$smarty.get.results]}
            </a>
        </strong>
    </div>
{/if}
<!-- /Breadcrumb -->

Сейчас у меня такой код, как изменить набор атрибутов на schema.org?
19 Февраль 2020, 22:39:32
Ответ #1
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
19 Февраль 2020, 23:20:55
Ответ #2
  • Фрилансер
  • *
  • Сообщений: 142
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
https://prestashop-forum.ru/index.php/topic,10969.msg68206.html#msg68206
Делал всё как в этой теме.
При проверки микроразметки через сервис гугл. нет хлебных крошек,есть ошибка "Атрибут itemtype имеет недопустимое значение."
 
https://search.google.com/structured-data/testing-tool/u/0/#url=https%3A%2F%2Fdom-optiki.ua%2Foptika-dlya-detey
20 Февраль 2020, 11:17:24
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Цитировать
ошибка "Атрибут itemtype имеет недопустимое значение."
Это уже микроразметка товара. В product.tpl нужно проверять атрибуты у полей товара.
20 Февраль 2020, 15:27:03
Ответ #4
  • Фрилансер
  • *
  • Сообщений: 142
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Цитировать
ошибка "Атрибут itemtype имеет недопустимое значение."
Это уже микроразметка товара. В product.tpl нужно проверять атрибуты у полей товара.
Получается с breadcrumb проблем нету?
Я приложу свой Product.tpl, можете поглядеть что мне там нужно сделать?
20 Февраль 2020, 16:28:18
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 1808
  • Репутация: +49/-1
  • Сообщество PrestaShop
    • Просмотр профиля
В tpl находите все itemtype="https://schema.org/...." и приводите к правильному виду.
На сайте https://schema.org/Thing описание тегов которые можно использовать.
20 Февраль 2020, 16:51:39
Ответ #6
  • Фрилансер
  • *
  • Сообщений: 142
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В tpl находите все itemtype="https://schema.org/...." и приводите к правильному виду.
На сайте https://schema.org/Thing описание тегов которые можно использовать.
Например itemtype="https://schema.org/Product"> на что нужно заменить?
Я если честно в этом не сильно понимаю :-\
20 Февраль 2020, 20:00:22
Ответ #7
  • Ветеран
  • *****
  • Сообщений: 1808
  • Репутация: +49/-1
  • Сообщество PrestaShop
    • Просмотр профиля
https://schema.org/Product
Не меняейте, это описание схемы.
Проверять нужно свойства. Так для цены
<!-- prices -->
<p class="our_price_display" itemprop="offers" itemscope itemtype="https://schema.org/Offer">
Смотрите шаблон от дефольной темы он проходит верификацию.
21 Февраль 2020, 00:38:14
Ответ #8
  • Фрилансер
  • *
  • Сообщений: 142
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
https://schema.org/Product
Не меняейте, это описание схемы.
Проверять нужно свойства. Так для цены
<!-- prices -->
<p class="our_price_display" itemprop="offers" itemscope itemtype="https://schema.org/Offer">
Смотрите шаблон от дефольной темы он проходит верификацию.
Так и у меня так же в моем Product.tpl и остальные свойства такие-же как и в дефолтной теме.
Я разницы не нашел( :-[
21 Февраль 2020, 12:01:07
Ответ #9
  • Ветеран
  • *****
  • Сообщений: 1808
  • Репутация: +49/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Тогда еще раз запустите проверку в google.
Если опять выдаст ошибки, то удаляете разметку и добавляете по 1-му тегу.
После каждого добавления проверяете.
Так найдете в каком теги ошибка.
21 Февраль 2020, 21:16:00
Ответ #10
  • Фрилансер
  • *
  • Сообщений: 142
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
<!-- Breadcrumb -->
{if isset($smarty.capture.path)}{assign var='path' value=$smarty.capture.path}{/if}
{if !empty($path)}
{$matchCount = preg_match_all('/<a.+?href="(.+?)"[^>]*>([^<]*)<\/a>/', $path, $matches)}
{$breadcrumbs = []}
{for $i=0; $i < $matchCount; $i++}
{$breadcrumbs[] = ['url' => $matches[1][$i], 'title' => $matches[2][$i]]}
{/for}
{$match = preg_match('/>([^<]+)(?:<\/\\w+>s*)?$/', $path, $matches)}
{if !empty($matches[1])}
{$breadcrumbs[] = ['url' => '', 'title' => $matches[1]]}
{elseif !$match && !$matchCount}
{$breadcrumbs[] = ['url' => '', 'title' => $path]}
{/if}
{/if}
<div class="clearfix">
<ol class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList">
<li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
<a class="home" href="{if isset($force_ssl) && $force_ssl}{$base_dir_ssl}{else}{$base_dir}{/if}" title="{l s='Return to Home'}" itemprop="item">
<i class="fa fa-home"></i>
</a>
<meta itemprop="name" content="{l s='Home'}" />
<meta itemprop="position" content="1" />
</li>
{if !empty($breadcrumbs)}
{foreach from=$breadcrumbs item=breadcrumb name=crumbs}
<li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
{if !empty($breadcrumb.url)}
<a href="{$breadcrumb.url}" itemprop="item" title="{$breadcrumb.title}">
<span itemprop="name">{$breadcrumb.title}</span>
</a>
{else}
<span itemprop="name">{$breadcrumb.title}</span>
{/if}
<meta itemprop="position" content="{($smarty.foreach.crumbs.iteration|intval + 1)}" />
</li>
{/foreach}
{/if}
</ol>
</div>
{if isset($smarty.get.search_query) && isset($smarty.get.results) && $smarty.get.results > 1 && isset($smarty.server.HTTP_REFERER)}
<div class="pull-right">
<strong>
{capture}{if isset($smarty.get.HTTP_REFERER) && $smarty.get.HTTP_REFERER}{$smarty.get.HTTP_REFERER}{elseif isset($smarty.server.HTTP_REFERER) && $smarty.server.HTTP_REFERER}{$smarty.server.HTTP_REFERER}{/if}{/capture}
<a href="{$smarty.capture.default|escape:'html':'UTF-8'|secureReferrer|regex_replace:'/[\?|&]content_only=1/':''}" name="back">
<i class="icon-chevron-left left"></i> {l s='Back to Search results for "%s" (%d other results)' sprintf=[$smarty.get.search_query,$smarty.get.results]}
</a>
</strong>
</div>
{/if}
<!-- /Breadcrumb -->
Нашел вот такой пример, все работает кроме одного гугл выбивает ошибку
item     Необходимо указать значение для поля item.
В чем проблема, кто-то может подсказать)?
22 Февраль 2020, 11:04:37
Ответ #11
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
itemtype="http://schema.org/ListItemобъявляется 1 раз, а не в цикле для каждого элемента списка
itemprop="item"не для ссылки, можно добавить span.
22 Февраль 2020, 21:52:55
Ответ #12
  • Фрилансер
  • *
  • Сообщений: 142
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
itemtype="http://schema.org/ListItemобъявляется 1 раз, а не в цикле для каждого элемента списка
itemprop="item"не для ссылки, можно добавить span.
Исправил стало 6 ошибок((
23 Февраль 2020, 12:15:31
Ответ #13
  • Ветеран
  • *****
  • Сообщений: 1808
  • Репутация: +49/-1
  • Сообщество PrestaShop
    • Просмотр профиля
У меня схема - itemtype="http://schema.org/BreadcrumbList"
И элементы -  itemprop="itemListElement" itemtype="http://schema.org/ListItem"
Ошибок нет.
23 Февраль 2020, 14:30:03
Ответ #14
  • Фрилансер
  • *
  • Сообщений: 142
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
У меня схема - itemtype="http://schema.org/BreadcrumbList"
И элементы -  itemprop="itemListElement" itemtype="http://schema.org/ListItem"
Ошибок нет.
Так и у меня в коде тоже самое.
А можешь мой код у себя проверить, тоже ошибок нет?