2011-12-27 54 views
0

我创建了一个新模块,我尝试在indexcontroller下的一个动作中加载模板。该模板正确加载,但基本/根模板未加载。 Magento只加载了我在XML中指定的模板文件。我解释了我所遵循的步骤。Magento模板未正确加载

  • 创建一个名为'Sample'的模块。
  • 使用索引操作创建IndexController。
  • 在dir app/design/frontend/default/default/layout下创建local.xml文件
  • 在dir app/design/frontend/default/default/template/sample/sample_page.phtml下创建sample_page.phtml 。

的IndexController:

public function indexAction() { 
    $this->loadLayout(); 
    $this->renderLayout(); 
} 

local.xml中:

<layout version="0.1.0"> 
<default> 
</default> 
<sample_index_index> 
    <reference name="root"> 
     <block type="page/html" name="root" output="toHtml" template="sample/sample_page.phtml"> 
     </block> 
    </reference> 
</sample_index_index> 

任何人可以找我做了什么问题?

回答

2

这里的问题是,您引用了错误的布局块(在您的示例中为“root”)。这样做可以用您指定的页面替换页面的整个块集。
要获取显示的所有块(包括您的),只需参考“root”之外的另一个布局块,例如“content”。

您可能还想修改模块页面的根布局块(如果是这种情况),请在默认句柄中引用根块并设置不同的模板。

下面是一个例子:

<layout version="0.1.0"> 
    <default> 
     <reference name="root"> 
      <action method="setTemplate"> 
       <template>page/1column.phtml</template> 
      </action> 
     </reference> 
    </default> 
    <sample_index_index> 
     <reference name="content"> 
      <block type="page/html" name="the_name_you_like" output="toHtml" template="sample/sample_page.phtml"> 
      </block> 
     </reference> 
    </sample_index_index> 
</layout> 
+0

是文斯它的工作原理,感谢... – 2011-12-27 09:43:08

+0

<引用名=“内容”>和块名称进行区别。 – 2011-12-27 09:43:29

+0

请注意,您可能想要设置另一个tpl作为默认根目录。有3或4种泛型,“page/1column.phtml”,“page/3columns.phtml”.... – 2011-12-27 09:46:15