【问题标题】:How to add a custom CSS file in Magento's Admin Area如何在 Magento 管理区添加自定义 CSS 文件
【发布时间】:2013-06-25 15:32:45
【问题描述】:

我想在 Magento 的管理区域中加载自定义 CSS 文件。我的方法是完全按照我在前端的方式来做:

<action method="addCss">
    <file>namespace/module/mycss.css</file>
</action>

这会生成以下&lt;link&gt; 标签:

<link rel="stylesheet" type="text/css" 
    href="http://host/skin/adminhtml/base/default/namespace/module/mycss.css" 
    media="all">

这告诉我 Magento 正在 /skin/adminhtml/base/default/namespace/module 中寻找我的 CSS。所以如果我把它放在那里,我可能会没事,一切都会工作。

但这似乎不是正确的方法,因为/skin/adminhtml/base 甚至不存在。

当我查看像 Mage_Widget 这样的核心模块时,整个事情对我来说似乎更加奇怪。它以完全相同的方式添加 CSS 文件:

<action method="addCss"><name>lib/prototype/windows/themes/magento.css</name></action>

但该文件存储在 /skin/adminhtml/default/default/lib/...

我做错了什么?

【问题讨论】:

  • 尝试将&lt;file&gt; 更改为&lt;name&gt;,就像在Mage_Widget 核心模块中所做的那样。
  • @Axel - 节点名称在此位置无关紧要。

标签: magento


【解决方案1】:

base/default 是该文件的适当位置。无论设计区域如何,它都是最终的后备方案。考虑到核心团队的先例,在 default/default 下提供主题资产并不是不合适的。如果出现在这两个主题中的后者中,则会在前者之前为该路径生成链接。

顺便说一句,如果您将 app/design/adminhtml/default 重命名为 app/design/adminhtml/base,则管理主题可以正常工作。

【讨论】:

    【解决方案2】:
    1. 转到 skin/adminhtml/default/default 并将您的文件放在 module/custom.css 下
    2. 转到 app/design/adminhtml/default/default/layout 并使用以下代码创建文件 module.xml:
    <?xml version="1.0"?>
    <layout>
        <default>
            <reference name="head">
                <action method="addCss">
                    <name>module/custom.css</name>
                </action>
            </reference>
        </default>
    </layout>
    
    1. 现在将您的 xml 文件连接到 Namespace/Module/etc/config.xml 中的模块:
    <config>
    ...
    <adminhtml>
        <layout>
            <updates>
                <namespace_module>
                    <file>module.xml</file>
                </namespace_module>
            </updates>
        </layout>
    </adminhtml>
    ...
    </config>
    

    干杯

    【讨论】:

    • 这个很好理解
    • 但是我怀疑当magento版本更新时自定义文件夹会丢失。我只需要在模块文件夹本身中添加自定义 js 或者更好的是请告诉我为管理自定义模块添加自定义 js 的最佳解决方案,这样即使在更新 magento 后我们也不会丢失任何东西。提前谢谢你。
    【解决方案3】:

    顺便说一句,如果您将 app/design/adminhtml/default 重命名为 app/design/adminhtml/base 管理主题工作正常。

    @benmarks 的答案是正确的,尽管不完整。您还需要重命名另一个目录:skin/adminhtml/defaultskin/adminhtml/base

    我为管理员创建了一个自定义主题,以便我可以处理标题插入等。

    所以我不得不将模块中的 config.xml 更改为如下所示:

    <config>
    <stores>
        <admin>
            <!-- altering admin design package and theme -->
            <design>
                <package>
                    <name>MY_THEME_PACKAGE_NAME</name>
                </package>
                <theme>
                    <default>default</default>
                </theme>
            </design>
        </admin>
    </stores>
    </config>
    

    编辑

    我发现只需将 adminhtml/default/default 主题目录重命名为 adminhtml/base/defaultskin 文件夹,正如我建议的那样breaks在管理员的可配置产品部分快速创建产品。

    我最终将mymodule_layoutfile.xml(可能是local.xml 文件,我只是不想在不引用我的模块的情况下放置文件)复制到adminhtml/default/default/layoutfrontend/base/default/layout 目录。

    注意adminhtml 没有base 目录,所以使用default/default

    mymodule_layoutfile.xml 内容:

    <?xml version="1.0"?>
    <layout>
        <default>
            <reference name="head">
                <action method="addJs"><script>jquery/jquery.min.js</script></action>
                <action method="addJs"><script>jquery/jquery.noConflict.js</script></action>
            </reference>
        </default>
    </layout>
    

    【讨论】:

      【解决方案4】:

      我遇到了同样的问题。仔细检查路径是否绝对正确。就我而言,我有命名空间/模块/css/mycss.css。我错过了 css 文件夹,因为 Magento 在默认文件夹中找不到它,所以它去了基本文件夹。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-09-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多