Ich habe Magento auf 2.2.4 aktualisiert und habe jetzt keine Breadcrumbs auf den Produktseiten. Sie erscheinen auf anderen Seiten, jedoch nicht auf Produkten. Ich habe die Quelle überprüft und festgestellt, dass es ein Div mit der 'Breadcrumbs'-Klasse und einigen Json-Parametern gibt, aber es ist leer (keine Fehler auf der Konsole).
Irgendeine Idee?
UPDATE:
Ich habe herausgefunden, dass Magento aus einem Grund, den ich nicht erklären kann, begonnen hat, die Brotkrumen der Produktseiten basierend auf der Top-Menü-Navigation mit JS & zu erstellen, da ich in meinem Fall das Menü geändert und verschiedene CSS-Selektoren verwendet habe Arbeiten.
Ich glaube, dass ich das jetzt beheben kann, aber ich sehe keinen guten Grund für sie, das zu tun, es ist viel zu zerbrechlich ...
Meine vorübergehende Problemumgehung (wenn es jemandem hilft ...):
1. Erstellen Sie ein Modul und fügen Sie einen Block hinzu, der \ Magento \ Theme \ Block \ Html \ Breadcrumbs erweitert, um die Methode getCrumbs () hinzuzufügen. * Keine di.xml erforderlich
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. Überschreiben Sie die Breadcrumbs-Vorlage auf der Produktseite (App / Design / Frontend / Vendor / Theme / Magento_Catalog / templates / product / 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; ?>