Я модернізував Magento до 2.2.4 і тепер на сторінках продуктів у мене немає сухарів. Вони відображаються на інших сторінках, але не на продуктах. Я перевірив джерело і помітив, що є div з класом 'breadcrumbs' та деякими параграфами json, але він порожній (помилок на консолі немає).
Будь-яка ідея?
ОНОВЛЕННЯ:
Я дізнався, що з причини, яку я не можу пояснити, Magento почав створювати сухарі на сторінках продуктів на основі навігації в головному меню за допомогою JS, оскільки в моєму випадку я змінив меню та використав різні селектори CSS, він зупинився робочий.
Я вірю, що зараз мені вдасться це виправити, але я не бачу жодної вагомої причини для цього, бо це занадто крихко ...
Моє тимчасове вирішення (якщо це комусь допомагає ...):
1. Створіть модуль та додайте блок, який розширюється \ Magento \ Тема \ Блок \ Html \ Breadcrumbs, щоб додати метод getCrumbs () * Немає необхідності в di.xml
namespace Vendor\Module\Block\Html;
class Breadcrumbs extends \Magento\Theme\Block\Html\Breadcrumbs
{
public function getCrumbs()
{
return $this->_crumbs;
}
public function getBaseUrl()
{
return $this->_storeManager->getStore()->getBaseUrl();
}
}
2. Замініть шаблон панірувальних сухарів на сторінці продукту (додаток / дизайн / frontend / постачальник / тема / Magento_Catalog / шаблони / продукт / breadcrumbs.phtml)
<?php
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$catalogData = $objectManager->create('Magento\Catalog\Helper\Data');
$crumbs = false;
if ($breadcrumbsBlock = $objectManager->create('Vendor\Module\Block\Html\Breadcrumbs')) {
$breadcrumbsBlock->addCrumb(
'home',
[
'label' => __('Home'),
'title' => __('Go to Home Page'),
'link' => $breadcrumbsBlock->getBaseUrl()
]
);
$path = $catalogData->getBreadcrumbPath();
foreach ((array)$path as $name => $breadcrumb) {
$breadcrumbsBlock->addCrumb($name, $breadcrumb);
}
$crumbs = $breadcrumbsBlock->getCrumbs();
}
?>
<?php if ($crumbs && is_array($crumbs)) : ?>
<div class="breadcrumbs">
<ul class="items">
<?php foreach ($crumbs as $crumbName => $crumbInfo) : ?>
<li class="item <?= /* @escapeNotVerified */ $crumbName ?>">
<?php if ($crumbInfo['link']) : ?>
<a href="<?= /* @escapeNotVerified */ $crumbInfo['link'] ?>" title="<?= $block->escapeHtml($crumbInfo['title']) ?>"><?= $block->escapeHtml($crumbInfo['label']) ?></a>
<?php elseif ($crumbInfo['last']) : ?>
<strong><?= $block->escapeHtml($crumbInfo['label']) ?></strong>
<?php else: ?>
<?= $block->escapeHtml($crumbInfo['label']) ?>
<?php endif; ?>
</li>
<?php endforeach; ?>
</ul>
</div>
<?php endif; ?>