2012-03-15 14 views
2

Magentoにストアビューの商品属性値をデフォルト値と同じに設定しようとしています。Magentoで店舗レベルの属性を設定する

私はそれをテストするためにループを通る

echo 'Here'; die(); 

を行ったように私のコードとループが呼び出されている知っている

catalog_product_save_before 

public function translateProduct($observer) 
{ 
    Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID); 
    $product = Mage::getModel('catalog/product')->load($observer->getEvent()->getProduct()->getId()); 

    foreach (Mage::app()->getWebsites() as $website) { 
     foreach ($website->getGroups() as $group) { 
      foreach ($group->getStores() as $store) { 
       $config = $store->getConfig('myconfig'); 
       if($config['enabled']) { 
        foreach($product->getAttributes() as $attribute) { 
         if($attribute->getBackendType() == 'text' && $attribute->getFrontend()->getValue($product) != '') { 
          $product->setStoreId($store->getId())->setData($attribute->getAttributeCode(), $attribute->getFrontend()->getValue($product)); 
         } 
        } 
       }     
      } 
     } 
    } 
    return $this; 
} 

に観察者によって呼び出され、次のコードを持っています。

これはMagento製品のデータを複数の店舗ビューに設定する正しい方法ですか、どこか間違っていますか?任意のヘルプ/ヒント/ポインタを事前に

おかげ

答えて

4

:-)やつがおっと。

デフォルトのレベルでデータを設定するだけで済みます。属性値がストアコンテキストに設定されていない場合、デフォルト値から推論されます。

:-)

+0

だがによって何とかとしましょうデフォルトレベルの製品の 'name'値はStoreレベルの値と異なります。ここで、ストアレベルの 'name'値をデフォルトレベルの値と同じにしたい場合、何をする必要がありますか? –

+0

管理者から編集するだけですか?最初の列はデフォルトで、追加の列はストアビュー用です。拡張子やコードの必要はありませんが、あなたがしようとしていることはネイティブです... –

+0

@Ben&@sonassi - 違反はしませんが、実際には 'name'の値がストアレベルで'コードを使用して、デフォルトレベルで「名前」を指定します。これは、これらすべてがAPIを使用して動作するためです。 **私はまだストアレベルの 'name'値がデフォルトの' name'値と異なる場合にのみ、この問題の適切な解決策を見つけることができませんでした。大変申し訳ありませんが、どうかお願いしてください!** –

3

プログラムで、 "デフォルトを使用" するために、FALSEに属性のためのデータを設定します。

$product->setStoreId($store->getId())->setData($attribute->getAttributeCode(), FALSE); 
0

あなたは...「storeview」レベルではなく、実際に「ストア」の属性を設定する上で、あなたの例では、それはMagentoの中で少し混乱しています...

関連する問題