2012-01-18 56 views
1

我與Magento的CE 1.6的工作在一個項目中,我們需要一個簡單的方法來填補DVD和藍光射線產品的電影信息爲經銷商電子商務對電影產品的信息。我打算使用Rotten Tomatoes API,這對我們的目的來說似乎非常合適,但這裏是一個事情:我們不希望在New Product對話框中輸入電影的每一個細節,相反,我們想要獲取自動使用電影名稱作爲提示的信息(API完全支持這一點)。不過,我覺得,我們可以通過兩種方式實現:自動填寫在Magento

  1. 擁有管理員只需輸入電影名稱和 創建並定期運行該獲取的 信息的其餘部分與API和更新腳本數據直接在數據庫中。我一直在 觀看數據庫更改產品保存時,並不想 做到這一點。

  2. 編輯Magento代碼以使新產品表單可以自動填充, 可能帶有ajax,一旦輸入了電影名稱。 Zend框架不是 我的強大,似乎也很難。

我從這個角度看這個問題嗎?有沒有其他的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 2012-01-24 19:14:06

+1

該擴展尚不存在。我只提到建立一個,因爲你想要做的事情在自定義擴展中是最好的。 – 2012-01-26 15:04:03