Magento 2: Ön tarafta yönetici kategorisi ağacını göster


10

Yönetici ağacını yönetici varsayılan kategori ağacı gibi ön uçta görüntülemek istiyorum.

Ön uç tarafı için özel modülümde ve içerik alanında kategori ağacı yapısını göstermem gerekiyor.

Herhangi bir Yardım mutluluk duyacağız.

Teşekkürler.



Yalnızca kategori adını göstermekle kalmaz, aynı zamanda yönetici ile aynı ağaçlı bir kategoriye ihtiyaç duyar.
Suresh Chikani

Lütfen bakın: mage2.pro/t/topic/912 Size yardımcı olacaktır
Nikunj Vadariya

1
@nikunjVadariya Öneriniz için teşekkür ederiz. Kontrol edeyim.
Suresh Chikani

Yanıtlar:


4

1) Magento 2'nin kök dizininden "app" a gidin ve yeni dizin kodu oluşturun. Daha sonra app / code'da (Ad Alanı ve Modül Adı) iki dizin daha oluşturun . Son dizin şu şekilde görünecektir: app / code / Demo / CategoryTree .

Ad Alanı olarak demo ve modül adı olarak CategoryTree .

2) app / code / Demo / CategoryTree / etc'de "module.xml" dosyasını oluşturun ve aşağıdaki kodu dosyaya yapıştırın:

<?xml version="1.0"?>
<!--
/**
 * Copyright © 2013-2017 Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
    <module name="Demo_CategoryTree" setup_version="1.0.0">
        <sequence>
            <module name="Magento_Catalog"/>
        </sequence>
    </module>
</config>

3) app / code / Demo / CategoryTree / etc / frontend içinde "route.xml" dosyasını oluşturun ve aşağıdaki kodu dosyaya yapıştırın:

<?xml version="1.0"?>
<!--
/**
 * Copyright © 2013-2017 Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
    <router id="standard">
        <route id="categorytree" frontName="categorytree">
            <module name="Demo_CategoryTree" />
        </route>
    </router>
</config>

4) app / code / Demo / CategoryTree'de "registration.php" dosyasını oluşturun ve aşağıdaki kodu dosyaya yapıştırın:

<?php
/**
 * Copyright © 2013-2017 Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */

\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::MODULE,
    'Demo_CategoryTree',
    __DIR__
);

5) app / code / Demo / CategoryTree / Controller / Index'de "Index.php" dosyasını oluşturun ve aşağıdaki kodu dosyaya yapıştırın:

<?php
/**
 *
 * Copyright © 2013-2017 Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
namespace Demo\CategoryTree\Controller\Index;

class Index extends \Magento\Framework\App\Action\Action
{
    /**
     * @var \Magento\Framework\View\Result\PageFactory $resultPageFactory
     */
    protected $resultPageFactory;

    /**
     * @param \Magento\Framework\App\Action\Context $context
     * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
     */
    public function __construct(
        \Magento\Framework\App\Action\Context $context,
        \Magento\Framework\View\Result\PageFactory $resultPageFactory
    ) {
        $this->resultPageFactory = $resultPageFactory;
        parent::__construct($context);
    }

    /**
     * Renders CATEGORYTREE Index page
     *
     * @param string|null $coreRoute
     * @return \Magento\Framework\Controller\Result\Forward
     * @SuppressWarnings(PHPMD.UnusedFormalParameter)
     */
    public function execute($coreRoute = null)
    {
        $resultPage =  $this->resultPageFactory->create();
        $resultPage->getConfig()->getTitle()->set(__('CategoryTree'));
        return $resultPage;
    }
}

6) app / code / Demo / CategoryTree / view / frontend / layout'da "categorytree_index_index.xml" dosyasını oluşturun ve aşağıdaki kodu dosyaya yapıştırın:

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="2columns-left" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <update handle="styles"/>
    <head>
        <css src="extjs/resources/css/ext-all.css"/>
        <css src="extjs/resources/css/ytheme-magento.css"/>
    </head>
    <body>
        <referenceContainer name="sidebar.additional">
            <block class="Magento\Catalog\Block\Adminhtml\Category\Tree" name="category.tree" template="Demo_CategoryTree::catalog/category/tree.phtml"/>
        </referenceContainer>
    </body>
</page>

7) kopyalamak satıcı / magento / modül-katalog / view / adminhtml / templates / katalog / kategori / tree.phtml için app / kod / Demo / Categorytree / görünüm / kullanıcı arayüzü / templates / katalog / kategori

8) app / code / Demo / CategoryTree / view / frontend içinde "requirjs-config.js" dosyası oluşturun ve aşağıdaki kodu dosyaya yapıştırın:

var config = {
    "shim": {
        "extjs/ext-tree": [
            "prototype"
        ],
        "extjs/ext-tree-checkbox": [
            "extjs/ext-tree",
            "extjs/defaults"
        ]
    }
};

9) Kök dizinde aşağıdaki komutları çalıştırın:

php bin/magento setup:upgrade
php bin/magento cache:clean
php bin/magento cache:flush
php bin/magento setup:static-content:deploy

10) URL'yi aşağıdaki gibi http://local-magento.com/categorytree/index/index " gibi çalıştırın .

resim açıklamasını buraya girin



1

Tamam, kategori ağacımı temel alan bir menü oluşturmak için kullandığım şey bu. Kolayca tüm kategorilerimin yeni bir Magento2 yüklemesi ile gelen ID2 ile varsayılan kategori altında saklandığına dikkat edilmelidir. Bu yapıya sahip değilseniz, alternatif $soncatsolarak bunun yerine döngü yapmak istediğiniz kategorilerin kimlikleri dizisi olarak tanımlayabilirsiniz .

<ul id="nav" class="accordion vertnav vertnav-top grid-full wide">
    <?php
$fathercat = $objectManager->create('Magento\Catalog\Model\Category')->load(2); //this is my master root category, holds all other categories so I can loop through.
$soncats = $fathercat->getChildrenCategories(); 
$catids = array(2); 
foreach ($soncats as $soncat) {
    $categoryid = $soncat->getId();
    array_push($catids,$categoryid);
}
for($i = 1; $i < count($catids); ++$i) { 
    $basic = 1;
    $catId = $catids[$i];
    $subcategory = $objectManager->create('Magento\Catalog\Model\Category')->load($catId);
    $subcats = $subcategory->getChildrenCategories();
    $categoryname = $subcategory->getName(); 
    $categoryurl = $subcategory->getUrl(); ?>
    <li class="level0 nav-<?php echo $i;?> level-top parent"><a href="<?php echo $categoryurl ?>" class="level-top"><?php echo $categoryname; ?><span class="caret"> </span> </a><span class="opener"> </span>
        <div class="level0-wrapper dropdown-6col" style="left: 0;">
            <div class="level0-wrapper2">
                <ul class="level0 part">
                    <?php
                    foreach ($subcats as $subcat) { 
                        if ($subcat->getIsActive()) {
                            $subcat_url = $subcat->getUrl(); 
                            $subcat_name = $subcat->getName(); ?>
                            <li class="level1 nav-1-<?php echo $basic;?> item"><a href="<?php echo $subcat_url ?>"><?php echo $subcat_name; ?></a></li>
                            <?php
                        } $basic++; } ?>
                    </ul>
                </div>
            </div>
        </div>
    </li>
    <?php } ?>
</ul>

Merhaba John, tanımlanmamış değişken $ addedq var gibi görünüyor.
Purushotam Sangroula

Merhaba Anime, eklediğim için teşekkür ederim, addq daha önce tanımlanmış başka bir değişken ve söz konusu projeme göre, kodun çalışması için gerekli değil
John

bu kod çocuğun alt kategorilerini göstermiyor
HaFiz Umer

@HaFizUmer bu olması gerektiği için garip, ama aynı zamanda sürpriz olmaz çünkü Magento 2.0 ~ için. Herhangi bir şey için değişiklik / yeniden yazma gerekebilir Magento 2.1+
John
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.