0

こんにちは、次の行でエラーが発生しますが、2 つの異なるサーバーに次のコードがあり、1 つのサーバーではこの警告/エラーが発生しません。

<?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); 
?>     

致命的なエラー: get_categories() (以前は /var/www/production/htdocs/app/design/frontend/default/default/template/page/html/header.phtml:134 で宣言されています) を /var/www/production で再宣言できません/htdocs/app/design/frontend/default/default/template/page/html/header.phtml 161 行目

134行目は次のとおりです。function get_categories($categories) {

161 行目は次のとおりです。} (before the echo get_categories)

ここで間違いを見つけることができません。

ご挨拶

ダニエル

4

2 に答える 2

1

これは、そのファイルが複数回ロードされているためです。どちらの場合も関数を作成しています。オプションは、複数回インスタンス化されていない別のファイルに関数を追加するか、if ステートメントで関数をラップして関数の存在を確認することです。

if( !function_exists('get_categories') ){ // If function doesn't exist, declare it...
    function get_categories($categories) {
        // The rest of the function...
    }
}
于 2014-05-19T17:10:40.253 に答える
1

こんにちは、コード スタック トレースから、関数を同じ名前で複数回再宣言していることがわかります。あなたが述べたphtmlファイルを見て、関数の1つを削除してみてください /var/www/production/htdocs/app/design/frontend/default/default/template/page/html/header.phtml:134) /var/www /production/htdocs/app/design/frontend/default/default/template/page/html/header.phtml 161 行目

それはあなたの問題を解決します

于 2014-05-19T17:10:44.133 に答える