How to Programmatically Export CSV File Category Name with Parent Category Name
<?php
use Magento\MediaStorage\Helper\File\Storage\Database;
use Magento\Framework\AppInterface;
try
{
require_once __DIR__ . '/app/bootstrap.php';
}
catch (\Exception $e)
{
echo 'Autoload error: ' . $e->getMessage();
exit(1);
}
try
{
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=category_level.csv");
header("Pragma: no-cache");
header("Expires: 0");
$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $_SERVER);
$objectManager = $bootstrap->getObjectManager();
$appState = $objectManager->get('\Magento\Framework\App\State');
$appState->setAreaCode('frontend');
$categoryData = [];
$rootCategoryId = 2; //Pass Root Category Id
$categoryManagement = $objectManager->get('Magento\Catalog\Api\CategoryManagementInterface');
$getSubCategory = getCategoryData($categoryManagement, $rootCategoryId);
foreach ($getSubCategory->getChildrenData() as $category) {
$cat = $category->getName();
$categoryData[$category->getId()] = [
'name' => $category->getName(),
'url' => $category->getUrl()
];
if (count($category->getChildrenData())) {
$getSubCategoryLevelDown = getCategoryData($categoryManagement, $category->getId());
foreach ($getSubCategoryLevelDown->getChildrenData() as $subcategorylist1) {
$cat1 = $cat . ',' . $subcategorylist1->getName();
$categoryData[$subcategorylist1->getId()] = [
'name' => $cat . ',' . $subcategorylist1->getName(),
'url' => $subcategorylist1->getUrl()
];
if (count($subcategorylist1->getChildrenData())) {
$getSubCategoryLevelDownl = getCategoryData($categoryManagement, $subcategorylist1->getId());
foreach ($getSubCategoryLevelDownl->getChildrenData() as $subcategorylist2) {
$cat2 = $cat1 . ',' . $subcategorylist2->getName();
$categoryData[$subcategorylist2->getId()] = [
'name' => $cat1 . ',' . $subcategorylist2->getName(),
'url' => $subcategorylist2->getUrl()
];
if (count($subcategorylist2->getChildrenData())) {
$getSubCategoryLevelDownl = getCategoryData($categoryManagement, $subcategorylist2->getId());
foreach ($getSubCategoryLevelDownl->getChildrenData() as $subcategorylist3) {
$cat3 = $cat2 . ',' . $subcategorylist3->getName();
$categoryData[$subcategorylist3->getId()] = [
'name' => $cat2 . ',' . $subcategorylist3->getName(),
'url' => $subcategorylist2->getUrl()
];
}
}
}
}
}
}
}
$output = fopen('php://output', 'w');
fputcsv($output, array('Id', 'Level 1', 'Level 2', 'Level 3', 'Level 4'));
foreach ($categoryData as $datak => $datav) {
$catLevel = $datak . ',' . $datav['name'];
$catLevel = explode(',', $catLevel);
fputcsv($output, $catLevel);
}
fclose($output);
exit;
}
catch(\Exception $e)
{
print_r($e->getMessage());
}
function getCategoryData($categoryManagement, $categoryId)
{
try {
$getSubCategory = $categoryManagement->getTree($categoryId);
} catch (Exception $exception) {
$getSubCategory = null;
}
return $getSubCategory;
}
Comments
Post a Comment