Magento getModel(' catalog / category')返回空类别名称,id和url

时间:2014-10-17 14:50:01

标签: php magento

我有一个从magento中检索类别的扩展程序。你可以看到下面的代码。该代码适用于多个站点,但对于其中两个站点,我得到的是空值。但是,它返回类别对象,但就是这样。当我尝试获取类别的名称,ID或URL时,它是空的。

这就是我获得类别的方式:

    // Load all categories (flat)
    $activeCategoryCollection = Mage::getModel('catalog/category')
            ->getCollection()
            ->addAttributeToSelect('*');

    // Load all categories (tree)
    $categoriesArray = Mage::getModel('catalog/category')
            ->getCollection()
            ->addAttributeToSelect('name')
            ->addAttributeToSort('path', 'asc')
            ->load()
            ->toArray();

然后在foreach循环中我执行以下操作来创建我的对象:

    // Expose composite category data
    foreach ($categoriesArray as $categoryId => $category)
    {
        // Check if category is not at root category level
        if (isset($category['name']) && isset($category['level']) && $category['level'] > $rootCategory['level'])
        {

            // Remove root category path from category
            $path = str_replace($rootCategory['path'] . '/', '', $category['path']);

            // Explode parent categories
            $parents = explode('/', $path);
            $name = '';
            $url = '';

            // Get category name and urls for each parent
            foreach ($parents as $parent)
            {
                $name .= $activeCategorNamesById[$parent] . '>';
                $url .= $activeCategoryUrlsById[$parent] . '>';
            }

            // Get products in category with their positions
            $currentCategory = Mage::getModel('catalog/category')->load($categoryId);
            $collection = $currentCategory->getProductCollection()->addAttributeToSort('position');
            Mage::getModel('catalog/layer')->prepareProductCollection($collection);

            // Index category data
            $categories[$categoryId] = array(
                'name' => substr($name, 0, -1),
                'level' => $category['level'],
                'ids' => str_replace('/', '>', $path),
                'url' => substr($url, 0, -1),
                'id' => $categoryId,
                'products' => $currentCategory->getProductsPosition()
            );
        }
    }

目前,我无法访问这些网站的ftp来手动更新我的扩展程序,我无法在商店中更新它。我不知道问题是什么以及我如何测试它。其中一个建议是,在那些商店中,他们为类别定制了显示id,title和url的字段,但我仍然不知道如何看到它。我可以访问他们的magento管理站点,但在那里我找不到与其他站点相比的任何不同。

编辑:以下代码返回空数组,即使它们在系统中有类别

var_dump($this->getCategories());

此外,在System > Configuration下的其他网站中有Catalog,但对于那些无效的网站,则为System > Configuration > Catalogue。我不确定他们之间是否存在差异。

1 个答案:

答案 0 :(得分:0)

$name$path$url定义在哪里

尝试

$categories[$categoryId] = array(
   'name' => substr($category['name'], 0, -1),
   'level' => $category['level'],
   'ids' => str_replace('/', '>', $category['path']),
   'url' => substr($category['url'], 0, -1),
   'id' => $categoryId,
);