Понимание блока и типа блока Magento
Я просто хочу понять значение
<block type="page/html" name="root" output="toHtml" template="example/view.phtml">
У меня появилось много ссылок от Google и я понял много чего, но я все еще не понимаю, как формировать тип для моего настраиваемого модуля type="page/html"
.
Пожалуйста, объясните
type="A/B"
Сообщите мне, откуда взялись эти A и B?
Ответы
Ответ 1
A
- это псевдоним модуля. В этом случае page
является коротким для Mage_Page_Block
(он определен в app/code/core/Mage/Page/etc/config.xml
, если вы хотите видеть).
B
- это имя класса относительно псевдонима, начальные буквы каждого слова капитализируются. В этом случае html
становится html
и добавляется к разрешенному псевдониму, поэтому он Mage_Page_Block_Html
. Вероятно, это находится в файле app/code/core/Mage/Page/Block/Html.php
, потому что имена классов переводятся непосредственно в местоположения в Magento.
Если вы используете псевдоним модели вместо псевдонима блока, тогда page
будет Mage_Page_Model
вместо этого. То же самое происходит и для моделей ресурсов и помощников. Ваш собственный модуль должен будет определить в нем config, если у него есть блоки, модели и помощники.
Ответ 2
Для получения дополнительной информации о типах блоков magento следуют некоторые встроенные типы блоков, которые широко используются в макете.
-
core/template
: этот блок отображает шаблон, определенный его атрибутом > template
. Большинство блоков, определенных в макете, имеют тип или подтип < tbsp; core/template
.
-
page/html
: Это подтип core/template
и определяет корневой блок. Все остальные блоки являются дочерними блоками этого блока.
-
page/html_head
: определяет раздел заголовка HTML на странице, содержащий элементы для включения JavaScript, CSS и т.д.
-
page/html_header
: определяет заголовочную часть страницы, содержащую логотип сайта, верхние ссылки и т.д.
-
page/template_links
: этот блок используется для создания списка ссылок. Ссылки, видимые в нижнем колонтитуле и области заголовка, используют этот тип блока.
-
core/text_list
: Некоторые блоки, такие как content
, left
, right
и т.д. имеют тип core/text_list
. Когда эти блоки визуализируются, все их дочерние блоки визуализируются автоматически без необходимости вызова метода getChildHtml()
 ..
-
page/html_wrapper
: этот блок используется для создания блока-оболочки, который отображает дочерние блоки внутри HTML-тега, установленного действием setHtmlTagName
. Тег по умолчанию: <div>
если ни один элемент не установлен.
-
page/html_breadcrumbs
: Этот блок определяет сухари на странице.
-
page/html_footer
: Определяет область нижнего колонтитула страницы, которая содержит ссылки нижнего колонтитула, сообщения об авторских правах и т.д.
-
core/messages
: Этот блок отображает сообщения об ошибках/успехах/уведомлениях.
-
page/switch
: этот блок может использоваться для переключателя языка или магазина.
Это список только используемых типов блоков. Существует много других типов блоков, которые используются в расширенных реализациях тем.
Ответ 3
<block type="page/html" name="root" output="toHtml" template="example/view.phtml">
- это имя FrontendName, определенное в файле etc/config.xml
html - это имя класса блока
подробнее:
в этой строке type(type="page/html")
определить имя класса блока, связанное с вашим template(template="example/view.phtml">)
, и имя является уникальным для каждого блока.
сначала увидеть структуру папок
Приложение > локальный > Пространство имен > имя_модуль > и т.д. > config.xml
положим FrontendName = 'mymodule'
Приложение > локальные > имен > имя_модуля > Блок > hello.php
в hello.php вы создали функцию
class namespace_modulename_Block_Data extends Mage_Core_Block_Template
{
public function mydata()
{
$data = "Block is called";
return $data;
}
}
и теперь перейдите на страницу xml макета:
<block type="mymodule/data" name="xyz" template="example/view.phtml">
здесь mydata - это имя интерфейса
и теперь приходят к вашему шаблону
шаблон/пример/view.phtml страница
здесь вы можете напрямую вызвать функцию mydata()
как
<div>
<?php echo $this->mydata(); ?>
</div>
теперь вы можете получить свой вывод в браузере
"Блок называется"
Ответ 4
Я не знаю о типе "B", но "A" ссылается на тег имени модуля в файле config.xml пример в файле config.xml:
<A><!-- script --></A>
Нет, ты не ошибаешься. Но "<!-- script -->"
может ввести в заблуждение. Проясните: как было сказано выше, это псевдоним, состоящий из двух частей: первая часть ( "А" ) - это псевдоним, который вы определяете для своих классов модулей в вашем модуле config.xml
, второй - путь относительно значения node. Они вместе ( "A" + капитализированный "B" ) будут переведены на имя класса, используя первую часть (значение "A" node) точно так же, как вы ее определяете (смотрите верхний/нижний регистр, если вы этого не сделаете желать часов страданий), а вторая часть капитализируется после каждого подчеркивания. Итак, начните с примера A/B с помощью блока и этой конфигурации:
<config>
...
<global>
<blocks>
<A>Vendor_Module_Block</A>
</blocks>
</global>
...
</config>
В runtime A/B
будет разрешена конфигурация Magento до Vendor_Module_Block_B
, которая затем включается автозагрузкой по следующему пути: public/app/local/Vendor/Module/Block/B.php
. Чтобы лучше понять, я советую вам взглянуть на Mage_Core_Model_Config::getGroupedClassName()
, Mage_Core_Model_Config::getModelInstance()
и Varien_Autoload::autoload()
.
Ответ 5
Я не знаю типа "B", но "A" ссылается на ваш тег имени модуля в файле config.xml
Пример в файле config.xml:
<A><!-- script --></A>
nb: Надеюсь, я не ошибаюсь.