Это упрощенная версия того, что происходит, но будет
надеюсь, будет достаточно, чтобы вы пошли.
Специальные объекты
Есть три типа Объектов, которые Magento считает «особенными». Это модели, блоки и помощники. Вместо того чтобы использовать имена классов для этих объектов, Magento использует URI-подобные строки, называемые псевдонимами классов . Так что это
page/html
соответствует классу блоков
Mage_Page_Block_Html
Класс здесь относится к классам PHP, а не к классам CSS.
Отображение страниц в Magento
Объект Layout отвечает за создание всего HTML-кода для страницы Magento.
Объект Layout - это набор вложенных блочных объектов.
Большинство блочных объектов являются блочными шаблонами, то есть класс Block наследуется от базового блочного шаблона Magento Mage_Core_Block_Template
. Шаблонные блоки - это объекты, отвечающие за рендеринг файла шаблона phtml.
Итак, когда вы указываете «тип» в файлах XML Layout, вы говорите Magento.
Я хочу добавить блочный объект с классом foo / bar, используя шаблон baz.phtml
В коде это
<!-- "name" and "as" are used to identify the block in the layout, so that
PHP code can get a reference to the object. -->
<block type="foo/bar" name="myname" as="myname" template="path/to/baz.phtml" />
Если все, что вам нужно сделать, это визуализировать файл шаблона, вы можете использовать
type="core/template"
Однако, используя другое значение, например
type="page/html"
ваш шаблонный файл phtml получает доступ ко всем методам в
Mage_Page_Block_Html
Что означает, что вы могли бы сделать что-то вроде
File: template.phtml
<a href="<?php echo $this->getBaseUrl();?>"></a>
Класс core/template
не имеет метода getBaseUrl
, а класс page/html
.
Если вы занимаетесь разработкой собственного модуля (а не просто тематикой), я обычно создаю объект Block в своем собственном модуле, который расширяет один из базовых блоков Magento. Это позволяет мне добавлять свои собственные методы в блок по своему усмотрению. Если вы используете только тематику, page/html
- достойное значение по умолчанию.