Tôi đã nâng cấp Magento lên 2.2.4 và bây giờ tôi không có mẩu bánh mì trên các trang sản phẩm. Họ hiển thị trên các trang khác nhưng không phải trên các sản phẩm. Tôi đã kiểm tra nguồn và nhận thấy rằng có một div với lớp 'Breadcrumbs & một số thông số json, nhưng nó trống (không có lỗi trên bảng điều khiển).
Bất kỳ ý tưởng?
CẬP NHẬT:
Tôi phát hiện ra rằng vì một lý do tôi không thể giải thích, Magento bắt đầu xây dựng các mẩu bánh mì của các trang sản phẩm dựa trên điều hướng menu trên cùng bằng cách sử dụng JS và vì trong trường hợp của tôi, tôi đã thay đổi menu và sử dụng các bộ chọn CSS khác nhau, nó đã dừng đang làm việc.
Tôi tin rằng bây giờ tôi sẽ có thể khắc phục điều này, nhưng tôi không thể thấy bất kỳ lý do chính đáng nào để họ làm điều đó, nó quá mong manh ...
Giải pháp tạm thời của tôi (Nếu nó giúp ai đó ...):
1. Xây dựng mô-đun và thêm một khối mở rộng \ Magento \ Theme \ Block \ Html \ Breadcrumbs để thêm phương thức getCrumbs () * Không cần diDB
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. Ghi đè mẫu Breadcrumbs trên trang sản phẩm (ứng dụng / thiết kế / frontend / Nhà cung cấp / Chủ đề / Magento_Catalog / mẫu / sản phẩm / 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; ?>