Как получить список уже существующих категорий и их ID?

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

18.05.2010 17:22

В стандартном файле импорта товара указывается не сама категория, а ее ID. Если категорий скажем 100-200, то лазить по каждой в поиске ее ID весьма затруднительно, к тому же товар может принадлежать нескольким категориям. Возможно ли стандартными средствами быстро получить этот самый список всех категорий и их ID скажем вида:

"ID","Category"
"3,25,50","Офисная мебель/Кресла/Пледы"


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

18.05.2010 20:53

	public function getMagentoCategoriesAsFlattenArray () {
		$categories_collection =
			Mage::getModel('catalog/category')
				->getCollection()
		;
		$categories_collection
			->addAttributeToSelect('name')
			->addAttributeToSelect('parent_id')
			->setStoreId (
				Mage::app()
					->getStore()
					->getId()
			)
				->load ()
		;
		$result = array ();
		if($categories_collection->getSize()){
			foreach($categories_collection as $category) {
				$result []=
					array (
						"id"  => $category->getId ()
						,
						"parent_id" => $category->getParentId ()
						,
						"level" => $category->getLevel()
						,
						"name" => $category->getName()
					)
				;
			}
		}
		return $result;
	}


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

18.05.2010 20:58

Дмитрий, вы меня простите, но куда этот код вставлять? :(

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

18.05.2010 21:29

В коде не используется объект $this, поэтому он будет работать в любом контексте.

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

18.05.2010 21:49

м-да, вот она разница, между пользователем и программистом, :) вроде и ответили, а что теперь с этим делать, никто не знает. Понятно, что для вас это само собой, но для меня например это темный лес, так и не понял куда это поставить, чтобы получить список. :(

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

19.05.2010 02:25

Если вы решили изучать программирование Magento, то в качестве примера посмотрите модуль импорта категорий в Magento из файла CSV.
Посмотрите ещё пример самого простого модуля Magento.
В этом примере вы можете вставить вызов функции getMagentoCategoriesAsFlattenArray вместо строки die ('ПРЕВЕД, МЕДВЕД!');
А саму функцию сделать методом указанного в примере класса Sandbox_Module1_Model_Observer.

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

19.05.2010 06:42

Задачи изучать программирование передо мной не стоит, передо мной стоит конкретная задача по магазину со свободным кодом (Шэф, вам шашечки или ехать? ©). Обращаясь на форум я вполне четко пытаюсь решить то, что хочет от магазина его владелец в деталях, но видя у кого-то похожую проблему на форуме я всегда найду время объяснить все в мельчайших подробностях для человека оказавшегося в подобной ситуации.

Чтобы было понятнее: решается конкретная задача по импорту товаров. в наличии только примитивный прайс. в итоге, вместо того, чтобы получив список ID категорий заняться делом - приходится пару дней "изучать программирование маженто".

Но в любом случае спасибо за помощь, буду искать в этом направлении.

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