Каковы возможные теги внутри тега "global" в файле config.xml Magento? - PullRequest
4 голосов
/ 13 мая 2010

Может ли какой-нибудь профессиональный опытный разработчик Magento сказать мне, как выполнить следующие действия в Magento?

Я хочу знать, какие возможные теги могут помещаться в тег "global" страницы "config.xml" в папке каждого модуля etc?

Я пытался найти этот ответ во многих местах в Интернете, но тщетно.

Пожалуйста, предоставьте полную информацию вместе с ней для версии Magento> = 1.4.0.0 , потому что я хочу, чтобы по крайней мере пользователи, заходящие на этот сайт, находили его достаточно полезным, вместо того, чтобы чесать голову.

Я действительно хочу подробное объяснение, потому что каждый такой новичок, как я, полностью запутывается в этой точке. Из того, что я знаю до сих пор, это то, что на этой странице вы можете устанавливать маршрутизаторы, переписывать, задания cron, html-администрирование, html-интерфейс и многое другое. Но без каких-либо четких концепций никто не может пойти дальше, полагая, что его код на 100% верен в отношении W.r.t. архитектура MVC Magento.

Поэтому, пожалуйста, я хочу, чтобы эта сильная фундаментальная концепция, подчеркнутая здесь, с подробным объяснением о ней, чтобы никто больше никогда не попадал в эту ловушку.

Я могу понять одну вещь - для многих кажется, что полная ссылка на действительные глобальные теги Magento была бы неправильной, но я хотел бы уточнить, что должен быть набор из этих действительного ограниченного числа тегов, которое подпадает под глобальный тег.

Например, я не могу просто написать тег «stack», «overflow» или «joseph», и я совершенно уверен, что он не будет принят Magento как допустимый. Именно потому, что допустимые теги (такие как «модели», «ресурсы», «ресурсы» и т. Д.) Определены где-то в конфигурации Magento, они работают.

Это моя точка зрения, которую я хочу подчеркнуть.

Большое спасибо тем, кто может ответить только при ясном понимании общей концепции.

Ответы [ 4 ]

7 голосов
/ 13 мая 2010

Быстрый ответ заключается в том, что нет полного списка этих тегов. Magento не использует строгую грамматику для файлов XML, потому что они могут быть расширены без каких-либо проблем. Глядя на кодовую базу 1.4, я выполнил следующую команду из терминала:

cd /path/to/magento
grep -r global/ . 2>/dev/null | grep -v pearlib | grep php | sort

И вернул около 75 строк, где глобальный путь конфигурации вызывается специально. Некоторые из них просты:

global/page/layouts
global/pdf/totals
global/template/email
global/payment/cc/types

А другие гораздо более неясны:

global/catalog/product/type/configurable/allow_product_types
global/helpers/core/encryption_model
global/widget/related_cache_types

Кроме того, есть несколько, которые вызываются динамически, например, упомянутые вами маршрутизаторы, перезаписи и т. Д .:

global/models/'.$model.'/resourceMode
global/'.$groupType.'s

На самом деле, я даже нашел 4 ссылки в своем собственном коде расширения, которые добавили в глобальное пространство. Зная все это, полный список действительных глобальных тегов будет неправильным и, вероятно, изменится даже при незначительных обновлениях. К вашему последнему пункту, вы не можете идти вперед с полной уверенностью, что вы будете в соответствии с моделью конфигурации Magento. Делайте все возможное, чтобы использовать объекты, предоставляемые библиотекой, используйте образцы из остальной части приложения, когда это возможно, и смело продвигайтесь вперед, когда не будет помощи :)

Надеюсь, это поможет!

Спасибо, Джо

4 голосов
/ 25 ноября 2010

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

<code><pre><?php

require 'app/Mage.php';
Mage::app();

$global = Mage::getConfig()->getNode('global');

foreach ($global->children() as $node) {
    echo $node->getName(), PHP_EOL;
}

?>
4 голосов
/ 19 мая 2010

На самом деле, при разработке Magento важно помнить, что все файлы config.xml объединены , что дает один уникальный XML файл, содержащий все узлы , взятый во всех файлах config.xml всех модулей .

Дело в том, что, как сказал Джозеф, Мадженто не использует строгой грамматики. Можно сказать, что грамматика создана самими разработчиками .

Например, если в вашем модуле ваш config.xml определяет:

<config>
   <mynode>
     <myconfigvar>Foo</myconfigvar>
   <mynode>
</config>

Любой другой модуль, который определяет тот же узел (<mynode></mynode>), может добавить подузел и к этому узлу, и ваш модуль также сможет получить доступ к этому новому узлу.

Чтобы лучше понять, для чего используются узлы, нужно прочитать код Core. Хороший способ начать понимать, как magento анализирует config.xml, читает: app/code/Core/Mage/Core/Config.php.

Понимание того, как работает функция Mage::getStoreConfig(), тоже хороший способ.

Хьюг.

2 голосов
/ 18 мая 2010

Как сказал Иосиф, нет определенного списка возможностей.Я предлагаю вам просто начать просматривать файлы config.xml в Magento.Просто откройте / app / code / core / Mage /, а затем в каждой папке есть модуль ядра.Так, продажи, например.Откройте Sales / etc / config.xml и посмотрите, что они сделали.

Вы можете узнать тонну, просто взглянув на то, что Magento уже построило.Когда я перестал пытаться задавать вопросы всем и начал изучать и изучать код, который уже есть, тогда я действительно начал понимать, как все работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...