Call to a member function count() on a non-object

Ошибка при создании подкатегории

[16 июля 2019 г.]    Российская сборка Magento 2.52.2
Magento 2: модули и услуги
magereport.com: составление перечня необходимых для установки заплаток SUPEE
#1 Boris
  • Группа: Пользователь
  • Сообщений: 13
  • Регистрация: 31.12.2010

01.01.2011 22:35

Народ, помогите плизз, при создании подкатегории у мена на шаблоне выходит вот такая ошибка
Fatal error: Call to a member function count() on a non-object in /home/user/public_html/app/design/frontend/default/theme11/template/catalog/navigation/vert_nav.phtml on line 16

а на 16 линии вот это <?php $childCnt = $_category->getChildren()->count(); ?>

не знаю как исправить((((

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

02.01.2011 01:01

Прикрепите снимок экрана товарных разделов административной части.

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

02.01.2011 03:07

Изображение

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

02.01.2011 03:31

Замените вызов
$_categories->count()
на
count($_categories)
.

#5 Boris
  • Группа: Пользователь
  • Сообщений: 13
  • Регистрация: 31.12.2010

02.01.2011 04:24

Просмотр сообщенияДмитрий Федюк (02.01.2011 03:31) писал:

Замените вызов
$_categories->count()
на
count($_categories)
.


если честно я даже не могу найти такой код, может вы имели ввиду что то тут сделать $childCnt = $_category->getChildren()->count();?

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

02.01.2011 04:37

Это должна быть строка 16, о которой говорит интерпретатор.
Конкретный код зависит от темы. Если он именно такой, как вы написали, то попробуйте заменить его на:

$childCnt = count ($_category->getChildren());


#7 Boris
  • Группа: Пользователь
  • Сообщений: 13
  • Регистрация: 31.12.2010

02.01.2011 05:07

спасибо дружище, ошибка исчезла, тока вот теперь подкатегории не показываются,, но я попробую разобраться сам, еще раз спасибо

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

02.01.2011 05:22

Причина ошибки Call to a member function count() on a non-object - тема создавалась для ранних версий Magento и несовместима с 1.4.
Возможно, там ещё какие-то правки требуется внести, чтобы категории показывались.
А может, вам просто надо их опубликовать.

#9 Boris
  • Группа: Пользователь
  • Сообщений: 13
  • Регистрация: 31.12.2010

02.01.2011 13:56

Просмотр сообщенияДмитрий Федюк (02.01.2011 05:22) писал:

Причина ошибки Call to a member function count() on a non-object - тема создавалась для ранних версий Magento и несовместима с 1.4.
Возможно, там ещё какие-то правки требуется внести, чтобы категории показывались.
А может, вам просто надо их опубликовать.


нужно внести еще какие то изменение в этом коде чтоб выявить подкатегории <li <?php if($childCnt == $i): ?>class="last"<?php endif; ?>><a href="<?=$this->getCategoryUrl($childCat);?>"><?=$childCat->getName();?></a></li>
я знаю что надо добавить echo но я не знаю как прописать, так как я еще не разобрался с логикой скрипта.
помогите пожалуйста кто может, как мне вывести подкатегорию на сайт.

вот весь код с файла:

<div class="menu_left_navigation">
<div class="left_top_bg"><strong>Categories</strong></div>
<div class="left_mid_bg">
<div><?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('we_recommend')->toHtml() ?></div>
<div class="menu_sub_head">
<?php foreach ($this->getStoreCategories() as $_category): ?>
<?php $cateactive = $_category->getIsActive(); ?>
<?php if($cateactive == 1) { ?>
<?php $open = $_category->hasChildren(); ?>
<div class="head">
<a href="<?=$this->getCategoryUrl($_category);?>"><?=$_category->getName();?></a>
</div>
<?php if ($open): ?>
<div class="sub_head_list">
<ul>
<?php $childCnt = count ($_category->getChildren()); ?>
<?php $i=1; foreach ($_category->getChildren() as $child): ?>
<?php $CatID = $child->getId(); ?>
<?php $childCat = Mage::getModel('catalog/category')->load($CatID); ?>
<li <?php if($childCnt == $i): ?>class="last"<?php endif; ?>><a href="<?=$this->getCategoryUrl($childCat);?>"><?=$childCat->getName();?></a></li>
<?php $i++; endforeach; ?>
</ul>
<div class="bottom_bg"></div>
</div>
<?php endif; ?>
<?php } ?>
<?php endforeach ?>
</div>
</div>
</div>


Спасибо за ранее.

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

02.01.2011 14:33

Какую тему вы используете?

#11 Boris
  • Группа: Пользователь
  • Сообщений: 13
  • Регистрация: 31.12.2010

02.01.2011 14:37

Просмотр сообщенияДмитрий Федюк (02.01.2011 14:33) писал:

Какую тему вы используете?


а вам что то даст от название темы?
я использую informatica купил ее тут http://dev141.ecomme...ore=informatica

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

02.01.2011 14:43

Я думаю, раз вы уже оплатили труд разработчика темы - он с удовольствием поможет вам решить вашу проблему.

#13 Boris
  • Группа: Пользователь
  • Сообщений: 13
  • Регистрация: 31.12.2010

02.01.2011 14:56

я тоже так думал, я им уже пишу второй день, они молчат, не знаю что и думать уже.

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

02.01.2011 15:03

Новый Год же :)
Вчера-сегодня даже сама компания-разработчик Magento не работает.

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

02.01.2011 15:27

Кстати, у вас есть простой способ проверить, кто источник проблемы: тема или вы.
Для этого просто смените временно тему на стандартную Default.
Если разделы появятся - значит, проблема в вас.
Если не появятся - значит, проблема в вашей теме informatica.

#16 Boris
  • Группа: Пользователь
  • Сообщений: 13
  • Регистрация: 31.12.2010

02.01.2011 16:35

вроде все сделал как хотел, все работает, только поставил я другой совсем код:
<?php
$obj = new Mage_Catalog_Block_Navigation();
$store_cats	= $obj->getStoreCategories();
$current_cat 	= $obj->getCurrentCategory();
$current_cat	= (is_object($current_cat) ? $current_cat->getName() : '');?>

<div class="menu_sub_head">
 
<?php foreach ($store_cats as $cat) {
	if ($cat->getName() == $current_cat) {?>
	

	
<?php echo '<li><a href="'.$this->getCategoryUrl($cat).'">'.$cat->getName()."</a>\n <ul>\n";?>
		

<div class="sub_head_list">		
<?php foreach ($obj->getCurrentChildCategories() as $subcat) {
	  echo '<li><a href="'.$this->getCategoryUrl($subcat).'">'.$subcat->getName()."</a></li>\n";
		}
		echo "</ul>\n</li>\n";
	} else {
		echo '<li><a href="'.$this->getCategoryUrl($cat).'">'.$cat->getName()."</a></li>\n";
	}
}?>


тут другой вопрос, не могу из под категории вывести подкатегории, не знаете где нужно тут подправить?

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

02.01.2011 16:42

У объекта класса Mage_Catalog_Model_Category имеется метод getChildrenCategories .

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

02.01.2011 18:04

пробовал поставить метод getChildrenCategories выдает самую главную Default

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

02.01.2011 18:15

Для какого конкретно объекта вы вызываете этот метод?

#20 Boris
  • Группа: Пользователь
  • Сообщений: 13
  • Регистрация: 31.12.2010

02.01.2011 18:30

то что вы написали Mage_Catalog_Model_Category
я создал объект класса
$object = new Mage_Catalog_Model_Category();


и поставил метод

<?php foreach ($object->getChildrenCategories() as $subcat) {
          echo '<li><a href="'.$this->getCategoryUrl($subcat).'">'.$subcat->getName()."</a></li>\n";
                }
                echo "</ul>\n</li>\n";
        } else {
                echo '<li><a href="'.$this->getCategoryUrl($cat).'">'.$cat->getName()."</a></li>\n";
        }
}?>


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

02.01.2011 18:32

А откуда Magento узнает, какой именно категории соответствует ваш $object?

#22 Boris
  • Группа: Пользователь
  • Сообщений: 13
  • Регистрация: 31.12.2010

12.01.2011 21:50

ребята может кто знает как вызывать подкатегории 3 го уровня? уже какой день голову ломаю, Дмитрий может вы знаете?

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

12.01.2011 21:53

Используйте метод getChildren() класса Mage_Catalog_Model_Category.

#24 ГенадиЙ
  • Группа: Пользователь
  • Сообщений: 8
  • Регистрация: 12.01.2011

12.01.2011 22:55

я парюсь с этим, пытался вставить метод getChildren() не помогает.
вот моЙ год
<?php
$obj = new Mage_Catalog_Block_Navigation();
$store_cats     = $obj->getStoreCategories();
$current_cat    = $obj->getCurrentCategory();
$current_cat    = (is_object($current_cat) ? $current_cat->getName() : '');?>

<div class="menu_sub_head">
 
<?php foreach ($store_cats as $cat) {
        if ($cat->getName() == $current_cat) {?>
        

        
<?php echo '<li><a href="'.$this->getCategoryUrl($cat).'">'.$cat->getName()."</a>\n <ul>\n";?>
                

<div class="sub_head_list">             
<?php foreach ($obj->getCurrentChildCategories() as $subcat) {
          echo '<li><a href="'.$this->getCategoryUrl($subcat).'">'.$subcat->getName()."</a></li>\n";
	  
                }
				
				
                echo "</ul>\n</li>\n";
				
				
        echo "</ul>\n</li>\n";
		
		}
		else {
               echo '<li><a href="'.$this->getCategoryUrl($cat).'">'.$cat->getName()."</a>\n <ul>\n";
	
                }

}

?>


помогите мне правильно вставить третиЙ уровень категории. И куда именно вставить((((
За ранее спс

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