Удалить значение уровня хранилища для атрибута категории
В нашем магазине у нас есть атрибут категории клиентов, который был установлен для каждого магазина. Теперь мы хотим удалить значения уровня хранилища и заменить его одним глобальным уровнем. Теперь я знаю, как это сделать через администратора, но есть ли способ отсортировать это с помощью сценария настройки.
2
Author: David Manners, 2015-06-11
1 answers
Я думаю, что вы можете повторить поведение контроллера категории администратора, saveAction
.
if ($useDefaults = $this->getRequest()->getPost('use_default')) {
foreach ($useDefaults as $attributeCode) {
$category->setData($attributeCode, false);
}
}
Но для этого требуется load
в цикле. На самом деле 2 петли.
Что-то вроде этого (непроверенный код)
$attributeCode = 'attribute_code_here';
$collection = Mage::getModel('catalog/category')->getCollection()->addLevelFilter(2); //exclude the root of all roots and the root catalog.
$stores = Mage::getModel('core/store')->getCollection()->setWithoutDefaultFilter();
foreach ($collection as $category) {
foreach ($stores as $store) {
$_category = Mage::getModel('catalog/category')->setStoreId($store->getId())->load($category->getId());
$_category->setData($attributeCode, false);
$_category->save();
}
}
Я знаю, что это не лучшее решение, но, поскольку это будет выполняться только один раз, это не должно быть такой большой проблемой.
Я все еще говорю, что вы должны использовать запрос. Это намного быстрее.
4
Author: Marius, 2015-06-11 12:17:53