Есть ли способ отключить изменение SKU, который уже был создан в Magento?

В Magento при создании нового продукта вы можете вручную ввести номер SKU. Позже вы можете изменить этот номер SKU на другой номер. Есть ли способ запретить это в Magento? После того, как номер SKU назначен, я хочу, чтобы он всегда был SKU - я не хочу, чтобы мои пользователи вместо этого назначали другой SKU.

2 ответа

Решение

Я могу подумать о двух подходах: наблюдатель событий и пользовательская модель бэкэнда атрибута для атрибута SKU, последний является более тщательным решением.

Для наблюдателя событий можно наблюдать сравнение значения свойства SKU, посмотреть, изменилось ли оно, и установить его в исходное значение с предупреждением. Этого должно быть достаточно, если атрибут SKU не сохранен с помощью saveAttribute(), так далее.

Также можно выполнить ту же логику в модели бэкэнда атрибута EAV, которую можно легко присвоить атрибуту через скрипт установки. Тем не менее, в случае атрибута SKU, он уже имеет бэкэнд-модель, Mage_Catalog_Model_Product_Attribute_Backend_Sku [ссылка]. Было бы довольно легко переписать validate() метод, использующий стандартный класс Magento, переписывает, добавляет требуемую логику защиты значений и затем вызывает родительский метод, что делает решение достаточно переносимым.

И, в то время как бэкэнд-модель используется независимо от сохранения через save() или же saveAttribute()это обеспечит обработку всех сохранений через бэкэнд администратора в соответствии с вашей логикой.

Один из самых простых способов, который я могу придумать, - это добавить пользовательский файл Javascript на страницу добавления продукта и проверить, существует ли идентификатор продукта, который доступен только после сохранения продукта. Если идентификатор продукта присутствует, отключите / скройте поле sku. Это не на 100% безопасно, так как вы используете только JS, но при условии, что вы можете доверять администраторам.

Другие вопросы по тегам