Основные вопросы, связанные с макетом Magento? - PullRequest
3 голосов
/ 22 мая 2010

Вот что я думаю о Magento (пожалуйста, поправьте меня, если я ошибаюсь)

1) Каждый модуль имеет свой собственный файл layout.xml, который хранится в папке / interface / theme / layouts /. 2) Magento загружает все эти макеты для текущей темы и создает большой XML-файл.

Теперь, в чем я запутался.

a) Если magento загружает / default / default / (интерфейс и тема), то почему все шаблоны и макеты находятся внутри base / default / ??

б) что если я создам имя моего модуля «page» внутри своего пространства имен «Jason», т.е. Jason_Page, что теперь будет с блоками в файлах макета с именами

в) Поскольку все макеты загружены и объединены в один большой XML-файл, что произойдет со всеми этими ссылочными блоками, которые имеют одинаковый атрибут name и находятся внутри тега дескриптора «Default»? например

г) для чего предназначен формат Local.xml и как его использовать ?? e) какова связь между именем модуля foo и именем его макета foo.xml? Что будет с layout.xml, если в пространстве имен diff существуют два модуля с одинаковыми именами?

Заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 22 мая 2010

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.

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

Спасибо, Джо

0 голосов
/ 24 мая 2010

Я только недавно написал пост о том, как использовать статические блоки. Вот мясо этого:

Шаг первый: создайте статический блок в вашем Magento Admin

Панель управления Magento—> Статические блоки—> Добавить новый блок

1) Назовите свой статический блок, в этом случае пользовательские ссылки в нижнем колонтитуле

2) Пометьте идентификатор (это ссылка, которую вы будете использовать для последующего вызова блока), в данном случае - custom-footer-links

3) Выберите, какой вид магазина вы хотите отобразить в

4) Установить статус включенным

2) Теперь самое интересное! Добавьте свои навигационные ссылки в блок. Используйте их, чтобы они соответствовали цвету и теме ваших сайтов.

Шаг второй: вставка кода для вызова статического блока

Эта часть потребует, чтобы вы зашли по FTP на ваш сайт Magento и изменили footer.phtml. app—> design—> frontend —-> default -> (ваш шаблон) -> template—> page—> footer.phtml

Найдите, где в нижнем колонтитуле вы хотите, чтобы ваши навигационные ссылки отображались и вставлялись:

getLayout () -> createBlock ( «К / блок») -> setBlockId ( «таможенно-футер-ссылка») -> toHtml (); ?>

Теперь в большинстве случаев статический блок должен отображаться нормально, но в некоторых случаях вам придется выполнить некоторые дополнительные шаги для отображения блока.

1) Вместо вставки:

getLayout () -> createBlock ( «К / блок») -> setBlockId ( «таможенно-футер-ссылка») -> toHtml (); ?>

Использование:

заказ футер-ссылка

2) Изменить catalog.xml app-> дизайн-> frontend-> default-> f002-> layout-> catalog.xml

Добавить под

заказ футер-ссылка

0 голосов
/ 22 мая 2010

Просто чтобы добавить к ответу Джо, у вас может быть файл interface / theme / layout / local.xml, и он будет загружен после всех других XML-файлов макета ядра и модуля.

Используйте этот файл для настройки локальной темы.

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