Понимание блока и типа блока Magento
Я просто хочу понять значение
Я получил много ссылок от Google и многое понял об этом, но я все еще не могу понять формирование type="page/html"
как сформировать тип для моего настраиваемого модуля.
Пожалуйста, объясни
type="A/B"
Дайте мне знать, откуда взялись эти A и B?
A
– псевдоним модуля. В этом случае page
короткая для Mage_Page_Block
(она определена в app/code/core/Mage/Page/etc/config.xml
если вы хотите увидеть).
B
– это имя classа относительно псевдонима, начальные буквы каждого слова капитализируются. В этом случае html
становится Html
и добавляется к разрешенному псевдониму, поэтому это Mage_Page_Block_Html
. Вероятно, это можно найти в файле app/code/core/Mage/Page/Block/Html.php
потому что имена classов переводятся непосредственно в местоположения Magento.
Если вы используете псевдоним модели вместо псевдонима блока, тогда вместо page
будет Mage_Page_Model
. То же самое происходит и для моделей ресурсов и помощников. Ваш собственный модуль должен будет определить их в своем конфиге, если у него есть блоки, модели и помощники.
Для получения дополнительной информации о типах блоков magento следуют некоторые встроенные типы блоков, которые широко используются в макете.
-
core/template
: этот блок отображает шаблон, определенный его атрибутомtemplate
. Большинство блоков, определенных в макете, имеют тип или подтипcore/template
. -
page/html
: Это подтипcore/template
и определяет корневой блок. Все остальные блоки являются дочерними блоками этого блока. -
page/html_head
: определяет раздел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
. Тег по умолчанию -
page/html_breadcrumbs
: Этот блок определяет сухари на странице. -
page/html_footer
: Определяет областьpage/html_footer
колонтитула страницы, которая содержит ссылкиpage/html_footer
колонтитула, сообщения об авторских правах и т. д. -
core/messages
: этот блок отображает сообщения об ошибках / успехах / уведомлениях. -
page/switch
: Этот блок может использоваться для переключателя языка или магазина.
Это список только используемых типов блоков. Существует много других типов блоков, которые используются в расширенных реализациях тем.
page является FrontendName, определенным в etc/config.xml
html, является именем classа блока
подробнее:
в этом type(type="page/html")
линии type(type="page/html")
определяют имя classа блока, связанное с вашим template(template="example/view.phtml">)
а имя является уникальным для каждого блока.
сначала увидеть структуру папок
приложение> местный> имена> имя_модуль> и т.д.> config.xml
мы устанавливаем FrontendName = 'mymodule'
app> local> namespace> modulename> Block > hello.php
в hello.php вы создали функцию
class namespace_modulename_Block_Data extends Mage_Core_Block_Template { public function mydata() { $data = "Block is called"; return $data; } }
и теперь перейдите на страницу размещения xml:
здесь mydata – это имя интерфейса
и теперь приходят к шаблону вашего шаблона
шаблон / пример / view.phtml страница
здесь вы можете напрямую вызвать функцию mydata ()
как
mydata(); ?>
теперь вы можете получить свой вывод в браузере «Блок называется»
я не знаю о типах «B», но «A» ссылается на ваш тег имени модуля в файле config.xml в файле config.xml:
Нет, ты не ошибаешься. Но ""
может быть запутанным. Давайте поясним: как было сказано выше, это псевдоним, состоящий из двух частей: первая часть («А») – это псевдоним, который вы определяете для classов вашего модуля в config.xml
вашего модуля, второй – путь относительно значения узла. Они вместе («A» + капитализированный «B») будут переведены на имя classа, используя первую часть (значение узла «A») точно так же, как вы ее определяете (смотрите верхний / нижний регистр, если вы не хотите часов страдания), а вторая часть капитализируется после каждого подчеркивания. Итак, начните с примера A / B с помощью блока и этой конфигурации:
... Vendor_Module_Block ...
Во время выполнения 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()
.