Magento - не может переопределить категории

Привет я получаю сообщение об ошибке в следующих строках, но у меня есть следующий код на двух разных серверах и на одном сервере я не получаю это предупреждение / ошибка:

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

Я не могу найти ошибку здесь.

Привет

Даниил

2 ответа

Решение

Привет, я могу видеть по трассировке стека кода, что вы перераспределяли функцию несколько раз с одним и тем же именем. попробуйте просмотреть указанные вами 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/template/page/html/header.phtml в строке 161

Это решит вашу проблему

Это потому, что этот файл загружается несколько раз. Оба раза это создает функцию. Вы можете либо добавить функцию в другой файл, который не создавался несколько раз, либо заключить функцию в оператор if, чтобы проверить существование функции:

if( !function_exists('get_categories') ){ // If function doesn't exist, declare it...
    function get_categories($categories) {
        // The rest of the function...
    }
}
Другие вопросы по тегам