Magento2: mẩu bánh mì biến mất khỏi trang sản phẩm sau khi nâng cấp lên 2.2.4


19

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; ?>

vui lòng xóa thư mục var của bạn sau đó chạy bin / magento set: up.
hweb87

& bên cạnh đó? (Tôi đã thử tất cả những thứ thông thường)
Pini

@Pini Điều này hoạt động hoàn hảo.
Arvind07

Tôi cũng gặp vấn đề tương tự sau khi nâng cấp 2.2.5 ....
Mano M

Công trinh! Chỉ có một vấn đề nhỏ là $ crumbInfo không trả về thông tin về lần đầu tiên / cuối cùng nên tôi phải tự thêm thông tin này
Volvox

Câu trả lời:


13

Tôi đã tìm thấy cùng một vấn đề và đã làm nó dễ dàng hơn một chút và không có ObjectManager. Tôi đã tìm ra cách nó được thực hiện với các danh mục và sử dụng nó. Trong catalog_product_view.xml, tôi viết lại mẫu trở lại mẫu của Magento_Theme:

<referenceBlock name="breadcrumbs" template="Magento_Theme::html/breadcrumbs.phtml" />

Sau đó, tôi đã viết plugin nhỏ:

namespace Vendor\Module\Plugin\Catalog\Block\Product;

class View
{

    /**
     * Add Breadcrumbs Block
     *
     * @param \Magento\Catalog\Block\Product\View $subject
     * @param $result
     * @return mixed
     * @throws \Magento\Framework\Exception\LocalizedException
     */
    public function afterSetLayout(\Magento\Catalog\Block\Product\View $subject, $result) {
        $subject->getLayout()->createBlock(\Magento\Catalog\Block\Breadcrumbs::class);

        return $result;
    }
}

Cuối cùng , di.xml:

<type name="Magento\Catalog\Block\Product\View">
    <plugin name="add_catalog_breadcrumb_block" type="Vendor\Module\Plugin\Catalog\Block\Product\View" />
</type>

Hai vấn đề đã được khắc phục: thiếu mẩu bánh mì và thiếu tiêu đề trang (trong phần đầu) trong trang sản phẩm.


Đẹp quá Tôi thực sự hy vọng rằng Magento sẽ cung cấp một bản sửa lỗi chính thức (nhiều nhất tôi có thể nói - đó là một lỗi), vì vậy tôi đã cố gắng ở trong khu vực chủ đề càng nhiều càng tốt. Nhưng điều này sẽ làm & nó sẽ dễ dàng biến giải pháp của bạn thành một mô-đun sửa lỗi đó.
Pini

Tôi cũng gặp vấn đề tương tự ... Cách giải quyết vấn đề này trong magento2.2.5
Mano M

Tốt đẹp. Điều này hoạt động cho Magento 2.2.5. Cảm ơn
MGento

Tôi đặt mã cho "plugin nhỏ" ở đâu?
chạy bộ

6

Đối với những người muốn có Mô-đun sửa chữa cho đến khi Magento sửa lỗi này:

https://github.com/CompactCodeEU/FixSubBreadcrumbs.git

Tôi đã tạo ra cái này để thêm ngôi nhà và sản phẩm vào vụn bánh mì. Ngoài ra, điều này ngăn chặn JS thực thi kể từ khi tôi thay thế nó bằng html mặc định.


5

Hai dòng này khôi phục khối bánh mì lớp. Đó là nó. Không có plugin tùy chỉnh hoặc cái gì khác:

<referenceBlock name="breadcrumbs" template="Magento_Theme::html/breadcrumbs.phtml" />
<block class="Magento\Catalog\Block\Breadcrumbs" />

1

Đối với bất kỳ ai khác đến đây và có lẽ không muốn cài đặt một số plugin chỉ cho việc này, tất cả những gì tôi phải làm là thêm nó vào mẫu của tôi (nó hoàn toàn bị ẩn) và mẩu bánh mì bắt đầu xuất hiện trở lại:

<div data-action="navigation" style="display:none;"><ul  data-mage-init='{"menu":{"responsive":false, "expanded":true, "delay":0, "position":{"my":"left top","at":"left bottom"}}}'></ul></div>

Điều này là đúng, nhưng dường như nó không tuân theo cấu trúc vụn chính xác. Trang sản phẩm của tôi vụn bánh mì hiển thị Trang chủ> Tên sản phẩm. Không đề cập đến các loại nó thuộc về.
Digital_Frankenstein
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.