Intereting Posts
Почему веб-служба возвращает данные, даже если IP-адрес в wsdl неверен? Найти ключ существует в под-ключах массива? PDF-экспорт в php сохранение данных формы в базе данных PDO Несколько запросов: транзакция фиксации и возврата Защитите файл Excel с помощью PHPExcel Выполнение статических методов и функций Как выполнить поиск на моем веб-сайте Как связать конкретную часть на той же странице с jquery и php? Как удалить имя контроллера из URL-адреса в codeigniter? Не удалось проанализировать строку времени в позиции 41 (i): спецификация двойного часового пояса Использование JS / PHP / JS для скрытия ключа API Как я могу подключиться к скрытой службе Tor, используя cURL в PHP? Неустранимая ошибка: вызов функции-члена get () для не-объекта в C: \ wamp \ www \ ci \ application \ models \ site_model.php в строке 6 Laravel 4 – две кнопки отправки в одной форме и оба отправляются для обработки различными действиями

magento – получить все категории детей с идентификатором категории

Как сказано в названии, я пытаюсь сделать это через свою пользовательскую функцию:

public function retrieveAllChilds($id = null, $childs = null){ $childIdsArray = is_null($childs) ? array() : $childs; $category = is_null($id) ? $this->getCurrentCategory() : $this->getCategoryFromId($id); if (count($this->getChildrenCategories($id)) > 0) { $c = count($this->getChildrenCategories($id)); $tmp_array = array(); foreach ($this->getChildrenCategories($id) as $category) { array_push($tmp_array, $category->getId()); } $childIdsArray = array_merge($childIdsArray, $tmp_array); foreach ($this->getChildrenCategories($id) as $category){ $this->retrieveAllChilds($category->getId(), $childIdsArray); } } else{ return array_unique($childIdsArray); } return array_unique($childIdsArray); } 

но кажется, что что-то не так в остановке или в состоянии выхода. функция правильно возвращает первые 16 элементов. Кто-нибудь мог мне помочь?

Я думаю, что класс Mage_Catalog_Model_Category уже включает функцию, которую вы ищете. Он называется getChildren :

 public function retrieveAllChilds($id = null, $childs = null) { $category = Mage::getModel('catalog/category')->load($id); return $category->getChildren(); } 

Функция getChildren возвращает дочерние идентификаторы, разделенные запятой, getChildrenCategories возвращает массив экземпляров Mage_Catalog_Model_Category .

Если вы хотите рекурсивно получить категории детей, вы можете использовать:

 public function retrieveAllChilds($id = null, $childs = null) { $category = Mage::getModel('catalog/category')->load($id); return $category->getResource()->getChildren($category, true); }