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.
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.
Yanıtlar:
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 .
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 $soncats
olarak 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>