Понимание блока и типа блока 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() &nbsp..
  • 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: Надеюсь, я не ошибаюсь.