Атрибуты продукта Magento чрезвычайно гибкие, но наличие динамических значений для каждого продукта означает, что вам потребуется один атрибут для каждого продукта, что не имеет особого смысла, поэтому я предполагаю, что эти значения атрибутов имеют некоторые общие черты для продуктов вашего магазина поэтому у вас будет ограниченное количество атрибутов (или один?). Для каждого такого атрибута вы должны заранее создать атрибут и базовую модель для него, а затем использовать задание cron или событие, обновить параметры значения атрибута из вашего API и кэшировать их локально в базе данных или каким-либо другим методом. Вы можете добавить атрибут в установщик вашего модуля следующим образом:
$installer->addAttribute('catalog_product', 'my_attr_code', array(
'label' => 'Attribute Name',
'required' => false,
'input' => 'select',
'source' => 'namespace/source',
'default' => 'none',
'position' => 1,
'sort_order' => 3,
));
Или сверните свой собственный оператор вставки SQL для таблицы eav_attribute
. Убедитесь, что ваш новый атрибут назначен атрибуту, заданному в бэкэнде, чтобы его можно было использовать с вашими продуктами. Затем вы создаете модель на My_Namespace_Model_Source
, которая расширяет Mage_Eav_Model_Entity_Attribute_Source_Table
(при условии, что вы хотите выбрать входные данные для значений вашего атрибута) и реализует как минимум следующие методы:
getAllOptions()
getOptionText($value)
Таким образом, они будут извлекать данные из динамических параметров, которые кэшируются локально, и по большей части ваш новый атрибут будет вести себя как любой другой в Magento. Обязательно используйте интеллектуальное кэширование, потому что эти методы потенциально могут получить многократный удар при загрузке одной страницы. Вы можете наблюдать событие, которое вызывается непосредственно перед отображением страницы создания или редактирования продукта, в противном случае просто переопределите класс или контроллер или используйте задачу Magento cron.
Редактировать: Вы также можете использовать существующие модели атрибутов Magento и создавать значения параметров с помощью существующего API, но я предполагаю, что для выполнения синхронизации или по какой-либо другой причине вам могут потребоваться дополнительные метаданные, в этом случае вам понадобится пользовательская модель бэкэнда.