【问题标题】:Load Magento module template加载 Magento 模块模板
【发布时间】:2016-01-21 16:19:18
【问题描述】:

对于 Magento 模块,我需要加载模板文件并让它替换整个页面。它是一个 XML 文件(但也可以是任何内容)。 一般来说,当

MYNS_MYMODULE_controllernameController 被触发并调用fooAction() 我需要能够使用我的模板文件中的内容显示一个干净的站点。

请告诉我在哪里放置模板文件以及如何告诉 Magento 将此文件作为根模板加载,而不需要其他任何东西。

编辑,进一步澄清:

对于http://domain.tld/modulename/controller/action/

我必须在哪里放置模板文件以及我应该如何引用它们?

【问题讨论】:

    标签: magento magento-1.9


    【解决方案1】:

    你可以这样做

      $this->loadLayout()->getLayout()->getBlock('root')->setTemplate('page/1column.phtml');
      $this->renderLayout();
    

    或设置自定义响应

     //$file = myfile or html
    
     $this->getResponse()->setBody($file);
     $this->renderLayout();
    

    理想情况下,您的模板应位于 /app/design/frontend/mypackage/mytheme/template/mytemplate.phtml

    【讨论】:

    • 谢谢,会尽快测试。您知道将文件存储在 /code/community/MyNS/MyModule/Template/... 中是否合法?它对最终扩展的打包有影响吗?
    【解决方案2】:

    您应该阅读Magento docAlan Storm Blog。 Alan 还写了一本关于 Magento 布局的书:No Frills Magento Layout

    您的网址:http://domain.tld/modulename/controller/action/

    modulename_controller_action 句柄是通过组合路由名称 (modulename)、动作控制器名称 (controller) 和动作控制器创建的操作方法 (action) 转换为单个字符串。这意味着动作控制器上的每个可能的方法都有一个与之关联的句柄。 在您的布局 xml 中处理此请求:

    <modulename_controller_action>
         ......
    </modulename_controller_action>
    

    希望我的建议对你有用。

    【讨论】:

    • 谢谢您的意见。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2011-09-14
    • 2014-09-14
    • 1970-01-01
    相关资源
    最近更新 更多