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

标签 php magento e-commerce

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

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.com/category.php 的 URL,然后我应该会在屏幕上看到所有类别的列表,但我得到的只是一个空白屏幕有人可以解释一下我是否真的很愚蠢并且做错了什么。

最佳答案

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

<?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 - 当我访问一个 php 文件时,在屏幕上获取所有 magento 类别及其 id 的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29845101/

相关文章:

magento - Paypal Payments Pro 是否直接与 magento 社区合作以接受信用卡进行定期计费?

magento - 将 magento apis 用于电子商务网站

php - 如何将 JavaScript 变量放入 SESSION 中以便我可以使用它进行分页?

php - 在数据库中查询后,使用 PHP 在 Laravel 中正确获取数据

php - Magento 加密方法

php - 通过显示代表性产品链接到子类别

php - SQL - 如何用其他日期时间替换日期时间值?

php - Magento 1.8.1.0 : Display Quantity In Drop Down list of product options, 编辑 select.phtml

wordpress - 如何生成和维护大量的着陆页?

e-commerce - 在 Google Analytics 中实现增强型电子商务