2012-05-13 8 views
2

を継承 - それは例えばだから継承値(ウェブサイトまたはストア値の範囲を決定する、すなわちチェックボックスに)のために設定パスをMagentoの設定XML - 設定XMLに格納されたノードを使用して値

を操作することが可能です一般の下で電話がある:一般>店舗情報>電話は

ので、XMLで私はこれを標的とする:

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

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

答えて

3

チェックボックスの状態は、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; 
} 

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

スコープの設定は、「現在の設定範囲」で管理者が設定した内容に基づいています。ストアビューを選択した場合、general/store_information/phoneの値はstores/my_store_codeになります。設定によっては、ストア値、ウェブサイトの値、デフォルト値、または何も返されません。ストア値はウェブサイトの値を上書きし、ウェブサイトの値はデフォルト値を上書きします。

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

たとえば、「ウェブサイトを使用する」チェックボックスをオンにすることはできますが、Magentoはconfig.xmlファイルで指定されている場合はストア値を使用します。ちょっと混乱しますが、それがうまくいく方法です。したがって、ストアでWebサイトの値を使用する場合は、その値のストア構成XMLを削除する必要があります。

関連する問題