2012-02-29 12 views
5

私は、Googleのショッピングリストサービス(Google Base)のためにGoogleに送信するために、次のスクリプトを使用してGoogleの商品のリストをエクスポートしています。スクリプトがうまく動作しますが、それは空のブランドやメーカーの列を残し:ID番号の代わりにMagento属性名を取得しますか?

<?php 
define('SAVE_FEED_LOCATION','google_base_feed.txt'); 
set_time_limit(1800); 
require_once '../app/Mage.php'; 
Mage::app('default'); 
try{ 
    $handle = fopen(SAVE_FEED_LOCATION, 'w'); 

    $heading = array('id','mpn', 'upc','title','description','link','image_link','price','brand','product_type','condition', 'google_product_category', 'manufacturer', 'availability'); 
    $feed_line=implode("\t", $heading)."\r\n"; 
    fwrite($handle, $feed_line); 

    $products = Mage::getModel('catalog/product')->getCollection(); 
    $products->addAttributeToFilter('status', 1); 
    $products->addAttributeToFilter('visibility', 4); 
    $products->addAttributeToSelect('*'); 
    $prodIds=$products->getAllIds(); 

    $product = Mage::getModel('catalog/product'); 

    $counter_test = 0; 

    foreach($prodIds as $productId) { 

     if (++$counter_test < 30000){ 

      $product->load($productId); 

      $product_data = array(); 
      $product_data['sku'] = $product->getSku(); 
      $product_data['mpn'] = $product->getData('upc'); 
      $product_data['upc'] = $product->getData('upc'); 

      $title_temp = $product->getName(); 
      if (strlen($title_temp) > 70){ 
       $title_temp = str_replace("Supply", "", $title_temp); 
       $title_temp = str_replace(" ", " ", $title_temp); 
      } 
      $product_data['title'] = $title_temp; 

      $product_data['description'] = substr(iconv("UTF-8","UTF-8//IGNORE",$product->getDescription()), 0, 900); 
      $product_data['Deeplink'] = "http://www.domainname.co.uk/store/".$product->getUrlPath(); 
      $product_data['image_link'] = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA).'catalog/product'.$product->getImage(); 

      $price_temp = round($product->getPrice(),2); 
      $product_data['price'] = round($product->getPrice(),2) * 
1.2; 
      $product_data['brand'] = $product->getAttribute('manufacturer'); 

      $product_data['product_type'] = 'Pet Products and Accessories'; 
      $product_data['condition'] = "new"; 
      $product_data['category'] = $product_data['brand']; 
      $product_data['manufacturer'] = $product_data['brand']; 

      $product_data['availability'] = "in stock"; 

      foreach($product_data as $k=>$val){ 
       $bad=array('"',"\r\n","\n","\r","\t"); 
       $good=array(""," "," "," ",""); 
       $product_data[$k] = '"'.str_replace($bad,$good,$val).'"'; 
      } 

      echo $counter_test . " "; 

      $feed_line = implode("\t", $product_data)."\r\n"; 
      fwrite($handle, $feed_line); 
      fflush($handle); 

     } 

    } 

    fclose($handle); 
} 
catch(Exception $e){ 
    die($e->getMessage()); 
} 

ラインを質問に次のようになります。

$product_data['brand'] = $product->getAttribute('manufacturer'); 

私が代わりにメーカー名を表示する方法を見つけることができませんIDの私は 'getAttribute'を 'getData'と 'getName'に変更しようとしましたが、必要なものは何もしません。

ご協力いただきましてありがとうございます。

+0

が重複する可能性:http://stackoverflow.com/questions/6924226/magento-product-attribute-get-value – Jonathan

答えて

19

利用代わりに、この:背景情報のビットとして

$product_data['brand'] = $product->getAttributeText('manufacturer'); 


ネイティブMagentoのselectmultiselect属性オプションはeav_attribute_optioneav_attibute_option_valueテーブルに格納されています。
eav_attribute_optionの主キーoption_idは、製品属性に関連付けられた値です。
商品に関連付けられたオプション値がストアビューとは独立しているという考えがあります。そのオプションラベルの翻訳。

getAttributeText()メソッドは、データベースから一致するラベルをロードし、IDと一致するラベルを返すために、属性のソースモデルを使用しています。

public function getAttributeText($attributeCode) 
{ 
    return $this->getResource() 
     ->getAttribute($attributeCode) 
      ->getSource() 
       ->getOptionText($this->getData($attributeCode)); 
} 

問題のソースモデルはeav/entity_attribute_source_tableです。
getAttributeText()メソッドは、製品のすべてのselect属性およびmultiselect属性に使用する必要があります。

3

はVinaiは?:名前を取得

$product->getAttributeText('manufacturer'); 

を示唆したように、あなたが以下を試してみました。 IDを取得します

$product->getManufacturer(); 

: その他はこれを示唆しました。いくつかの関連スレッドを見てください:

Magento: fetching manufacturer/brand from database

は、この検索の結果を見てみましょう: https://stackoverflow.com/search?q=%5Bmagento%5D+manufacturer

私はいくつかのサンプルをテストし、あなたが最も信頼性がある1お知らせいたします。

HTH

+0

'$製品 - > getManufacturerText()は' '属性の値を返しますmanufacturer_text'(これはおそらく何かが望んでいない)です。 – Vinai

+1

素晴らしい..これは私のために働く..ありがとう – raghuveer999

関連する問題