Jak uzyskać nazwę bieżącej kategorii produktu w Magento 2 na stronie widoku produktu

9

Jak uzyskać aktualną kategorię produktu Nazwa na stronie widoku produktu nad nazwą produktu. I podaj ścieżkę do pliku Lokalizacja, aby uzyskać nazwę bieżącej kategorii produktu w Magento 2.

Nikul
źródło

Odpowiedzi:

10

Utwórz niestandardowy moduł, taki jak poniższy kod.

utwórz plik bloku modułu, aby uzyskać nazwę bieżącej kategorii.

<?php
namespace Namespace\Modulename\Block;
class Blockname extends \Magento\Framework\View\Element\Template
{
    protected $_registry;

    public function __construct(
        \Magento\Backend\Block\Template\Context $context,
        \Magento\Framework\Registry $registry,
        array $data = []
    )
    {
        $this->_registry = $registry;
        parent::__construct($context, $data);
    }


    public function getCurrentCategory()
    {
        return $this->_registry->registry('current_category');
    }

}
?>

utwórz plik phtml z poniższym kodem

<?php if ($currentCategory = $block->getCurrentCategory()): ?>
    <div class="detail-category-name">
        <?php echo $currentCategory->getName(); ?>
    </div>
<?php endif; ?>

wywołanie powyżej pliku phtml przez plik xml.

<referenceContainer name="product.info.main">
            <block class="Namespace\Modulename\Block\Blockname" name="product.category.name" template="Magento_Catalog::product/view/yourfilename.phtml" >
            </block>
</referenceContainer>

I wreszcie możesz zobaczyć nazwę kategorii tuż nad nazwą produktu na stronie szczegółów produktu.

Daj mi znać, jeśli masz jakieś zapytanie.

Suresh Chikani
źródło
mam umieścić kod xml w katalogu katalog_produktu.xml w Product.info.main refrence, ale nie mogę zobaczyć żadnej nazwy div ani żadnej kategorii.
Nikul
Musisz umieścić go w pliku default.xml.
Suresh Chikani,
Tak, próbowałem umieścić
plik
dzięki. działa jak marzenie. uważaj na ścieżkę, do której dzwonisz (moja nazwa to „Vendor_Categoryonproduct :: category.phtml) i nie zapomnij pliku rejestracyjnego i modułu.
Claudiu Creanga
nie otrzymuję żadnego rezultatu
vijay b
1

Powinieneś być w stanie uzyskać identyfikatory kategorii za pomocą metody getCategoryIds () na produkcie. Na przykład odwołanie:

\Magento\Catalog\Model\Product::getCategoryIds();

Oznacza to, że powinieneś być w stanie zasadniczo wywoływać $product->getCategoryIds()i filtrować to w swoim bloku.

Istnieje również metoda wywoływana getCategoryCollection()w tym samym modelu, która pozwala na cykliczne przechodzenie między kategoriami jako pełnymi obiektami. Powinno to odciąć środkowego człowieka od załadowania ich Id.

Richard Cripps
źródło
0
**Add XML Code Theme/namespace/Magento_Catalog/templates/product/view**

<block class="Magento\Catalog\Block\Product\View" name="product.info.category" after="product.price.final" template="product/view/current_category.phtml" />


**Create New File    Theme/namespace/Magento_Catalog/templates/product/view**  

      <?php 
        $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
        $product = $objectManager->get('Magento\Framework\Registry')->registry('current_product');
        $categories = $product->getCategoryIds(); /*will return category ids array*/
        foreach($categories as $category){
            $cat = $objectManager->create('Magento\Catalog\Model\Category')->load($category);
            echo $cat->getName();
            }

        ?>
Baharuni Asif
źródło