Magento在运行时/编程方式设置模板

时间:2011-11-15 10:18:49

标签: magento

我的网站上有静态CMS页面,例如Privay Policy,Mony Back Gurantee等。我已将这些链接放在网页的页脚,这些页面将以标准布局打开,包括页眉,页脚和侧边栏。

我想将这些链接作为图标放在我的产品页面上,但我不想在新窗口中打开它们。我更喜欢fancybox / thickbox,但我只希望显示页面内容而不显示页眉,页脚,侧边栏等。简而言之,我想从仅在产品页面上的链接为这些CMS页面设置空模板。

任何人都可以告诉我,实现这一目标的最佳途径是什么?

2 个答案:

答案 0 :(得分:1)

您可以使用后端“编辑CMS”页面上的“设计”标签来“覆盖”要使用的模板,您可以从下拉列表中选择“布局”以仅应用于该页面。添加新布局有两种方法,一种是构建自己的模块,为模块的布局xml定义一个类似的东西

<new_layout translate="label" module="page">
    <label>My New Layout</label>
    <block type="page/html" name="root" output="toHtml" template="page/new-layout.phtml">
</new_layout>

另一个选项只是将它添加到模板布局文件的page.xml中(然后是你想在模板文件夹中使用的new-layout.phtml)这可能是一个过度杀戮,只需编辑一个块来自页面到页面,但它是“最简单”的方式。

所有这些代码都是未经测试并从内存中编写的,但应该非常接近您的需要。

艾伦

答案 1 :(得分:0)

这仅适用于cms页面

转到mage / page / helper / layout.php 修改: -

public function applyHandle($pageLayout){     

    $pageLayout = $this->_getConfig()->getPageLayout($pageLayout);

    if(isset('emptylayout'))    {   
            $pageLayout->setCode('empty');
            $pageLayout->setTemplate('page/empty.phtml'); // this will work
            $pageLayout->setLayoutHandle('empty');

        }
            .
            .
            .

   }

// jquery code

 jQuery('.f-left li a').click(function(e){
            e.preventDefault();                         

            var url=jQuery(this).attr('href')+'?emptylayout'; 

            var data= '<iframe width="100%" height="550" frameborder="0" src="'+url+'"></iframe>';
            jQuery('#mask').html(data);
            jQuery.fancybox({
                    'href': '#mask',
                    'afterClose': function() {
                                        jQuery('#mask').html('');

                                        },
                  });

 });