了解Magento块和块类型

时间:2011-07-09 07:08:06

标签: magento block

我只想了解

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

我从Google获得了很多参考资料并了解了很多相关内容,但我仍然无法理解type="page/html"如何为我的自定义模块构建类型的形成。

请解释

type="A/B"

让我知道这个A和B来自哪里?

4 个答案:

答案 0 :(得分:125)

A是模块的别名。在这种情况下,pageMage_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中定义它们。

答案 1 :(得分:8)

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

页面是etc/config.xml文件中定义的前端名称 html是一个块类名称

更多详情:

在此行type(type="page/html")中定义与您的template(template="example/view.phtml">)相关的块类名称,并且每个块的名称都是唯一的。

首先看文件夹结构

  

应用&GT;局部&GT;命名空间&GT; MODULENAME&GT;等等&GT; config.xml中

我们设置了FrontendName = 'mymodule'

  

应用&GT;局部&GT;命名空间&GT; MODULENAME&GT; 阻止&GT; 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是前端名称

现在来到你的模板

  

template / example / view.phtml page

这里你可以直接调用mydata()函数

<div>
<?php echo $this->mydata(); ?>
</div>

现在您可以在浏览器中获取输出 “Block叫做”

答案 2 :(得分:5)

  

我不知道“B”类型,但“A”指的是config.xml中的模块名称标签   config.xml中的示例:

<A><!-- script --></A>
不,你没错。但"<!-- script -->"可能令人困惑。让我们澄清:正如上面的答案所述,这是一个别名,它由两部分组成,第一部分(“A”)本身就是你在模块的config.xml中为模块的类定义的别名,第二部分是相对于节点值的路径。这些(“A”+大写“B”)将被转换为类名,使用第一部分(“A”节点的值)完全按照您的定义(如果您不想要小时,请注意大写/小写) (第二部分)在每个下划线之后都被大写。因此,从带有块和此配置的A / B示例开始:

<config>
  ...
  <global>
    <blocks>
      <A>Vendor_Module_Block</A>
    </blocks>
  </global>
  ...
</config>

在运行时{M}中,Magento配置将A/B解析为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()

答案 3 :(得分:3)

我不知道“B”类型,但“A”指的是config.xml中的模块名称标签

config.xml文件中的一个示例:

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

nb:我希望我没错。