如何在Magento中将现有布局加载到我自己的模板中?

时间:2013-06-19 17:56:58

标签: magento templates layout

在Magento中,最好不要创建一个全新的模块,如何将现有模块的布局加载到我自己的模板中?

例如:我想加载“用户帐户信息中心”布局,但我想加载它以便我可以控制它与默认设置分开的方式。

结构如下:

  1. 我创建了一个带有网址“portal”的CMS页面。因此,导航为“http://website.com/portal

  2. CMS页面使用“include()”加载“/root/portal/portal.php”。这是我定义扩展Mage_Page_Block_Html的类的地方。

  3. 然后我添加了一个函数“renderDashboard()”,从现有的仪表板布局加载到仪表板中。

  4. 我已将“/app/base/default/customer/account/dashboard.phtml”复制到“/root/portal/content/dashboard.phtml”以用作模板。在我的“dashboard.phtml”中,我希望“$ this”对象的功能与之前的“dashboard.phtml”完全相同

  5. “/根/门户/ portal.php”

    class Portal_Block extends Mage_Page_Block_Html 
    {
        public function renderDashboard()
        {
            $layout = Mage::getSingleton('core/layout');
    
            //Load existing "customer/account_dashboard" block into my own "dashboard.phtml"
            $block = $layout->createBlock('customer/account_dashboard')->setTemplate('/root/portal/content/dashboard.phtml');
    
            //Need to now add it
            //$block->renderLayout(); 
        }
    }
    

    如果无法做到这一点,我将不得不在我的门户网站中重写整个帐户信息显示板模块......所以,我真的希望它是可能的!

1 个答案:

答案 0 :(得分:0)

第1步:创建重定向

创建重写规则,将portal/指向customer/account/

  1. 转到目录>网址重写管理,点击添加网址重写按钮
  2. 类型更改为custom
  3. ID路径设置为portal
  4. 请求路径设置为portal
  5. 目标路径设置为customer/account/
  6. 重定向设置为No
  7. 保存按钮
  8. 转到yoursite.com/portal直接测试。它应自动加载customer/account/页面。

    现在将旧版customer/account/链接重定向回/portal

    1. 转到目录>网址重写管理,点击添加网址重写按钮
    2. 类型更改为custom
    3. ID路径设置为redirect_to_portal
    4. 请求路径设置为customer/account/
    5. 目标路径设置为portal
    6. 重定向设置为Permanent (301)
    7. 保存按钮
    8. 转到yoursite.com/customer/account/进行测试。它应自动重定向到/portal

      第2步:修改帐户页面模板

      帐户页面由多个模板文件组成。这些文件位置可能略有不同,具体取决于您是否使用自定义模板以及该模板是否覆盖Magento基本模板文件。

      app/design/frontend/default/base/template/customer/account/下查看。

      在这里,您可以找到与帐户页面相关的.phtml个文件。如果您有一个覆盖这些文件的自定义模板,则需要修改模板目录中的文件。示例:app/design/frontend/[TEMPLATE_NAME]/[TEMPLATE_NAME]/template/customer/account/

      dashboard.phtml文件是仪表板页面的主模板文件。

      您还可以查看app/design/frontend/default/base/layout/customer.xml并查找<customer_account_index>标记。在这里,您可以看到哪些.phtml文件以及正在加载到帐户模板中的块。