Какой тип блока для левой колонки в теме Magento? - PullRequest
5 голосов
/ 26 ноября 2010

Я работаю над пользовательской темой Magento (1.3) и хочу добавить левый столбец.

Я создал шаблон / page / html / left.phtml с html-кодом.

В 2columns-left.phtml я добавил следующее:

<?php echo $this->getChildHtml('left'); ?>

В page.xml я добавил следующее:

<block type="page/html" name="left" as="left" template="page/html/left.phtml" />

Что я не совсем понимаю, так это то, каким должен быть этот тип блока - похоже, он работает, если я делаю page / html, core / template или page / html_header - для чего это нужно и какое правильное значение для этого случая где я просто хочу эффективно включить файл phtml - page / html / left.phtml и т. д.

Спасибо

Ian

Ответы [ 3 ]

15 голосов
/ 26 ноября 2010

Это упрощенная версия того, что происходит, но будет надеюсь, будет достаточно, чтобы вы пошли.

Специальные объекты

Есть три типа Объектов, которые 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 - достойное значение по умолчанию.

0 голосов
/ 06 декабря 2013

Тип блока для левого столбца в magento theme

<block type="core/text_list" name="left" as="left" translate="label">
    <label>Left Column</label>
</block>
0 голосов
/ 26 ноября 2010

Лучшим типом для этого случая является core/text_list, поскольку он объединяет каждый дочерний HTML.

Для тестирования вы можете использовать этот пример в макете XML:

<block type="core/text_list" name="left" as="left">
  <block type="core/text" name="test">
    <action method="setText"><text>Hello World</text></action>
  </block>
</block>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...