当我访问 php 文件时,在屏幕上获取所有 magento 类别及其 ID 的列表

Get a list of all magento categories and their id's on screen when I visit a php file

我想创建一个 PHP 文件,当我访问此文件时,该文件将 return magento 中所有产品类别的列表及其 ID。例如,当我访问 mysite.com/category.php 时,它应该向我显示所有类别及其相应 ID 的列表。我已经搜索了 Whosebug 和所有其他论坛,我发现了很多类似的问题,但没有任何东西可以解决我的问题。我对代码本身没有问题,但我正在努力寻找放置此代码的位置,这是我想要使用的代码。

category = Mage::getModel('catalog/category');
$catTree = $category->getTreeModel()->load();
$catIds = $catTree->getCollection()->getAllIds();
$cats = array();
if ($catIds){
    foreach ($catIds as $id){
        $cat = Mage::getModel('catalog/category');
        $cat->load($id);
        $cats[$cat->getId()] = $cat->getName();
    }
}

任何人都可以解释一下我需要将此代码放在哪个文件中吗?您能否解释一下我需要将文件放在哪个文件夹中,以及是否需要修改我的代码以获得我想要的结果。非常感谢

编辑

这就是我到目前为止所做的。所以我创建了一个名为 category.php 的 PHP 文件,我将这个文件放在我的 magento 文件夹的根目录中,该文件夹将包含应用程序、皮肤和媒体目录,然后我将我的代码包含在像这样归档

$category = Mage::getModel('catalog/category');
$catTree = $category->getTreeModel()->load();
$catIds = $catTree->getCollection()->getAllIds();
$cats = array();
    if ($catIds){
        foreach ($catIds as $id){
        $cat = Mage::getModel('catalog/category');
        $cat->load($id);
        $cats[$cat->getId()] = $cat->getName();
    }
}

我现在已经包含了@mufaddal 在他的回答中亲切包含的代码

$mageFilename = 'app/Mage.php';

require_once $mageFilename;

所以我完整的 category.php 文件应该如下所示

<?php
$mageFilename = 'app/Mage.php';

require_once $mageFilename; 

$category = Mage::getModel('catalog/category');
$catTree = $category->getTreeModel()->load();
$catIds = $catTree->getCollection()->getAllIds();
$cats = array();
    if ($catIds){
        foreach ($catIds as $id){
        $cat = Mage::getModel('catalog/category');
        $cat->load($id);
        $cats[$cat->getId()] = $cat->getName();
    }
}
?>

保存此文件后,我打开网络浏览器并输入文件 mysite.URL。com/category.php 然后我应该会看到所有列表屏幕上的类别,但我得到的只是一个空白屏幕,有人可以解释一下我是否真的很愚蠢并且做错了什么。

只需将文件放在 magento 文件夹的根目录下并包含 Mage.php 文件即可与 magento 一起使用。 喜欢

$mageFilename = 'app/Mage.php';

require_once $mageFilename;

您应该只打印您的变量。你可以这样做:

<?php $mageFilename = 'app/Mage.php';

require_once $mageFilename;

Mage::init();

$category = Mage::getModel('catalog/category');
$catTree = $category->getTreeModel()->load();
$catIds = $catTree->getCollection()->getAllIds();
$cats = array();
    if ($catIds){
        foreach ($catIds as $id){
        $cat = Mage::getModel('catalog/category');
        $cat->load($id);
        $cats[$cat->getId()] = $cat->getName();
    } 
} 

// Optionally you can use <pre> tag for a neater print
echo "<pre>";
var_dump($cats);
echo "</pre>";

这是一个示例代码,说明如何在不同级别获取类别及其子级。您可以将 2 级更改为您想要的任何级别,但通常 2 级类别是位于根类别下方的主要类别,因此应该这样做!

<?php

$mageFilename = 'app/Mage.php';
require_once $mageFilename;
Mage::init();

$category = Mage::getModel('catalog/category')->getCollection()
                    ->addAttributeToFilter('level',2);

$catIds = $category->getAllIds();

$cats = array();
$i=0;

if ($catIds){
    foreach ($catIds as $id){
        $j=0;
        $cat = Mage::getModel('catalog/category');
        $cat->load($id);
        $cats[$i]["Category ID:"] = $id;
        $cats[$i]["Category Name:"] = $cat->getName();
        $subcats = $cat->getChildren();
        foreach(explode(',',$subcats) as $subCatid){
            $subcat = Mage::getModel('catalog/category');
            $subcat->load($subCatid);
            $cats[$i][$j]["Subcategory ID:"] = $subCatid;
            $cats[$i][$j]["Subcategory Name:"] = $subcat->getName();
            $j++;
        }
        $i++;
    }
} 

foreach($cats as $row){
    echo "<pre>";
    print_r($row);
    echo "</pre>";
}

虽然看起来很丑陋,但您可以为每个级别使用 foreach() 来获得下一个子类别级别。例如,这个获取子类别:

if ($catIds){
  foreach ($catIds as $id){
    $j=0;
    $cat = Mage::getModel('catalog/category');
    $cat->load($id);
    $cats[$i]["Category ID:"] = $id;
    $cats[$i]["Category Name:"] = $cat->getName();
    $subcats = $cat->getChildren();
    foreach(explode(',',$subcats) as $subCatid){
      $subcat = Mage::getModel('catalog/category');
      $subcat->load($subCatid);
      $cats[$i][$j]["Subcategory ID:"] = $subCatid;
      $cats[$i][$j]["Subcategory Name:"] = $subcat->getName();
      $_subcats = $subcat->getChildren();
      foreach(explode(',',$_subcats) as $_subCatid){
        $_subcat = Mage::getModel('catalog/category');
        $_subcat->load($_subCatid);
        $cats[$i][$j][$k]["Sub-subcategory ID:"] = $_subCatid;
        $cats[$i][$j][$k]["Sub-subcategory Name:"] = $_subcat->getName();
        $k++;
      }
      $j++;
    }
    $i++;
  }
}