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...
}
}