まず、モジュールにブロックを追加する必要があります
道: app\code\Vendor\Module\Block\Crumbblock.php
<?php
namespace Vendor\Module\Block;
use Magento\Catalog\Helper\Data;
use Magento\Framework\View\Element\Template\Context;
use Magento\Store\Model\Store;
use Magento\Framework\Registry;
class Crumbblock extends \Magento\Framework\View\Element\Template
{
/**
* Catalog data
*
* @var Data
*/
protected $_catalogData = null;
/**
* @param Context $context
* @param Data $catalogData
* @param array $data
*/
public function __construct(
Context $context,
Data $catalogData,
Registry $registry,
array $data = [])
{
$this->_catalogData = $catalogData;
$this->registry = $registry;
parent::__construct($context, $data);
}
public function getCrumbs()
{
$evercrumbs = array();
$evercrumbs[] = array(
'label' => 'Home',
'title' => 'Go to Home Page',
'link' => $this->_storeManager->getStore()->getBaseUrl()
);
$path = $this->_catalogData->getBreadcrumbPath();
$product = $this->registry->registry('current_product');
$categoryCollection = clone $product->getCategoryCollection();
$categoryCollection->clear();
$categoryCollection->addAttributeToSort('level', $categoryCollection::SORT_ORDER_DESC)->addAttributeToFilter('path', array('like' => "1/" . $this->_storeManager->getStore()->getRootCategoryId() . "/%"));
$categoryCollection->setPageSize(1);
$breadcrumbCategories = $categoryCollection->getFirstItem()->getParentCategories();
foreach ($breadcrumbCategories as $category) {
$evercrumbs[] = array(
'label' => $category->getName(),
'title' => $category->getName(),
'link' => $category->getUrl()
);
}
$evercrumbs[] = array(
'label' => $product->getName(),
'title' => $product->getName(),
'link' => ''
);
return $evercrumbs;
}
}
その後catalog_product_view.xml
、モジュールにレイアウトファイルを追加しますパスは次のようになります。app\code\Vendor\Module\view\frontend\layout\catalog_product_view.xml
<?xml version="1.0"?>
<page>
<body>
<referenceBlock name="breadcrumbs" remove="true" />
<referenceContainer name="page.top">
<block class="Vendor\Module\Block\Crumbblock" name="crumbs" as="crumbs" template="Vendor_Module::crumbs.phtml" />
</referenceContainer>
</body>
</page>
その後、モジュールにphtmlファイルを追加しますパスは次のようになります。 app\code\Vendor\Module\view\frontend\templates\crumbs.phtml
<?php $crumbs = $block->getCrumbs(); ?>
<?php if ($crumbs && is_array($crumbs)) : ?>
<div class="container">
<div class="breadcrumbs">
<ul class="items">
<?php
foreach ($crumbs as $crumbName => $crumbInfo) : ?>
<li class="item <?php echo $crumbName == 0 ? "home" : ""; ?>">
<?php if ($crumbInfo['link']) : ?>
<a href="<?= /* @escapeNotVerified */
$crumbInfo['link'] ?>" title="<?= $block->escapeHtml($crumbInfo['title']) ?>">
<?= $block->escapeHtml($crumbInfo['label']) ?>
</a>
<?php else: ?>
<strong><?= $block->escapeHtml($crumbInfo['label']) ?></strong>
<?php endif; ?>
</li>
<?php
endforeach; ?>
</ul>
</div>
</div>
<?php endif; ?>
これが役に立てば幸い