Как получить программно все товарные разделы конкретного магазина?

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

25.03.2012 13:21

Нашёл как получать атрибуты категории:

$categorymagento = Mage::getModel('catalog/category')->load(5);
echo $categorymagento->getName();
И так далее

а вот получить польный список категорий в конкретном магазине??

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

25.03.2012 13:26

Как получить программно список товарных разделов текущего магазина и всех магазинов?

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

25.03.2012 14:29

 $_main_categories=$this->getStoreCategories();

if($_main_categories)
{
    foreach ($_main_categories as $_main_category)
    {
       if($_main_category->getIsActive())
       {
         ....................................                     
       }
    }
}


Как я понял так можно проитись по списку категорий. А как мне получить скажем заголовок категории?

 $_main_category->getName()
??

как и какие атрибуты можно ещё получить? как получить скажем Meta Keywords или описание

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

25.03.2012 14:33

Ваш первый фрагмент кода некачественен, как и большинство циклов, которые новички пишут для Magento.
Вы загружаете все товарные разделы, и лишь потом проверяете значение свойства.
А правильно установить условие на это свойство перед загрузкой коллекции - это сэкономит вычислительные ресурсы в разы.
Думаю, для читателей-заказчиков этот пример тоже будет понятен.

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

25.03.2012 14:39

учту замечание, а как с атрибутами быть??

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

25.03.2012 14:42

Чтобы коллекция загрузила требуемые вам характеристики товарных разделов, надо указать эти характеристики при формировании коллекции, либо указать * для загрузки всех характеристик, например:
Mage::getResourceModel('catalog/category_collection')->addAttributeToSelect('*')

Загрузка всех характеристик медленнее, чем конкретных.

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

25.03.2012 15:04

так и как из масива достовать? как в примере:

 $attributes = Mage::getResourceModel('catalog/product_attribute_collection')
                ->addIsSearchableFilter()
                ->addStoreLabel(Mage::app()->getStore()->getId())
                ->setOrder('main_table.attribute_id', 'asc')
                ->load();
		
        foreach ($attributes as $attributesSearchable)
		{
            $result[] = array(
                'value' => $attributesSearchable["attribute_code"],
                'label' => $attributesSearchable["frontend_label"]
            );
        }


Но только по каким ключам?

Может есть какой нибуть справочник по апи мадженты что по каждому вопросу на форум не нырять??

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

25.03.2012 15:06

Указанный вами пример к заголовку темы никакого отношения не имеет.

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

25.03.2012 15:14

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

И как там на счёт справочника должен же быть хоть по английски??

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

25.03.2012 15:17

Для извлечения характеристик элементов коллекции предназначен метод getData элемента коллекции, например: getData ('название характеристики').

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

25.03.2012 16:38

то есть может быть чтото вроде:

$categ_atributs = Mage::getResourceModel('catalog/category_collection')
		        ->addIsSearchableFilter()
                ->addStoreLabel(Mage::app()->getStore()->getId())
                ->setOrder('main_table.attribute_id', 'asc')
                ->load();

$temp = $categ_atributs.getData('Page Title');

или


$temp = $categ_atributs.getData('Description');


Я правельно понял? я просто пытаюсь доработать модуль поиска по сайту, по товарам порядок всё, но мне надо ещё и по категориям!!

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

25.03.2012 16:40

По какой причине вы не можете самостоятельно проверить указанный вами блок программного кода?

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

25.03.2012 16:50

могли бы сказать на равельном я пути или нет

вообщем написал следущее:

public function toOptionArray()
    {
		$result = array();
		
        $attributes = Mage::getResourceModel('catalog/product_attribute_collection')
                ->addIsSearchableFilter()
                ->addStoreLabel(Mage::app()->getStore()->getId())
                ->setOrder('main_table.attribute_id', 'asc')
                ->load();
		
        foreach ($attributes as $attributesSearchable)
		{
            $result[] = array(
                'value' => $attributesSearchable["attribute_code"],
                'label' => $attributesSearchable["frontend_label"]
            );
        }
		
		$categ_atributs = Mage::getResourceModel('catalog/category_collection')
		                        ->addIsSearchableFilter()
								->addStoreLabel(Mage::app()->getStore()->getId()) 
								->setOrder('main_table.attribute_id', 'asc')
								->load();
								$temp = $categ_atributs.getData('Page Title');
		
        return $result;
    }


Запукая браузер ругается:

Fatal error: Call to undefined method Mage_Catalog_Model_Resource_Category_Collection::addIsSearchableFilter() in /home/dev321/domains/dev321.kivi4us.com/public_html/app/code/local/TM/AjaxSearch/Adminhtml/Model/System/Config/Source/SearchAttributes.php on line 33


тоесть на
$categ_atributs = Mage::getResourceModel('catalog/category_collection')
		                        ->addIsSearchableFilter()


хотя в первый раз проглатьл эту функцию на ура! :blink:

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

25.03.2012 16:52

Ответ на вопрос в заголовке темы дан, тему закрываю: для заочного бесплатного программирования форум не предназначен.

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