Программное удаление нескольких представлений хранилища


Я пытаюсь удалить несколько представлений хранилища с помощью php-скрипта, который включает app/Mage.php в корневой каталог моей установки.

Я могу получить список веб-сайтов и сохранить просмотры, но мне нужно каким-то образом проанализировать их в методе delete() в виде массива, зацикливаясь на каждом store_id, чтобы удалить те, которые мне больше не нужны.

Кроме того, мне нужно найти способ отфильтровать store_id, чтобы я не удалял представление магазина по умолчанию или администратора.

Вот что у меня есть так далеко:

/** Load Magento **/
umask(0);
require_once 'app/Mage.php';

/** Load webstes and stores */
echo "Website ID: " . Mage::app()->getWebsite()->getId() . "<br/>";
echo "Website Name: " . Mage::app()->getWebsite()->getName() . "<br/>";
echo "Store ID: " . Mage::app()->getStore()->getId() . "<br/>";
echo "Store Name: ".Mage::app()->getStore()->getName(). "<br/>";
echo "Store code: ". Mage::app()->getStore()->getCode()."<br/>";

/** @var ** $website loop */
foreach (Mage::app()->getWebsites() as $website) {
    foreach ($website->getGroups() as $group) {
        $stores = $group->getStores();
        foreach ($stores as $store) {
            echo $store->getId() ." ".$store->getName()."<br/>";
        }
    }
}
/** ** End of script */

Я не смог найти способ вызвать метод delete() для каждого store_id, используя:

$model = Mage::getModel('core/store')->load($stores);
$model->delete();

Кто-нибудь может помочь?

Author: user1704524, 2015-06-04

2 answers

Используйте StoreID вместо $stores

Как

$model = Mage::getModel('core/store')->load($store->getId());
$model->delete();

Функция загрузки загрузит текущее хранилище в цикл for с помощью $store->getId()

Это просто использование псевдокода, которое должно следовать только за проверкой с подробным кодом в библиотеке mage

Надеюсь, это сработает для вас.

 3
Author: liyakat, 2015-06-04 16:52:04

Если вы получите следующую ошибку Cannot complete this operation from non-admin area, которая предотвратит удаление магазинов. Добавьте приведенный ниже код в скрипт.

Mage::register('isSecureArea', true);

Источник

 0
Author: Akif, 2019-09-18 09:23:29