6

如何将查询字符串参数附加到 HTML 中包含的每个 CSS 和 JavaScript 以清除 CSS 和 JavaScript 缓存。我试过了

<action method="addCss"><stylesheet>css/style.css?123</stylesheet></action>

<action method="addItem"><type>skin_css</type><name>css/styles.css?123</name><params/></action>

. 但每次它返回一个基本包,如

http://www.example.com/skin/frontend/base/default/styles.css?123

不是我的自定义主题目录。

如何解决这个问题?

4

4 回答 4

4

这个免费的扩展应该做你想做的事 - 对我来说非常适合:

https://github.com/jreinke/magento-suffix-static-files

于 2013-10-17T23:48:26.300 回答
1

当您通过 xml 布局更新添加 css 文件时,addCss动作(实际上只是调用addItem类型设置为的动作skin_css)正在寻找文件路径,而不是 url。虽然查询字符串在 url 中有效,但它们不在文件名中。Magento 将其视为无效参数,因此感到困惑并回退到base/default.

我可以为此想到2个解决方案。不幸的是,两者都是一种hackey。

  1. 将 css 文件移动到基​​本默认主题。这可行,但它取决于在其他版本的 magento 中可能不会保持不变的后备。

  2. 而不是直接插入css文件,而是用html代码创建一个phtml模板文件来插入css文件。然后在布局 xml 中插入一个core/template带有该新模板文件的块作为其模板。我已经在我开发的网站上使用了这种方法来解决这个问题。

于 2012-07-06T16:37:41.920 回答
1

这是我们所做的:

<reference name="head">
   <block type="core/text" name="link.tags">
      <action method="setText">
        <text>
           <![CDATA[<link rel="stylesheet" href="/css/style.css?v=2">]]>
        </text>
      </action>
   </block>
</reference>

从5 Useful Tricks For Your Magento local.xml中得到了这个想法以及其他一些有用的东西。

作为替代方案,您始终可以在进行更改时将文件从 重命名style_v1.css为等 - 它与更改为.style_v2.css具有相同的效果。style.css?v=1style.css?v=2

于 2013-06-12T05:00:32.557 回答
0

作为对这个问题的后续回答,我发现了以下(付费)magento 扩展,它可以满足您的要求:

http://www.magentocommerce.com/magento-connect/clear-css-and-javascript-cache.html

于 2012-12-11T07:42:10.297 回答