J'ai mis à jour Magento vers 2.2.4 et maintenant je n'ai plus de fil d'Ariane sur les pages produits. Ils apparaissent sur d'autres pages mais pas sur les produits. J'ai vérifié la source et j'ai remarqué qu'il y a un div avec la classe 'breadcrumbs' et quelques paramètres json, mais il est vide (pas d'erreur sur la console).
Une idée?
MISE À JOUR:
J'ai découvert que pour une raison que je ne peux pas expliquer, Magento a commencé à construire le fil d'Ariane des pages de produits basé sur la navigation du menu supérieur en utilisant JS et puisque dans mon cas j'ai changé le menu et utilisé différents sélecteurs CSS, il s'est arrêté travail.
Je crois que maintenant je vais pouvoir régler ça, mais je ne vois aucune bonne raison pour eux de faire ça, c'est beaucoup trop fragile ...
Ma solution temporaire (si cela aide quelqu'un ...):
1. Construisez un module et ajoutez un bloc qui étend \ Magento \ Theme \ Block \ Html \ Breadcrumbs afin d'ajouter la méthode getCrumbs () * Pas besoin de 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. Remplacez le modèle de fil d'Ariane sur la page du produit (application / design / frontend / fournisseur / thème / Magento_Catalog / templates / produit / 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; ?>