当我访问 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++;
}
}
我想创建一个 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++;
}
}