Подтвердить что ты не робот

Получение списка магазинов magento

Как я могу получить список групп магазинов под веб-сайтом в Magento, а затем список магазинов из этой группы магазинов?

4b9b3361

Ответ 1

Попробуйте это, чтобы получить объекты непосредственно

Mage::app()->getWebsites(); < in file > app/code/core/Mage/Core/Model/App.php:920 
Mage::app()->getStores(); < in file > app/code/core/Mage/Core/Model/App.php:834

итерации, чтобы получить необходимый объем одного конкретного веб-сайта или магазина

foreach (Mage::app()->getWebsites() as $website) {
    foreach ($website->getGroups() as $group) {
        $stores = $group->getStores();
        foreach ($stores as $store) {
            //$store is a store object
        }
    }
}

В будущем, если у вас есть похожие вопросы, как я обнаружил эти ответы в течение 60 секунд. Сначала я grep для имен методов или аналогичных имен методов с пробелом перед именем метода, чтобы увидеть, где определены методы.

grep ' getStores' app/code -rsn 
grep ' getWebsites' app/code -rsn 

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

grep '>getWebsites' app/code -rsn

Ответ 2

Антон отвечает, правда, может немного изобретать колесо. В Magento Core уже есть средство для извлечения таких данных.

Вы можете получить список всех веб-сайтов и их "детей", используя это: Mage::getSingleton('adminhtml/system_store')->getStoresStructure() Вы также можете передать массив параметров сайта, storeIds или storeGroupIds для функции, чтобы отфильтровать список:

public function getStoresStructure($isAll = false, $storeIds = array(), $groupIds = array(), $websiteIds = array())

Пример вывода:

Array
(
    [1] => Array
        (
            [value] => 1
            [label] => Main Website
            [children] => Array
                (
                    [1] => Array
                        (
                            [value] => 1
                            [label] => Madison Island
                            [children] => Array
                                (
                                    [1] => Array
                                        (
                                            [value] => 1
                                            [label] => English
                                        )

                                    [2] => Array
                                        (
                                            [value] => 2
                                            [label] => French
                                        )

                                    [3] => Array
                                        (
                                            [value] => 3
                                            [label] => German
                                        )

                                )

                        )

                )

        )

)

Существует аналогичный файл, который используется для заполнения раскрывающихся списков "Складской шкаф" и множественного выбора по всей секции администратора.

Mage::getSingleton('adminhtml/system_store')->getStoreValuesForForm(false, true)

Array
(
    [0] => Array
        (
            [label] => All Store Views
            [value] => 0
        )

    [1] => Array
        (
            [label] => Main Website
            [value] => Array
                (
                )

        )

    [2] => Array
        (
            [label] =>     Madison Island
            [value] => Array
                (
                    [0] => Array
                        (
                            [label] =>     English
                            [value] => 1
                        )

                    [1] => Array
                        (
                            [label] =>     French
                            [value] => 2
                        )

                    [2] => Array
                        (
                            [label] =>     German
                            [value] => 3
                        )

                )

        )

)

Чтобы узнать об этом, я обнаружил мульти-select в Admin, у которого есть данные, которые я хотел, затем я включил подсказки шаблона, чтобы узнать, какой класс блока отвечает за его отображение: Mage_Adminhtml_Block_Cms_Page_Edit_Form. Зная это, я нашел класс в базе кода (app/code/core/Mage/Adminhtml/Block/Cms/Block/Edit/Form.php) и разместил часть, которая создает вход, путем поиска его метки ( "Сохранить Посмотреть" ). Это показало мне, как вводятся следующие значения:

$field =$fieldset->addField('store_id', 'multiselect', array(
    'name'      => 'stores[]',
    'label'     => Mage::helper('cms')->__('Store View'),
    'title'     => Mage::helper('cms')->__('Store View'),
    'required'  => true,
    'values'    => Mage::getSingleton('adminhtml/system_store')->getStoreValuesForForm(false, true),
));

Mage::getSingleton('adminhtml/system_store') указывает на класс Mage_Adminhtml_Model_System_Store, где я нашел множество подобных методов, которые также могут быть полезны. Посмотрите сами.