Atualizei o Magento para 2.2.4 e agora não tenho migalhas de pão nas páginas dos produtos. Eles aparecem em outras páginas, mas não em produtos. Verifiquei a fonte e notei que há uma div com a classe 'breadcrumbs' e alguns parâmetros json, mas está vazia (sem erros no console).
Qualquer ideia?
ATUALIZAÇÃO:
Descobri que, por uma razão que não sei explicar, o Magento começou a construir as trilhas de navegação das páginas do produto com base na navegação do menu superior usando JS e, como no meu caso, mudei o menu e usei seletores CSS diferentes, ele parou trabalhando.
Acredito que agora vou conseguir consertar isso, mas não vejo nenhuma boa razão para fazer isso, é muito frágil ...
Minha solução temporária (se isso ajudar alguém ...):
1. Crie um módulo e adicione um bloco que estenda \ Magento \ Theme \ Block \ Html \ Breadcrumbs para adicionar o método getCrumbs () * Não há necessidade 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. Substitua o modelo de trilhas de navegação na página do produto (app / design / frontend / Fornecedor / Tema / 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; ?>
breadcrumbs
magento2.2.4
Pini
fonte
fonte
Respostas:
Encontrei o mesmo problema e o fiz um pouco mais fácil e sem o ObjectManager. Eu descobri como é feito com categorias e usei isso. Em
catalog_product_view.xml
, reescrevo o modelo de volta ao modelo do Magento_Theme:Então eu escrevi pequeno plugin:
Finalmente
di.xml
:Dois problemas foram corrigidos: falta de migalhas de pão e título da página (na seção principal) na página do produto.
fonte
Para quem quer um módulo de correção até o Magento corrigir isso:
https://github.com/CompactCodeEU/FixProductBreadcrumbs.git
Eu criei isso para adicionar a casa e o produto à trilha de navegação. Além disso, isso impede que o JS seja executado, pois eu o substituo pelo html padrão.
fonte
Essas duas linhas restauram o bloco de navegação de classe. É isso aí. Nenhum plug-in personalizado ou outra coisa:
fonte
Para qualquer pessoa que chegue aqui e talvez não queira instalar algum plug-in apenas para isso, tudo que eu precisava fazer era adicionar isso ao meu modelo (está totalmente oculto) e a trilha de navegação começou a aparecer novamente:
fonte