magento的block代码有很多中方式,

1

在magento后台的xml update位置可以写入xml代码,配置block的结构

2

在layout文件中写xml代码,这是一种推荐的方式,这样比较容易查找代码,易于维护

3

在模块的controllers文件里写,譬如代码:

$this->loadLayout();
            $this->_setActiveMenu('blog/posts');

            $this->getLayout()->getBlock('head')->setCanLoadExtJs(true);

            $this->_addContent($this->getLayout()->createBlock('blog/manage_blog_edit'))
                ->_addLeft($this->getLayout()->createBlock('blog/manage_blog_edit_tabs'));

            $this->getLayout()->getBlock('head')->setCanLoadTinyMce(true);

代码的作用和在xml文件里面写得效果是一样的

4

下面是最简洁,最方面的写法,但是不易于维护,因为这种方式写得代码,当开启路径提示的时候是不显示的,还会给新手带来迷惑,我刚学magento的时候就相当的迷惑,就是找不到代码在那里,找了好久才找到,原来是这个实现的!

代码例子如下:

<?php echo $this->getLayout()->createBlock('catalog/product_list')->setTemplate('catalog/product/list.phtml')->toHtml() ?>

作用就和xml中配置效果一样,在初始化,加载完xml文件,他们的最终代码都是一样的

如果加载static block,可以使用

<?php    echo $this->getLayout()->createBlock('cms/block')->setBlockId('block_identifier')->toHtml()    ?>

效果和

<block type="cms/block" name="block_identifier">
    <action method="setBlockId"><block_id>block_identifier</block_id></action>
</block>
效果都是一样的
对于以上的各种方法不难理解,本来是一步链接数据库调取数据的过程,magento有很多步骤,才能拿到想要的数据,在有按部就班的执行方式外,快捷方式也是存在的,好处是让程序员在使用的时候更加的灵活,然而,灵活度高带来的就是复杂性,如果都是自己做的东西,还行,如果让一个新人,交接你的事情,那么,2-3天,这个程序员就了解你的代码吧,呵呵,magento,像一个大卡车,重量级的东西,各方面的成本都高!