Magento2: ब्रेडक्रंब 2.2.4 में अपग्रेड करने के बाद उत्पाद पृष्ठ से गायब हो गया


19

मैंने Magento को 2.2.4 में अपग्रेड किया और अब मेरे पास उत्पाद पृष्ठों पर ब्रेडक्रंब नहीं है। वे अन्य पृष्ठों पर नहीं बल्कि उत्पादों पर दिखाई देते हैं। मैंने स्रोत की जाँच की और देखा कि 'ब्रेडक्रंब' क्लास और कुछ जसन परम्स के साथ एक div है, लेकिन यह खाली है (कंसोल पर कोई त्रुटि नहीं है)।

कोई उपाय?


अद्यतन:
मुझे पता चला कि एक कारण से मैं समझा नहीं सकता, मैगेंटो ने जेएस का उपयोग करके शीर्ष-मेनू नेविगेशन के आधार पर उत्पाद पृष्ठों के ब्रेडक्रंब का निर्माण शुरू किया और मेरे मामले में मैंने मेनू बदल दिया और विभिन्न सीएसएस चयनकर्ताओं का उपयोग किया, यह बंद हो गया काम कर रहे।
मुझे विश्वास है कि अब मैं इसे ठीक करने में सक्षम हो जाऊंगा, लेकिन मैं उन्हें ऐसा करने के लिए कोई अच्छा कारण नहीं देख सकता, यह बहुत नाजुक है ...


मेरा अस्थायी वर्कअराउंड (अगर यह किसी की मदद करता है ...):

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. उत्पाद पृष्ठ पर ब्रेडक्रंब टेम्पलेट को ओवरराइड करें (ऐप / डिज़ाइन / फ्रंटेंड / विक्रेता / थीम / Magento_Catalog / टेम्प्लेट / उत्पाद / ब्रेडक्रंब.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; ?>

कृपया अपना var फ़ोल्डर साफ़ करें, फिर bin / magento सेट करें: ऊपर चलाएँ।
hweb87

& इसके अलावा? (मैं पहले से ही सभी नियमित सामान की कोशिश की)
Pini

@Pini यह सही काम करता है।
अरविन्द

मैं भी 2.2.5 के उन्नयन के बाद इसी मुद्दे का सामना कर रहा हूँ ....
मनो एम

काम करता है! केवल छोटी समस्या है कि $ crumbInfo ने पहले / अंतिम के बारे में जानकारी वापस नहीं की, इसलिए मुझे इसे स्वयं जोड़ना पड़ा
Volvox

जवाबों:


13

मैं एक ही समस्या पाया और यह थोड़ा आसान और ObjectManager के बिना किया। मुझे यह पता चला कि श्रेणियों के साथ यह कैसे किया जाता है और इसका उपयोग किया जाता है। में catalog_product_view.xml, मैं Magento_Theme के एक पर वापस टेम्पलेट लिखता हूं:

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

तब मैंने छोटा सा प्लगइन लिखा:

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

अंत में di.xml:

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

दो समस्याएं तय की गई हैं: उत्पाद पृष्ठ में लापता ब्रेडक्रंब और लापता पृष्ठ शीर्षक (सिर अनुभाग में)।


अच्छा है! मुझे वास्तव में उम्मीद थी कि मैगेंटो एक आधिकारिक फिक्स प्रदान करेगा (जितना मैं बता सकता हूं - यह एक बग है), इसलिए मैंने यथासंभव विषय क्षेत्र में रहने की कोशिश की। लेकिन ऐसा करना और आपके समाधान को एक मॉड्यूल में बदलना आसान होगा जो इसे ठीक करता है।
पीनी

मैं भी इसी मुद्दे का सामना करता हूं ... कैसे इसे magento2.2.5 में हल करने के लिए
मानो एम

अच्छा लगा। यह Magento 2.2.5 के लिए काम करता है। धन्यवाद
MGento

मैं "छोटे प्लगइन" के लिए कोड कहां डालूं?
जोगो

6

जब तक मैगेंटो इसे ठीक नहीं करता है, जो एक फिक्स मॉड्यूल चाहता है:

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

मैंने इसे घर और उत्पाद को ब्रेडक्रंब में जोड़ने के लिए बनाया है। इसके अलावा यह JS को क्रियान्वित होने से रोकता है क्योंकि मैं इसे डिफ़ॉल्ट HTML से बदल देता हूं।


5

ये दो लाइनें क्लास ब्रेडक्रंब ब्लॉक को पुनर्स्थापित करती हैं। बस। कोई कस्टम प्लगइन्स या कुछ और:

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

1

किसी और को जो यहां पहुंचता है और शायद इसके लिए कुछ प्लगइन स्थापित नहीं करना चाहता है, मुझे बस इतना करना था कि इसे अपने टेम्पलेट में जोड़ दें (यह पूरी तरह से छिपा हुआ है) और ब्रेडक्रंब फिर से दिखाई देने लगे:

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

यह सच है, लेकिन यह सही ढलान संरचना का पालन नहीं करता है। मेरा उत्पाद पृष्ठ ब्रेडक्रंब होम> उत्पाद का नाम दिखाता है। इसके अंतर्गत आने वाली श्रेणियों का कोई उल्लेख नहीं है।
Digital_Frankenstein
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.