2012-05-13 75 views
2

使用在配置XML商店節點 - 這可能操縱繼承值(即確定的網站或商店值的範圍對應的複選框)Magento的配置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(未選中);否則,它會在範圍配置(_configRoot)中查找值,並將$ inherit設置爲true(選中)。

範圍配置基於您在「當前配置範圍」下在admin中設置的內容。因此,如果您選擇了商店視圖,則會查找stores/my_store_code下的general/store_information/phone值。根據您的配置,這可能會返回商店值,網站值,默認值或任何內容;商店值覆蓋網站值,網站值覆蓋默認值。

這意味着,在配置中,沒有辦法明確說「從網站繼承」。相反,當您更改「使用網站/默認」複選框的值時,Magento通過添加/刪除數據庫中的值來模擬此操作。當您取消選中該框並輸入自定義值時,Magento會在core_config_data中添加一行。同樣,如果您選擇使用「網站/默認」值,Magento將刪除該行並查看範圍配置。

例如,您可以選中「使用網站」,但如果在config.xml文件中指定了它,則Magento將使用該存儲值。有點混亂,但這就是它的工作原理。因此,如果您希望商店使用網站價值,則需要爲該值移除商店配置xml。