2012-07-06 7 views
6

Come posso aggiungere un parametro querystring a ogni CSS e JavaScript includere nell'HTML per cancellare la cache CSS e JavaScript. Ho provatomagento aggiunge un parametro querystring a CSS e JS

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

e

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

. Ma ogni volta che restituisce un pacchetto di base come

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

non

mia directory tema personalizzato.

Come risolvere questo?

risposta

1

Quando si aggiunge un file css attraverso gli aggiornamenti di layout xml, il addCss azione (che davvero appena chiama l'azione addItem con il tipo impostato skin_css) è alla ricerca di un percorso di file, non un URL. Sebbene le stringhe di query siano valide negli URL, non sono nei nomi di file. Magento vede che come parametro non valido, viene confuso e torna a base/default.

Posso pensare a 2 soluzioni per questo. Sfortunatamente entrambi sono una specie di hackey.

  1. Sposta il file css sul tema predefinito di base. Funziona ma dipende da fallback che potrebbero non rimanere gli stessi in altre versioni di Magento.

  2. invece di inserire direttamente il file css, creare un file modello phtml con il codice html per inserire un file css. Quindi inserisci un blocco core/template con quel nuovo file modello come modello nel layout xml. Ho usato questo metodo sui siti che sviluppo per aggirare questo problema.

+0

Grazie per la risposta, cercherò la seconda soluzione, ma ancora aspettare un'altra alternativa. – zhipeng

0

Qui è quello che facciamo:

<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> 

Ho questa idea insieme ad altre cose utili da 5 Useful Tricks For Your Magento local.xml.

In alternativa, si può sempre basta rinominare il file style_v1.css-style_v2.css ecc ogni volta che si apporta una modifica - ha lo stesso effetto di cambiare style.css?v=1-style.css?v=2.