2012-01-18 3 views
1

Я работаю с Magento CE 1.6 в проекте, где нам нужен простой способ заполнить информацию о фильме на DVD-дисках и Blu-Ray-продуктах для электронной коммерции реселлера. Я настроен использовать API Rotten Tomatoes, который кажется очень адекватным для наших целей, но вот что: мы не хотим вводить каждую деталь фильма в диалоговом окне «Новый продукт», напротив, мы хотим получить информация автоматически использует имя фильма в качестве подсказки (API полностью поддерживает это). Я, однако, что мы могли бы добиться этого двумя способами:Информация о автозаполнении для кинопродукции в Magento

  1. Имея администратора ввести только имена фильмов и создавать и периодически запускать скрипт, который извлекает оставшуюся часть информации с API и обновления данные непосредственно в БД. Я был , наблюдая изменения БД при сохранении продукта и не хотел бы сделать это.

  2. Редактирование кода Magento, чтобы сделать новую форму продукта автозаполняемой, возможно с ajax, как только будет введено название фильма. Zend framework - это не мой сильный и, похоже, тоже тяжелый.

Я вижу эту проблему из-под угла наклона? Может быть, есть еще один API? Или расширение Magento? Или другая электронная коммерция ?!

ответ

2

Я бы предложил несколько иной подход. Усовершенствование интерфейса администратора затруднено, но возможно. Вот более простой способ. Метод

# 1 - Быстрая и простая

Создайте себе сценарий, который будет идти по списку продуктов. Вы можете выбрать их по типу атрибута, категории или даже просто выбрать их все! Затем прокрутите эту коллекцию и для каждого продукта возьмите заголовок, запросите API-интерфейс фильма и установите атрибуты продукта. Затем сохраните продукт и перейдите к следующему. Что-то вроде этого:

Примечание. Обязательно создайте свои пользовательские атрибуты в администраторе и назначьте их атрибуту.

<?php 
require_once 'app/Mage.php'; 
umask(0); 
Mage::app('default'); 

function getVideoDataFromAPI($title) 
{ 
    // get your data from the API here... 
    return $data; 
} 

$collection = Mage::getResourceModel('catalog/product_collection') 
    ->addAttributeToFilter('attribute_set_id', $yourAttributeSetId) 
    ->addAttributeToFilter('year', ''); // <-- Set a field here that will be empty by default, and filled by the API. This is '' because it won't be null. 

foreach ($collection->getAllIds() as $id) { 
    $product = Mage::getModel('catalog/product')->load($id); 
    $videoData = getVideoDataFromAPI($product->getName()); 
    if (empty($videoData)) { continue; } 
    $product->setYear($videoData['year']) 
    ->setRating($videoData['rating']) 
    ->save(); 
} 
?> 

Способ № 2 - Сделайте выше, но в пользовательском расширении

Я всегда как расширения над сценариями. Они более безопасны и мощнее. С расширением вы можете иметь список администраторов продуктов, можете отфильтровать их, как вам хотелось бы, и провести массовое действие, чтобы вручную вытащить видеоданные. Вы также можете настроить его на задание cron, чтобы вытаскивать его регулярно.

+0

Здравствуйте, большое спасибо! Я проверю это расширение, кажется, лучшее решение. Я отправлю обратно. Ваш сценарий также дает мне начальную точку, если я решила пойти именно так. – acampos

+1

Расширение еще не существует. Я только упомянул о строительстве одного, потому что то, что вы пытаетесь сделать, было бы лучше всего в пользовательском расширении. –