Я столкнулся с проблемой в многоуровневом навигационном блоке, который, я считаю, может быть ошибкой.Magento Многоуровневый навигационный вызов для count() для неопределенного объекта
В блоке Mage_Catalog_Block_Navigation, метод _renderCategoryMenuItemHtml:
// get all children
// If Flat Data enabled then use it but only on frontend
$flatHelper = Mage::helper('catalog/category_flat');
if ($flatHelper->isAvailable() && $flatHelper->isBuilt(true) && !Mage::app()->getStore()->isAdmin()) {
$children = (array)$category->getChildrenNodes();
$childrenCount = count($children);
} else {
$children = $category->getChildren();
$childrenCount = $children->count();
}
Я плоский индекс категории включен, а индекс перестраивается, когда планируется (каждую минуту). Magento версия 1.14.0.1 и иногда я получаю сообщение об ошибке:
Call to a member function count() on a non-object
Основываясь на статье, если я предполагаю, что это происходит, когда кто-то получает доступ к странице в то время как индекс перестраивается (isAvailable).
Проблема в том, что код в блоке else, похоже, даже не теоретически не работает, потому что $ category-> getChildren() возвращает строку. Я что-то упустил? Является ли это ошибкой или у меня некорректная конфигурация где-то.
Я пробовал кеш-память, у меня есть запланированный импорт по 15 м каждый час, и кеш был очищен одновременно. Я сменил его на 15 м позже, но это все еще произошло. – Domeglic