Я разработал дефектный шаблон, и теперь моя карта сайта не работает. Почему же моя проблема не решается обновлениями Российской сборки Magento?

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

08.07.2014 09:54

В топике http://magento-forum.ru/topic/4298/ была описана проблема карты сайта. И она была решена в одной из версий, но у нас (shop.f-trade.ru) на версии 2.35.4 возникала похожая ошибка. При нажатии на ссылку "карта сайта" открывается страница с ошибками:

Notice: Undefined property: Df_Catalog_Model_Category::$is_active in /app/design/frontend/ftrade/default/template/catalog/seo/tree.phtml on line 37

#0 app/design/frontend/ftrade/default/template/catalog/seo/tree.phtml(37): mageCoreErrorHandler(8, 'Undefined prope...', '/var/www/shop_a...', 37, Array)
#1 app/code/core/Mage/Core/Block/Template.php(241): include('/var/www/shop_a...')
#2 app/code/core/Mage/Core/Block/Template.php(272): Mage_Core_Block_Template->fetchView('frontend/ftrade...')
#3 app/code/core/Mage/Core/Block/Template.php(286): Mage_Core_Block_Template->renderView()
#4 app/code/core/Mage/Core/Block/Abstract.php(863): Mage_Core_Block_Template->_toHtml()
#5 app/code/core/Mage/Core/Block/Abstract.php(582): Mage_Core_Block_Abstract->toHtml()
#6 app/code/core/Mage/Core/Block/Abstract.php(526): Mage_Core_Block_Abstract->_getChildHtml('sitemap', true)
#7 app/design/frontend/base/default/template/catalog/seo/sitemap/container.phtml(35): Mage_Core_Block_Abstract->getChildHtml('sitemap')
#8 app/code/core/Mage/Core/Block/Template.php(241): include('/var/www/shop_a...')
#9 app/code/core/Mage/Core/Block/Template.php(272): Mage_Core_Block_Template->fetchView('frontend/base/d...')
#10 app/code/core/Mage/Core/Block/Template.php(286): Mage_Core_Block_Template->renderView()
#11 app/code/core/Mage/Core/Block/Abstract.php(863): Mage_Core_Block_Template->_toHtml()
#12 app/code/local/Df/Core/Block/Text/List.php(20): Mage_Core_Block_Abstract->toHtml()
#13 app/code/core/Mage/Core/Block/Abstract.php(863): Df_Core_Block_Text_List->_toHtml()
#14 app/code/core/Mage/Core/Block/Abstract.php(582): Mage_Core_Block_Abstract->toHtml()
#15 app/code/core/Mage/Core/Block/Abstract.php(526): Mage_Core_Block_Abstract->_getChildHtml('content', true)
#16 app/design/frontend/ftrade/default/template/page/1column.phtml(48): Mage_Core_Block_Abstract->getChildHtml('content')
#17 app/code/core/Mage/Core/Block/Template.php(241): include('/var/www/shop_a...')
#18 app/code/core/Mage/Core/Block/Template.php(272): Mage_Core_Block_Template->fetchView('frontend/ftrade...')
#19 app/code/core/Mage/Core/Block/Template.php(286): Mage_Core_Block_Template->renderView()
#20 app/code/core/Mage/Core/Block/Abstract.php(863): Mage_Core_Block_Template->_toHtml()
#21 app/code/core/Mage/Core/Model/Layout.php(555): Mage_Core_Block_Abstract->toHtml()
#22 app/code/core/Mage/Core/Controller/Varien/Action.php(390): Mage_Core_Model_Layout->getOutput()
#23 app/code/core/Mage/Catalog/controllers/Seo/SitemapController.php(65): Mage_Core_Controller_Varien_Action->renderLayout()
#24 app/code/core/Mage/Core/Controller/Varien/Action.php(419): Mage_Catalog_Seo_SitemapController->categoryAction()
#25 app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(250): Mage_Core_Controller_Varien_Action->dispatch('category')
#26 app/code/core/Mage/Core/Controller/Varien/Front.php(176): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#27 app/code/core/Mage/Core/Model/App.php(354): Mage_Core_Controller_Varien_Front->dispatch()
#28 app/Mage.php(683): Mage_Core_Model_App->run(Array)
#29 index.php(87): Mage::run('', 'store')
#30 {main}

#2 Дарья Головина
  • Группа: Клиент
  • Сообщений: 120
  • Регистрация: 09.06.2014

08.07.2014 15:20

Обновились до последней версии - ошибка осталась

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

10.07.2014 07:46

Специально потратил своё время и проверил программный код ВСЕХ версий Magento Community Edition.
НИ В ОДНОЙ из них нет на 37-й строке файла catalog/seo/tree.phtml вызова несуществующего в классе Mage_Catalog_Model_Category свойства $is_active.

Очевидно, кто-то посторонний внёс правки в шаблон catalog/seo/tree.phtml и зачем-то вызывает там отсутствующее в классе Mage_Catalog_Model_Category свойство $is_active.

И если в Magento Community Edition можно программировать тяп-ляп, с низким качеством, вызывая у объектов отсутствующие свойства, то Российская сборка Magento предпочитает сразу явно говорить о дефекте в программном коде, чем создавать видимость, будто бы система правильно работает с несуществующими данными.

Самым разумным для устранения данной проблемы будет сравнение дефектого файла catalog/seo/tree.phtml с эталонным файлом этого же файла из дистрибутива Magento Community Edition, выявление дефектных правок и их устранение.

В частности, вместо вызова несуществующего свойства $_item->is_active, чем программист, видимо, без особого понимания пытался имитировать код Magento Community Edition, правильным будет вызывать метод Varien_Object::getData: $_item->getData('is_active').

#4 Дарья Головина
  • Группа: Клиент
  • Сообщений: 120
  • Регистрация: 09.06.2014

18.07.2014 09:22

Заменила, заработало

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