7

これは以前に何度も尋ねられましたが、有効な答えはありません。

複数の店舗があり、一部の属性が上書きされています。これらの属性をスクリプトで「デフォルト値を使用」に変更したいと考えています。

これは、ストアビューと「デフォルト値を使用」チェックボックスを示す画像です http://dl.dropbox.com/u/3209649/storeviews-and-defaultvalues.png (まだ画像の投稿は許可されていません)

app/code/core/Mage/Adminhtml/controllers/Catalog/ProductController.phpでは、任意の属性に対して「デフォルト値を使用」が選択されている場合、2 番目の引数としてsetData() がfalseで使用されます。

/**
 * Check "Use Default Value" checkboxes values
 */
if ($useDefaults = $this->getRequest()->getPost('use_default')) {
    foreach ($useDefaults as $attributeCode) {
        $product->setData($attributeCode, false);
    }
}

次のコードは、同じ方法を使用して、ストア 3 の商品 1 の 'name' 属性を 'use default values' に設定しようとします。

require_once '../app/Mage.php';
Mage::app(3);

$product = Mage::getModel('catalog/product')->load(1);

$product->setData('name', false); # as used in ProductController.php
$product->save();

使用する

$product->setData('name', 'anything');

'name' 属性を 'anything' に正しく設定しますが、falseは 'use default value' に設定しません

「Use Default Value」はデータベースのどこにも保存されていないため、管理インターフェイスのコントローラー内に属性行を削除する別の手順が必要ですか?

関連リンクはこちら -> http://pastebin.com/raw.php?i=j7fwu9H6 (リンクの投稿もまだ許可されていません)

4

1 に答える 1

14

この種の操作には現在のストアが管理ストアである必要があるため、これは機能しません。

特定のストアビューを作成するには、特定の属性のデフォルト値を使用します。

Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);

$product = Mage::getModel('catalog/product')
    ->load($product_id)         // in your case: 1
    ->setStoreId($store_id)     // in your case: 3
    ->setData($attr, false)     // in your case: 'name'
    ->save();
于 2012-04-25T13:40:12.700 に答える