`

Megento Block 解析

阅读更多
{{block type="tag/popular" template="tag/popular.phtml"}}


blockDirective(): /magento/app/code/core/Mage/Core/Model/Email/Template/Filter.php at line 191


/**
     * Retrieve Block html directive
     *
     * @param array $construction
     * @return string
     */
    public function blockDirective($construction)
    {
        $skipParams = array('type', 'id', 'output');
        $blockParameters = $this->_getIncludeParameters($construction[2]);
        $layout = Mage::app()->getLayout();

        if (isset($blockParameters['type'])) {
            $type = $blockParameters['type'];
            $block = $layout->createBlock($type, null, $blockParameters);
        } elseif (isset($blockParameters['id'])) {
            $block = $layout->createBlock('cms/block');
            if ($block) {
                $block->setBlockId($blockParameters['id']);
            }
        }

        if ($block) {
            $block->setBlockParams($blockParameters);
            foreach ($blockParameters as $k => $v) {
                if (in_array($k, $skipParams)) {
                    continue;
                }
                $block->setDataUsingMethod($k, $v);
            }
        }

        if (!$block) {
            return '';
        }
        if (isset($blockParameters['output'])) {
            $method = $blockParameters['output'];
        }
        if (!isset($method) || !is_string($method) || !is_callable(array($block, $method))) {
            $method = 'toHtml';
        }
        return $block->$method();
    }


blockDirective 方法会创建好对应的 block对象,并且调用对应的 toHtml 方法。
0
0
分享到:
评论

相关推荐

    magento解析文档

    Magento 模块的开发涉及到很多方面,包括控制器(controllers)用于处理用户请求,模型(models)处理数据操作,Block(blocks)用于生成页面内容,Helper(helpers)提供辅助功能,以及视图(templates)定义页面...

    Magento在代码中调用CMS静态块 (Static Block)

    本文将深入探讨如何在Magento的代码中调用CMS静态块,并解析其工作原理。 ### Magento CMS静态块简介 CMS静态块在Magento中通常用于展示重复使用的静态内容,如网站底部的友情链接、页眉页脚信息、公司简介等。...

    Magento系统请求响应流程图

    Magento 系统请求响应流程图解析 Magento 是一个强大的 PHP 开源框架,作为一名 IT 行业大师,我将详细地解析 Magento 系统请求响应流程图,并对每个步骤进行详细的分析。 步骤 1:用户向浏览器发出请求 在整个...

    深入学习Magento必读

    - **Block(块)**:块是视图层的一部分,它充当了模型和视图之间的中间层,处理复杂的逻辑和数据处理,可以看作是可重用的视图组件。块可以包含其他块,形成层次结构,使得布局更灵活。 - **Layout(布局)**:布局...

    Magento-中文开发教程(技术重点2)

    当用户访问 Magento 网站时,URL 会被解析并映射到相应的控制器。例如,`index.php/index/index` 将映射到 `IndexController` 类中的 `indexAction` 方法。 - **理解 Magento 的路由机制** Magento 使用 URL 重写...

    深入理解magento

    本教程旨在深入解析Magento的模块开发,帮助开发者更好地理解和掌握其核心概念和技术。 一、请求分发与控制器 在Magento中,请求分发是系统处理HTTP请求的核心过程。当用户访问一个URL时,Magento的前端控制器...

    Magento2开发者指南

    **渲染流程**:Magento 2的前端渲染流程涉及多个步骤,包括布局解析、块生成、模板渲染等。 **视图元素**:视图元素是用于构建用户界面的基本构建块,包括块、布局、模板等。 **UI组件**:UI组件是Magento 2中用于...

    Magento 自定义后台menu Insert dynamical menu in Magento’s Admin

    本篇文章将详细解析如何在Magento的Admin中实现自定义动态菜单。 首先,我们需要理解Magento的菜单结构。Magento的后台菜单主要由` Mage_Adminhtml_Block_Menu`类控制,它通过遍历系统配置中的`adminhtml/menu`节点...

    magento创建自定义页面 (Bestseller实例) Bestseller products in Magento

    8. **清理缓存**:完成上述步骤后,别忘了清理Magento的布局和Block缓存,以便系统能识别新的改动。 通过以上步骤,你将能够在Magento中成功创建一个显示Bestseller产品的自定义页面。这个过程涉及到了Magento的...

    magento certified developer 认证 题库

    ### Magento Certified Developer 认证题库解析 #### 题目一:加载产品属性的条件 **题目描述**:为了使一个属性能够在目录/产品对象上加载,以下哪两个条件必须满足?(选择两项) A. eav_attribute表必须包含一...

    No Frills Magento Layout文档.zip

    《No Frills Magento Layout》是一份专为Magento 2初学者和进阶开发者设计的文档,旨在深入浅出地解析Magento 2的布局系统。在Magento 2中,布局是控制页面元素如何呈现的关键机制,它涉及到Block、Template等多个...

    Magento 1.3 PHP Developer's Guide

    ### Magento 1.3 PHP Developer's Guide:关键技术知识点解析 #### 一、Magento 1.3简介 **Magento 1.3** 是一款基于PHP的开源电子商务平台,它提供了丰富的功能来帮助开发者构建高质量的在线商店。Magento 1.3在...

    Magento Category Filter Url静态化插件

    4. **模块配置**:在`app`文件夹内,插件可能有其自定义的Model、Controller、Block和Helper类,以及配置文件(如etc/config.xml),用于定义模块的行为和依赖。 5. **数据库更新**:安装插件时,可能需要修改...

    magento系统设计模块

    Block是Magento中的基本构建单元,它负责从数据库中获取数据并将其传递给视图进行渲染。每个Block都有一个对应的.phtml模板文件,用于定义具体的呈现逻辑。Block还可以包含其他Block作为子元素,形成树状结构。这种...

    magento运行太慢

    2. **使用Block caching**:利用Magento的Block缓存机制,减少重复渲染。 **原因四:PHP指令重写** Magento的重写机制使得每个对象实例化时,都需要检查是否有需要重写的类,这会增加额外的计算开销。 **解决方案...

    Magento模板制作教程

    1. **Block重写**:在`config.xml`中定义Block类的重写,以便在模板中使用自定义的Block逻辑。 2. **Helper重写**:类似地,可以创建新的Helper类并指定为原有Helper的替代。 3. **Template重写**:通过`local.xml`...

    magento一些总结

    本文将针对标题和描述中提到的"Magento一些总结"进行详细的解析,包括如何在Magento中执行一些基本操作,例如添加模块到侧边栏,调用静态块,以及理解XML布局更新在Magento中的作用。 1. **增加模块到Magento侧边栏...

Global site tag (gtag.js) - Google Analytics