如何使模块布局显示在所有主题上


13

情况如下:我有几个自制模块,所有模块都经过测试,并使用默认主题工作。然后,我们购买并安装了一个新主题。切换到新主题,模块不显示。经过几次尝试/失败测试后,我发现我需要将相应的布局和模板文件复制到最近安装的主题的相应文件夹中。

所以,我的问题是:在模块设置后,我该怎么做才能使所有模块与任何主题一起工作?


1
如果您将布局文件放在设计/前端/基础/默认/ ...中,则无论主题是什么,它们都会显示出来
Sander Mangel

Answers:


17

将所有内容放在base/default路径中。

例:

app/design/frontend/base/default

skin/frontend/base/default


哎哟! 没想到,您是对的,会尽快到达办公室进行测试。
Yaroslav

+1-那里有太多标为“社区”的模块不遵循这种做法,应该这样做。
pspahn

基本模板是在Magento 1.4中引入的。解决这个问题。在较早版本中,如果不使用默认程序包,则复制模板文件是这样做的方法。
克里斯托夫在Fooman,2013年

5

硬道理是,您不能真正保证它们会成为现实。将文件放入base/default(或default/default如果它们覆盖核心模板,因为您不想使用模块安装来覆盖基本文件,尽管这会迫使您保留企业版的副本),但可以确保它们成为后备文件,但主题文件将始终是最高优先级。

大多数模块随附安装指南,其中包括提及将模板文件复制到用户主题(如果它们具有自定义模板)的内容。那是您所能做的最好的事情。


4

我们使用过几次的一件事是[Fabrizio Branca] [1]的[Custom Fallback] [2]模型。这是用于指定您自己的自定义主题后备层次结构的非常有用的模块。您可以做的一件事是指定:

  1. custom/theme

  2. base/default

  3. default/default

然后,将自己的模板放入default/default主题中的所有模块。如果他们尝试覆盖base/default软件包,将无法正常工作。

您可以在自定义后备层次结构中指定任意数量的软件包/主题。

[1]:http//www.fabrizio-branca.de/ [2]:http//www.fabrizio-branca.de/custom-design-fallbacks-in-magento.html


2

base/default除非其中的模板和布局文件在路径中的某个位置被覆盖,否则它将被加载。但是,如果您的自定义模块是某种类型的小部件,则应确保在需要时将其回显。例如,如果您要进行更改(通过显示在产品页面上)getChildHtml,则这些调用也应以相应的主题为准。但是,如果您的模块模板本身就是页面,而它们不是从中加载的base/default,则某些内容会阻止布局配置,您应该找到什么。


关于的评论非常有趣getChild,我确实有一些这样的呼吁。
Yaroslav

1

没有一个简单的答案。这取决于您拥有的模块。例如,某些模块公司覆盖了核心文件。因此,你应该先检查什么可用的文件app/etc/modulesapp/code/local/Mageapp/code/community/Mage文件夹。如您所知,第一个文件夹是模块初始化文件夹,您可以禁用或启用xml文件相关的模块。最后两个文件夹(如果有)是核心代码覆盖文件夹。

然后,打开该可用etc/modules目录的xml文件之一。您将看到类似以下内容:

<?xml version="1.0"?>
<config>
<modules>
    <Company_Namespace>
        <active>true</active>
        <codePool>local</codePool>
    </Company_Namespace>
</modules>

这里是重要的部分是CompanyNamespace。当您访问app/code/localapp/code/community文件夹时,您会看到一个名为的文件夹Company,其后是名为的子文件夹Namespace

查找时,Namespace您会看到一个名为的子文件夹/etc。该文件夹保存模块相关的配置文件config.xml。该文件具有与模块相关的配置行,您可以参考与该模块相关的文件。

正如我在第一行中所说,这很难管理。


我认为您错过了问题的重点。他在询问布局更新。最佳做法是使用基本/默认/模块路径。
马克·舒斯特2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.