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; ?>
Respuestas:
Encontré el mismo problema y lo hice un poco más fácil y sin ObjectManager. Descubrí cómo se hace con las categorías y lo usé. En
catalog_product_view.xml
, reescribo la plantilla nuevamente a la de Magento_Theme:Luego escribí un pequeño complemento:
Por último,
di.xml
:Se han solucionado dos problemas: faltan migas de pan y falta el título de la página (en la sección de encabezado) en la página del producto.
fuente
Para aquellos que quieren un Fix Module hasta que Magento arregle esto:
https://github.com/CompactCodeEU/FixProductBreadcrumbs.git
Creé esto para agregar el hogar y el producto a la ruta de navegación. Además, esto evita que JS se ejecute, ya que lo reemplazo por el html predeterminado.
fuente
Estas dos líneas restauran el bloque de ruta de exploración de clase. Eso es. Sin complementos personalizados u otra cosa:
fuente
Para cualquier otra persona que llegue aquí y tal vez no quiera instalar algún complemento solo para esto, todo lo que tuve que hacer fue agregar esto a mi plantilla (está totalmente oculto) y las migas de pan comenzaron a aparecer nuevamente:
fuente