1) Каждый модуль может выбрать определение файлов макета, которые находятся в папке / interface / theme / layouts /. Вы можете сделать это, указав макеты в файле config.xml вашего модуля следующим образом:
<frontend>
<layout>
<updates>
<jason_page>
<file>jasonpage.xml</file>
</jason_page>
</updates>
</layout>
</frontend>
2) Да.
a) Интерфейс Magento построен с использованием спуска. Шаблоны и макеты сначала берутся из выбранного вами интерфейса и темы, и, если их там нет, будут взяты из базы. Это позволяет вам определять только те вещи, которые меняются от базовых при создании новых.
b) Если вы создаете новый модуль с блоками, вы указываете classpath для этих блоков в вашем config.xml:
<global>
<blocks>
<jason_page>
<class>Jason_Page_Block</class>
</jason_page>
</blocks>
</global>
Это определит тег jason_page
для ссылки на ваши блоки. Затем, при определении макета, вы будете ссылаться на ваши блоки как:
<block type='jason_page/blockname' as='blockname' name='blockname' />
И ваши блоки будут называться: Jason_Page_Block_Blockname
in /app/code/local/Jason/Page/Block/Blockname.php
в) Каждый раз, когда вы используете тег <reference>
и добавляете некоторые дочерние блоки, они добавляются в большое дерево, как вы говорите. Убедитесь, что вы используете разные теги name
/ as
для блоков, и все будет в порядке. Если имя совпадает, вы, вероятно, вызовете ошибки.
d) local.xml (в приложении / etc) определяет некоторые параметры конфигурации вашего сайта, такие как информация о подключении к базе данных и ключи шифрования. это не имеет отношения к макетам.
d часть 2) Поскольку вы определяете файлы макета, включая их имена, вы сами не должны вызывать коллизии. Выбор имени модуля, более уникального, чем Пейдж, далеко зашел бы здесь. Если у вас есть модуль с тем же именем, что и у модуля по умолчанию (например, Page), добавьте префикс файла к пространству имен при объявлении его в файле config.xml.
Надеюсь, это поможет!
Спасибо,
Джо