Magento - 无法重新声明类别

时间:2014-05-19 16:49:28

标签: php magento categories redeclare

您好我在以下几行中收到错误,但我在两个不同的服务器和一台服务器上有以下代码我没有收到此警告/错误:

<?php
// gets the root cat without setting it plain
$root = Mage::app()->getStore()->getRootCategoryId();
$categories = Mage::getModel('catalog/category')->getCategories($root);
// create an array for the category navigation
function get_categories($categories) {

    $array= '<ul>';
    foreach($categories as $category) {

        $cat = Mage::getModel('catalog/category')->load($category->getId());
        $imageFile = Mage::getModel('catalog/category')->load($category->getId())->getThumbnail();
        $imageUrl = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA) . "catalog/category/" . $imageFile;

        // check if a file exists
        if(isset($imageFile)) {
            $image = '<div class="b_imageWrap"><img src="'. $imageUrl .'" /></div>';
        }
        $array .= '<li class="b_catId'.$cat->getId().'">'.'<a href="' . Mage::getUrl($cat->getUrlPath()). '">' . $image . $category->getName() . '<div class="b_arrowFlyout"></div>' . '</a>';
        if($category->hasChildren()) {
            $children = Mage::getModel('catalog/category')->getCategories($category->getId());
            $array .= '<div class="b_flyout"><h1>'.$category->getName().'</h1><h3 class="b_line"><span>UNSERE PRODUKTE</span></h3>';
            $array .= '<ul>';
            foreach($children as $category) {
                $array .= '<li class="b_catId'.$category->getId().'">'.'<a href="' . Mage::helper('catalog/category')->getCategoryUrl($category) . '"><b>' . $category->getName() . '</b></a>';
                $array .= '</li>';
            }
            $array .= '</ul><a class="btn btn-default btn-full" href="' . Mage::getUrl($cat->getUrlPath()). '">ZUR PRODUKTÜBERSICHT</a></div>';
        }
        $array .= '</li>';
    }

    return  $array . '</ul>';
}
echo get_categories($categories); 
?>     
  

致命错误:无法重新声明/ var /中的get_categories()(之前在/var/www/production/htdocs/app/design/frontend/default/default/template/page/html/header.phtml:134中声明)第161行/ www / production / htdocs / app / design / frontend / default / default / template / page / html / header.phtml

第134行是:function get_categories($categories) {

第161行是:} (before the echo get_categories)

我在这里找不到错误。

问候

丹尼尔

2 个答案:

答案 0 :(得分:1)

这是因为该文件被多次加载。这两次都是在创造这个功能。您可以选择将函数添加到未多次实例化的另一个文件中,或者将函数包装在if语句中以检查函数是否存在:

if( !function_exists('get_categories') ){ // If function doesn't exist, declare it...
    function get_categories($categories) {
        // The rest of the function...
    }
}

答案 1 :(得分:1)

您好我可以通过代码堆栈跟踪看到您使用相同的名称多次重新声明该函数。尝试查看您声明的phtml文件并删除其中一个功能 /var/www/production/htdocs/app/design/frontend/default/default/template/page/html/header.phtml:134)/ var / www / production / htdocs / app / design / frontend / default / default第161行的/template/page/html/header.phtml

它将解决您的问题