了解Magento块和块类型

56lgkhnf  于 2023-10-19  发布在  其他
关注(0)|答案(5)|浏览(92)

我只想知道

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

我从Google那里得到了很多参考资料,了解了很多关于它的东西,但我仍然无法理解type="page/html"的形成,如何为我的自定义模块形成一个类型。
请解释

type="A/B"

告诉我A和B是从哪里来的

iklwldmw

iklwldmw1#

为了更好地了解magento块类型,以下是一些广泛用于布局的内置块类型。

  1. **core/template**:该块呈现由其template属性定义的模板。布局中定义的大多数块的类型或子类型为core/template
  2. **page/html**:这是core/template的子类型,定义了根块。所有其他块都是此块的子块。
  3. **page/html_head**:定义页面的HTML头部,其中包含JavaScript,CSS等元素。
  4. **page/html_header**:定义页面的标题部分,包含网站徽标,顶部链接等。
  5. **page/template_links**:此块用于创建链接列表。页脚和页眉区域中可见的链接使用此块类型。
  6. **core/text_list**:一些区块,如contentleftright等。类型为core/text_list。当这些块被呈现时,它们的所有子块都被自动呈现,而不需要调用getChildHtml()方法。
  7. **page/html_wrapper**:此块用于创建一个 Package 器块,该 Package 器块在由操作setHtmlTagName设置的HTML标记内呈现其子块。如果没有设置元素,则默认标记为<div>
  8. **page/html_breadcrumbs**:此块定义页面上的面包屑。
  9. **page/html_footer**:定义页面的页脚区域,其中包含页脚链接,版权信息等。
  10. **core/messages**:此块呈现错误/成功/通知消息。
  11. **page/switch**:此块可用于语言或存储切换器。
    这是仅常用的块类型的列表。还有许多其他块类型用于高级主题实现。
jm81lzqq

jm81lzqq2#

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中定义这些,如果它有块,模型和助手的话。

0h4hbjxa

0h4hbjxa3#

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

page是在etc/config.xml文件中定义的FrontendName,html是块类名
更多详情:
在这一行type(type="page/html")定义块类名称相关的template(template="example/view.phtml">)和名称是唯一的每个块.
第一次看到文件夹结构
app>local>namespace> modules>etc> config.xml
我们设置FrontendName = 'mymodule'
app>local>namespace> modules>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页面:
<block type="mymodule/data" name="xyz" template="example/view.phtml">这里mydata是前端名称
现在来看看你的模板
template/example/view.phtml页面
在这里,您可以直接调用mydata()函数

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

现在你可以在浏览器中得到你的输出“块被调用”

uujelgoq

uujelgoq4#

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

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

不,你没有错。但是"<!-- script -->"可能会让人感到困惑。让我们澄清一下:正如上面的答案所述,这是一个别名,它由两部分组成,第一部分(“A”)本身是您在模块的config.xml中定义的模块类的别名,第二部分是相对于节点值的路径。这两个节点(“A”+大写的“B”)将被转换为一个类名,第一部分(“A”节点的值)将按照您的定义使用(如果您不想忍受数小时的痛苦,请注意upper/upper),第二部分将在每个下划线之后大写。因此,从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()

nxowjjhe

nxowjjhe5#

我不知道“B”类型,但“A”指的是您的模块名称标记在XNU.xml中
下面是一个示例:

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

NB:我希望我没有错。

相关问题