Magento를 2.2.4로 업그레이드했으며 이제 제품 페이지에 빵 부스러기가 없습니다. 다른 페이지에는 표시되지만 제품에는 표시되지 않습니다. 소스를 확인하고 'breadcrumbs'클래스와 일부 json 매개 변수가있는 div가 있지만 비어 있습니다 (콘솔에 오류가 없음).
어떤 생각?
업데이트 :
설명 할 수없는 이유로 Magento는 JS를 사용하여 최상위 메뉴 탐색을 기반으로 제품 페이지의 빵 부스러기를 만들기 시작했습니다. 제 경우에는 메뉴를 변경하고 다른 CSS 선택기를 사용했기 때문에 중단되었습니다. 일.
나는 지금이 문제를 해결할 수 있다고 생각하지만, 그들이 그렇게할만한 이유를 볼 수는 없다. 너무 깨지기 쉽다.
내 임시 해결 방법 (누군가를 돕는 경우 ...) :
1. 모듈을 빌드하고 getCrumbs () 메소드를 추가하기 위해 \ Magento \ Theme \ Block \ Html \ Breadcrumbs를 확장하는 블록을 추가하십시오.
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. 제품 페이지에서 breadcrumbs 템플릿을 재정의합니다 (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; ?>