Actualicé Magento a 2.2.4 y ahora no tengo migas de pan en las páginas de productos. Aparecen en otras páginas pero no en productos. Revisé la fuente y noté que hay un div con la clase 'breadcrumbs' y algunos parámetros json, pero está vacío (sin errores en la consola).
¿Alguna idea?
ACTUALIZACIÓN:
descubrí que por una razón que no puedo explicar, Magento comenzó a construir las migas de pan de las páginas del producto basadas en la navegación del menú superior usando JS y, en mi caso, cambié el menú y usé diferentes selectores CSS, se detuvo trabajando.
Creo que ahora podré arreglar esto, pero no veo ninguna buena razón para que lo hagan, es demasiado frágil ...
Mi solución temporal (si ayuda a alguien ...):
1. Cree un módulo y agregue un bloque que extienda \ Magento \ Theme \ Block \ Html \ Breadcrumbs para agregar el método getCrumbs () * No es necesario 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. Anule la plantilla de migas de pan en la página del producto (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; ?>