是否可以在模块文件夹中包含magento模板文件?

是否可以在模块文件夹中包含magento模板文件?,magento,Magento,我正在app/code/local中为magento构建一个模块。我想要这个文件夹里的所有东西。然而,在阅读教程时,似乎我的模块目录中不能有布局xml文件和模板phtml文件,它们必须在app/design/…中 我这样想是对的,还是可以在模块目录中包含我的设计元素?我想把所有东西都放在一个地方。这是可能的,但需要您创建指向正确路径的符号链接 假设您的模板位于app/code/local/Mymodule/design/frontend/Mymodule/default中,则您可以使用以下内容创

我正在app/code/local中为magento构建一个模块。我想要这个文件夹里的所有东西。然而,在阅读教程时,似乎我的模块目录中不能有布局xml文件和模板phtml文件,它们必须在app/design/…中


我这样想是对的,还是可以在模块目录中包含我的设计元素?我想把所有东西都放在一个地方。

这是可能的,但需要您创建指向正确路径的符号链接

假设您的模板位于
app/code/local/Mymodule/design/frontend/Mymodule/default
中,则您可以使用以下内容创建符号链接

ln-s/var/www/web/app/code/local/Mymodule/design/frontend/Mymodule/var/www/web/app/design/frontend/Mymodule

不幸的是,默认情况下,Magento不允许您使用符号链接文件夹中的模板文件。但是,您可以使用CMS中的选项启用此功能

进入CMS并选择系统>配置,然后从侧菜单中选择高级>开发

在“模板设置”下,为“允许符号链接”选择“是”

如果无法访问CMS,请在数据库核心设置中查找此值。否则 您需要临时修改一个Mage核心文件
app/code/core/Mage/core/Block/Template.php

将第240行编辑为:

// if (strpos($includeFilePath, realpath($this->_viewDir)) === 0 || $this->_getAllowSymlinks()) {

if(strpos($includeFilePath,'..') === false) {

这将允许您访问CMS并按照上述说明更新允许符号链接设置。然后,您可以撤消更改的文件。

您的布局和模板文件必须按照Mage标准结构驻留在app/design文件夹中。建议不要这样做,请使用Magento提供的MVC体系结构。符号链接并不适用于所有操作系统,如果您需要移动服务器,您需要记住重新添加它们,并且您无法打包模块,以便将其很好地安装到其他magento安装中。将模板文件放在“设计模板”文件夹中,布局文件放在“布局”文件夹中,代码放在“代码”文件夹中。你找不到任何模块可以做到这一点,最好坚持Magento的最佳实践。我完全同意,我根本不建议这样做,我只是在解释这是可能的,特别是如果你开发模块并使用modgit或modman作为部署手段的话。