Понимание блока Magento и типа блока
Я просто хочу понять смысл
<block type="page/html" name="root" output="toHtml" template="example/view.phtml">
я получил много ссылок от Google и понял много вещей об этом, но я все еще не могу понять формирование type="page/html"
Как создать тип для моего пользовательского модуля.
объясните, пожалуйста
type="A/B"
Дайте мне знать, откуда это A и B приходят?
5 ответов:
The
A
в модуле псевдоним. В данном случаеpage
сокращенноMage_Page_Block
(определяется вapp/code/core/Mage/Page/etc/config.xml
Если вы хотите увидеть).The
B
- это имя класса относительно псевдонима, начальные буквы каждого слова заглавными буквами. В данном случаеhtml
становитсяHtml
и добавляется к разрешенному псевдониму, так что этоMage_Page_Block_Html
. Это, вероятно, найдено в файлеapp/code/core/Mage/Page/Block/Html.php
потому что имена классов переводятся непосредственно в места В Magento.вы использовали псевдоним модели вместо псевдонима блока тогда
page
будетMage_Page_Model
вместо. То же самое происходит и с ресурсными моделями и помощниками. Ваш собственный модуль должен будет определить их в it's config если он должен иметь блоки, модели и помощники.
для более глубокого понимания типов блоков magento ниже приведены некоторые встроенные типы блоков, которые широко используются в макете.
core/template
- этот блок отображает шаблон определяется его
<block type="page/html" name="root" output="toHtml" template="example/view.phtml">
страница-это имя интерфейса, определенное в html-это имя класса блока
подробнее:
в строке
type(type="page/html")
определите имя класса блока, связанного с вашимtemplate(template="example/view.phtml">)
и имя является уникальным для каждого блока.сначала смотрите структуру папок
приложение>местных>пространство имен>имя модуля>и т. д.>конфиг.xml
мы
FrontendName = 'mymodule'
приложение>местных>пространство имен>имя модуля>блок>привет.php
в здравствуйте.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-это имя интерфейсаа теперь перейдем к вашему шаблону
шаблон/пример/вид.phtml в разделе
здесь вы можете вызвать непосредственно функцию mydata ()
как
<div> <?php echo $this->mydata(); ?> </div>
теперь вы может получить ваш вывод в браузере "Блок называется"
Я не знаю о типе "B", но" A " относится к тегу имени вашего модуля в конфигурации.XML пример в конфигурации.XML-код:
<A><!-- script --></A>
Нет, ты не ошибаешься. Но это
"<!-- script -->"
может быть запутанным. Давайте уточним: как указано в приведенных выше ответах, это псевдоним, который состоял из двух частей, первая часть ("A") сама является псевдонимом, который вы определяете для классов вашего модуля в вашем модулеconfig.xml
, второй путь относительно значения узла. Они вместе ("а" + заглавная "B") будет переведена на имя класса, используя первую часть (значение узла" A") точно так, как вы его определяете (следите за верхним/нижним регистром, если вы не хотите страдать часами), а вторая часть заглавной после каждого подчеркивания. Итак, начните с примера A/B с блоком и этой конфигурацией:<config> ... <global> <blocks> <A>Vendor_Module_Block</A> </blocks> </global> ... </config>
во время
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()
.