Php Magento,自定义模块的默认布局
我只想在我的模块的左栏中添加一个块,而不是整个网站 如果我把它放在Php Magento,自定义模块的默认布局,php,magento,magento-layout-xml,Php,Magento,Magento Layout Xml,我只想在我的模块的左栏中添加一个块,而不是整个网站 如果我把它放在标签中,它会显示在整个网站上,但我想做一些类似的事情,这可能吗 我知道我可以在每个layout\u处理程序中放置我的块,比如: <mymodule_controllername_actionname> <reference name="left"> <block type="mymodule/block" name="left_navigation" before="-" t
标签中,它会显示在整个网站上,但我想做一些类似
的事情,这可能吗
我知道我可以在每个layout\u处理程序中放置我的块,比如:
<mymodule_controllername_actionname>
<reference name="left">
<block type="mymodule/block" name="left_navigation" before="-" template="mymodule/left-nav.phtml" />
</reference>
</mymodule_controllername_actionname>
但这不是我想要的,我想这样做:
<mymodule_default>
<reference name="left">
<block type="mymodule/block" name="left_navigation" before="-" template="mymodule/left-nav.phtml" />
</reference>
</mymodule_default>
还是不可取
谢谢您只能为自定义模块设置布局。例如,您想要一个左侧列,您的布局文件应该如下所示
<?xml version="1.0"?>
<layout version="0.1.0">
<modulename_index_index>
<reference name="root">
<action method="setTemplate"><template>page/2columns-left.phtml</template></action>
</reference>
<reference name="left">
<block type="modulename/left" name="modulename_left" template="modulename/left.phtml"/>
</reference>
</modulename_index_index>
</layout>
<config>
...
<frontend>
<layout>
<updates>
<modulename>
<file>modulename.xml</file>
</modulename>
</updates>
</layout>
...
</frontend>
</config>
更新:
根据magento的布局,您可以在模块中添加
。因此,它可以设置该模块中的所有页面(控制器)都可以使用该块。
就这样。如果您有任何疑问,请告诉我。在另一个网站上获得了答案,请复制到此处:
只能在每个控制器中添加布局更新句柄
public function preDispatch()
{
parent::preDispatch();
$this->getLayout()->getUpdate()
->addHandle('mymodule_default');
}
或者在所有
句柄中使用指令
例如:
<mymodule_controllername_actionname>
<update handle="mymodule_default"/>
...
<mymodule_controllername_actionname>
...
有一种更优雅的方法:
在module layout.xml中,您可以创建一个句柄,然后每隔一个句柄更新一次,如下所示:
<lista_default>
<reference name="head">
<action method="setText">
<text>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.4/js/tether.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js"></script>
</text>
</action>
</reference>
</lista_default>
<lista_index_index>
<update handle="lista_default" />
<reference name="content">
</reference>
</lista_index_index>
是的,但这样我必须在每个布局处理程序中写入它,如果我想用其他模块扩展我的模块,并想添加到第一个模块的任何链接,这种方式可能不可能。对不起。我无法理解你。简单点,我不想在每个布局处理程序中都写块,试图找到更好的方法。请检查我的答案。你的意思是像
这样,你的左块将在整个网站上可见,而不仅仅是在你的模块页面/控制器中。这是一个宾果!谢谢你发布这个。