Метод addBodyClass

[10 ноября 2016 г.]    Российская сборка Magento 2.49.12
Magento 2: модули и услуги
#1 Kein
  • Группа: Пользователь
  • Сообщений: 18
  • Регистрация: 17.05.2010

02.06.2010 11:19

Вроде бы ничего не менял в основных файлах, а получил следующую ошибку
Invalid method Mage_Catalog_Block_Navigation::addBodyClass(Array
(
    [0] => cms-home
)
)

#0 [internal function]: Varien_Object->__call('addBodyClass', Array)
#1 C:\Zend\magento\app\code\core\Mage\Cms\Block\Page.php(77): Mage_Catalog_Block_Navigation->addBodyClass('cms-home')
#2 C:\Zend\magento\app\code\core\Mage\Core\Block\Abstract.php(211): Mage_Cms_Block_Page->_prepareLayout()
#3 C:\Zend\magento\app\code\core\Mage\Core\Model\Layout.php(457): Mage_Core_Block_Abstract->setLayout(Object(Mage_Core_Model_Layout))
#4 C:\Zend\magento\app\code\core\Mage\Core\Model\Layout.php(241): Mage_Core_Model_Layout->addBlock('Mage_Cms_Block_...', 'cms_page')
#5 C:\Zend\magento\app\code\core\Mage\Core\Model\Layout.php(207): Mage_Core_Model_Layout->_generateBlock(Object(Mage_Core_Model_Layout_Element), Object(Mage_Core_Model_Layout_Element))
#6 C:\Zend\magento\app\code\core\Mage\Core\Model\Layout.php(212): Mage_Core_Model_Layout->generateBlocks(Object(Mage_Core_Model_Layout_Element))
#7 C:\Zend\magento\app\code\core\Mage\Core\Controller\Varien\Action.php(343): Mage_Core_Model_Layout->generateBlocks()
#8 C:\Zend\magento\app\code\core\Mage\Cms\Helper\Page.php(106): Mage_Core_Controller_Varien_Action->generateLayoutBlocks()
#9 C:\Zend\magento\app\code\core\Mage\Cms\Helper\Page.php(52): Mage_Cms_Helper_Page->_renderPage(Object(Mage_Cms_IndexController), 'home')
#10 C:\Zend\magento\app\code\core\Mage\Cms\controllers\IndexController.php(45): Mage_Cms_Helper_Page->renderPage(Object(Mage_Cms_IndexController), 'home')
#11 C:\Zend\magento\app\code\core\Mage\Core\Controller\Varien\Action.php(418): Mage_Cms_IndexController->indexAction()
#12 C:\Zend\magento\app\code\core\Mage\Core\Controller\Varien\Router\Standard.php(254): Mage_Core_Controller_Varien_Action->dispatch('index')
#13 C:\Zend\magento\app\code\core\Mage\Core\Controller\Varien\Front.php(177): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#14 C:\Zend\magento\app\code\core\Mage\Core\Model\App.php(304): Mage_Core_Controller_Varien_Front->dispatch()
#15 C:\Zend\magento\app\Mage.php(596): Mage_Core_Model_App->run(Array)
#16 C:\Zend\magento\index.php(51): Mage::run()
#17 {main}


Тема стоит по умолчанию. Я даже обновление сделал, думал что испортил заменится, но не помогло

#2 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8885
  • Регистрация: 20.02.2010

02.06.2010 11:30

У класса Mage_Catalog_Block_Navigation на самом деле отсутствует метод addBodyClass (Magento 1.4.0.1)
Либо этот метод был в устаревших версиях Magento, либо ваш программист напутал.

#3 Kein
  • Группа: Пользователь
  • Сообщений: 18
  • Регистрация: 17.05.2010

02.06.2010 12:18

Собственно я и пытаюсь что-то накодить :)
Но не могу понять откуда взялся вызов этого метода. Поиск по директории ./app/ на файлы содержащие текст "addBodyClass" выдал только базовые классы, которые я менять не мог, а по слову "cms-home" вообще ничего там не нашлось.
Как я понял где-то в layout файлах должен быть <block type="catalog/navigation" который содержит <action method="addBodyClass" но найти не могу.
Что интересно мой модуль работает нормально, где блок root заменяется моим, а индексная страница не работает, так как судя по всему там и вызывается этот блок и его метод.
Вот и интересно, где же искать теперь ошибку, то ли в коде, то ли в layouts, то ли в темплейтах

#4 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8885
  • Регистрация: 20.02.2010

02.06.2010 12:21

Метод addBodyClass присутствует в классах Mage_Adminhtml_Block_Page, Mage_Page_Block_Html и их потомках.
Mage_Catalog_Block_Navigation не является потомком указанных классов.

Поделиться темой: