Magento 1.8 Требуется запрос базы данных для изменения шаблона пользовательского дизайна всех продуктов
Хорошо, я нахожусь в процессе обновления темы в Magento 1.8, и у меня все настроено, за исключением продуктов, которые все еще показывают старую тему. В магазине около 1800 товаров, и мне потребовалась бы вечность, чтобы вручную изменить тему для каждого из них. Есть ли запрос на изменение их на всех продуктах сразу?
Настройки можно найти в панели администратора: Каталог -> Управление продуктами -> выберите продукт -> дизайн -> раскрывающийся список "Пользовательский дизайн " (см. Изображение ниже)
На что я хотел бы его изменить, вы можете видеть на изображении ниже
Любая помощь в этом будет очень признательна. Заранее благодарю, jmituzas
3 answers
Во-первых, Magento управляет custom layout
с помощью custom_design attribute
, который является атрибутом varchar
, и сохраняет значение attibute в таблице catalog_product_entity_varchar
Сначала я должен проверить идентификатор custom_design и этот идентификатор 103, используя
Шаг 1: получить атрибут eav продукта загрузки
$custom_design = Mage::getResourceModel('catalog/product')->getAttribute('custom_design');
Шаг 2: получите идентификатор Attibute, используя приведенный ниже код $custom_design->getAttributeId()
.
Шаг 3: получить таблицу этого атрибута с помощью кода $custom_design->getBackend()->getTable();
Альтернативный процесс получения custom_design
идентификатор атрибута
Получите идентификатор custom_design с помощью кода ниже:
SELECT `attribute_id` FROM `eav_attribute` WHERE `attribute_code`='custom_design' and `entity_type_id`=4
Просто перейдите admin>Catalog>Attribute>Maange Attribute>
Выберите атрибут custom_design
из сетки и нажмите на него, а в этом атрибуте просмотрите URL страницы you can see attribute id
admin/catalog_product_attribute/edit/attribute_id/
103/key/e88df75c6ef10d0be06f2aa52b99afef/
Теперь это означает , что вы обновляете это значение eav, используя следующий запрос
update catalog_product_entity_varchar set value ='youdesign template code'
where attribute_id =$custom_design->getAttributeId()
И у вас будет несколько полей
1)entity_id
является product id
.Вы можете поставить product id
в свое условие обновления запрос
2) store_id
импортируется всякий раз, когда у вас есть multiple store view or website
.Поскольку custom_design - это атрибут области видимости store_view
Как получить список шаблонов
Просто открыть any product at admin
и перейти к нему Design tab inspect custom design drop down
Получить list of option values of this attribute
Отсюда вы выберете свой template
как base/default
или default/modern
или rwd/default
Примечание: You will update value with NULL
это означает, что always design from your Store current design template and package
.
В большинстве случаев product design
он берется из Current store design template
, поэтому он показывает НОЛЬ
Окончательный запрос Выглядит так:
update catalog_product_entity_varchar set value ='your design design template code'
where attribute_id =$custom_design_code
На самом деле, вы хотите, чтобы только некоторые конкретные продукты использовали старую тему, это очень просто, и вам не нужно касаться какого-либо sql или запроса. Три шага:
-
Перейти управление продуктами
-
Найдите продукты, которые вы хотите изменить. Если вы хотите изменить их все, пропустите этот шаг.
-
Нажмите "Выбрать все", при этом будут выбраны все товары, соответствующие вашему запросу (не только товары на странице, на которой вы находитесь видеть)
-
Выберите измените атрибуты в действии, затем отправьте.
-
Найдите атрибут Пользовательский дизайн отметьте галочкой изменить и выберите свою старую тему, затем сохраните.
Готово! :) счастлив и наслаждаюсь использованием Magento
Сделайте резервную копию, прежде чем вы это сделаете, но если я правильно понимаю ваш вариант использования (и вы не хотите, чтобы что-то еще было установлено в mtbrave/default
- потому что это изменит все - тогда вы сможете безопасно запустить следующий SQL:
UPDATE catalog_product_entity_varchar
SET `value`='default/MAG090172'
WHERE `value`='mtbrave/default'
Вы также, вероятно, могли бы установить значение NULL
, чтобы оно было по умолчанию, но вам нужно было бы убедиться, что вы знаете, какой атрибут был правильным. Чтобы понять это, я сделал следующее:
Найдите в таблице eav_attribute
attribute_code
из custom_design
. Мой экземпляр вернул два идентификатора: 58 и 103. Тип атрибута здесь был varchar
Затем я поискал в своей таблице catalog_product_entity_varchar
эти идентификаторы (ГДЕ attribute_id В (58 103), и все они вернулись с attribute_id=103 (и я установил для одного элемента значение custom, это значение по умолчанию/iphone, которое появилось в этом списке - остальные отображаются как NULL
).
Но теоретически приведенный выше SQL-запрос должен работать.