Как Magento использует элементы тега module_name в файле конфигурации модуля - PullRequest
4 голосов
/ 06 марта 2011

Я нашел здесь , что Magento использует эти теги в качестве пользовательских переменных конфигурации, но я до сих пор не могу понять, где они используются и как. Например, модуль Wishlist имеет тег xml wishlist (то же имя, что и у модуля) в файле config.xml, в котором он определяет:

<item>
    <product_attributes>
        <visibility/>
        <url_path/>
        <url_key/>
    </product_attributes>
</item>

Где этот модуль использует эти конфигурации? Кроме того, если мне нужно создать способ оплаты, я должен добавить в свой пользовательский модуль config.xml тег для sales , а затем для quote и так далее ... Я также нашел другие связанные вопросы, но большинство ответов было то, что эти теги могут быть любыми, но мне нужно знать, как они используются системой. Заранее спасибо

1 Ответ

3 голосов
/ 06 марта 2011

В этом случае ответственным за файл является app/code/core/Mage/Wishlist/Model/Config.php, где полностью состоит из этого:

class Mage_Wishlist_Model_Config
{
    const XML_PATH_PRODUCT_ATTRIBUTES = 'global/wishlist/item/product_attributes';

    /**
     * Get product attributes that need in wishlist
     *
     */
    public function getProductAttributes()
    {
        $attrsForCatalog  = Mage::getSingleton('catalog/config')->getProductAttributes();
        $attrsForWishlist = Mage::getConfig()->getNode(self::XML_PATH_PRODUCT_ATTRIBUTES)->asArray();

        return array_merge($attrsForCatalog, array_keys($attrsForWishlist));
    }
}

Поэтому, когда вам нужно прочитать конфигурацию, просто используйте Mage::getConfig()->getNode() и укажите путь к интересующему вас узлу. В этом примере путь global/wishlist/item/product_attributes, который вы уже знаете.

Каждый модуль будет читать свою конфигурацию по мере необходимости, и формального определения не существует. Эта гибкость позволяет любому модулю вносить вклад в настройки любого другого модуля.

...