Понимание блока Magento и типа блока


Я просто хочу понять смысл

 <block type="page/html" name="root" output="toHtml" template="example/view.phtml">

я получил много ссылок от Google и понял много вещей об этом, но я все еще не могу понять формирование type="page/html" Как создать тип для моего пользовательского модуля.

объясните, пожалуйста

type="A/B"

Дайте мне знать, откуда это A и B приходят?

5 102

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 ниже приведены некоторые встроенные типы блоков, которые широко используются в макете.

  1. 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().

Я не знаю о типе "B", но" A " относится к тегу имени вашего модуля в конфигурации.xml

пример в конфиге.xml-файл:

<A><!-- script --></A>

nb: надеюсь, я не ошибаюсь..