2

config xml で stores ノードを使用する - 継承値を操作することは可能ですか (つまり、Web サイトまたはストア値の範囲を決定するチェックボックス)

たとえば、一般的な電話の構成パスは次のとおりです。一般 > ストア情報 > 電話

だからxmlでは、これを次のようにターゲットにします:

<stores>
        <my_store_code>
            <general>
                <store_information>
                    <phone>111 222 333</phone>
                </store_information>
            </general>
        </my_store_code>
    </stores>

しかし、この値が Web サイトで使用されていることを確認するにはどうすればよいですか。xml経由で直接ターゲットにすることはできませんでしたが、パスはphone_inheritのようです

4

1 に答える 1

4

チェックボックスの状態は、core_config_dataテーブルに値が設定されているかどうかによって決まります。

これはMage_Adminhtml_Block_System_Config::initFields()で確認できます:行295(Magento 1.7.0.0):

if (isset($this->_configData[$path])) {
    $data = $this->_configData[$path];
    $inherit = false;
} else {
    $data = $this->_configRoot->descend($path);
    $inherit = true;
}

_configDatacore_config_dataテーブルからロードされたパス/値の配列です。パスが(データベースで)設定されている場合、パスは値を使用し、$ internalをfalse(チェックされていない)に設定します。それ以外の場合は、スコープconfig()で値を検索し、_configRoot$ internalをtrue(チェック済み)に設定します。

スコープ構成は、「現在の構成スコープ」で管理者に設定したものに基づいています。したがって、ストアビューを選択している場合は、のgeneral/store_information/phone下の値を検索しますstores/my_store_code。構成によっては、ストア値、Webサイト値、デフォルト値、または何も返さない場合があります。ストア値はWebサイト値をオーバーライドし、Webサイト値はデフォルト値をオーバーライドします。

これは、構成では、「Webサイトから継承する」と明示的に言う方法がないことを意味します。代わりに、Magentoは、[ウェブサイト/デフォルトを使用]チェックボックスの値を変更したときにデータベースに値を追加/削除することでこれを模倣します。チェックボックスをオフにしてカスタム値を入力すると、Magentoはcore_config_dataに行を追加します。同様に、「website / default」値を使用することを選択した場合、Magentoは行を削除し、スコープ構成を調べます。

たとえば、「ウェブサイトを使用する」をオンにすることができますが、config.xmlファイルで指定されている場合、Magentoはストア値を使用します。少し紛らわしいですが、それがどのように機能するかです。したがって、ストアでWebサイトの値を使用する場合は、その値のストア構成xmlを削除する必要があります。

于 2012-05-14T16:24:14.233 に答える