Réponses:
Vous pouvez trier l'ordre des fichiers skin
ou js
dans layout.xml en utilisant l'élément params avec un attribut de nom comme cette réponse explique: -
<action method="addJs"><!-- this will be shown second -->
<script>prototype/javascript1.js</script>
<params><![CDATA[name="js002_second"]]></params>
</action>
<action method="addJs"><!-- this will be shown first -->
<script>prototype/javascript2.js</script>
<params><![CDATA[name="js001_first"]]></params>
</action>
<params><![CDATA[name="zjs_last"]]></params>
voir ce qui se passe (je ne suis pas sûr à 100%). Signaler si cela ne le charge pas après tous les autres.
Je ne pense pas que vous puissiez spécifier un ordre de tri pour les fichiers js que vous ajoutez (apparemment, vous pouvez voir la réponse fournie par @zigojacko), mais je pense que vous pouvez le faire un peu différemment, achetez en ajoutant un bloc enfant au head
bloc.
Tous les enfants du head
bloc sont rendus après les éléments js et css.
Voici ce dont vous avez besoin.
Ajoutez-le à l'un de vos fichiers de mise en page.
<reference name="head">
<block type="core/template" name="fancy" as="fancy" template="fancybox/fancybox.phtml" />
</reference>
Créez ensuite le fichier app/design/frontend/{package}/{theme}/template/fancybox/fancybox.phtml
avec le contenu suivant.
<script type="text/javascript" src="<?php echo Mage::getBaseUrl('js').'/fancybox.js'?>"></script>
Je sais que cette question est ancienne, mais voici un moyen simple de commander vos fichiers de ressources à l'aide d'un simple module personnalisé (testé):
créer
app/etc/modules/Company_ReorderAssets.xml
et insérer:
<?xml version="1.0"?>
<config>
<modules>
<Company_ReorderAssets>
<active>true</active>
<codePool>local</codePool>
</Company_ReorderAssets>
</modules>
</config>
créer app/code/local/Company/ReorderAssets/etc/config.xml
et insérer:
<?xml version="1.0"?>
<config>
<modules>
<Company_ReorderAssets>
<version>1.0.0</version>
</Company_ReorderAssets>
</modules>
<global>
<blocks>
<class>Company_ReorderAssets_Block</class>
<page>
<rewrite>
<html_head>Company_ReorderAssets_Block_Page_Html_Head</html_head>
</rewrite>
</page>
</blocks>
</global>
</config>
créer ReorderAssets/Block/Page/Html/Head.php
et insérer:
<?php
class Company_ReorderAssets_Block_Page_Html_Head extends Mage_Page_Block_Html_Head {
public function addItemFirst($type, $name, $params = null, $if = null, $cond = null) {
if ($type === 'skin_css' && empty($params)) {
$params = 'media="all"';
}
$firstElement = array();
$firstElement[$type . '/' . $name] = array(
'type' => $type,
'name' => $name,
'params' => $params,
'if' => $if,
'cond' => $cond,
);
$this->_data['items'] = array_merge($firstElement, $this->_data['items']);
return $this;
}
public function addItemAfter($after, $type, $name, $params = null, $if = null, $cond = null) {
if ($type === 'skin_css' && empty($params)) {
$params = 'media="all"';
}
$firstElement = array();
$firstElement[$type . '/' . $name] = array(
'type' => $type,
'name' => $name,
'params' => $params,
'if' => $if,
'cond' => $cond,
);
if (array_key_exists($after, $this->_data['items'])){
$pos = 1;
foreach ($this->_data['items'] as $key => $options){
if ($key == $after) :
break;
endif;
$pos +=1;
}
array_splice($this->_data['items'], $pos, 0, $firstElement);
}
return $this;
}
}
Ici, nous créons nos fonctions addItemFirst
et addItemAfter
qui peuvent être utilisées comme ceci (à l'intérieur de n'importe quel layout.xml).
Exemple de layout.xml:
<?xml version="1.0"?>
<layout version="0.1.0">
<default>
<reference name="head">
<action method="addItemFirst"><type>skin_js</type><script>js/jquery.js</script></action>
<action method="addItemAfter">
<after>skin_js/js/jquery.js</after>
<type>skin_js</type>
<script>custom_folder/javascript.js</script>
</action>
<action method="addItemAfter">
<after>skin_js/js/jquery.js</after>
<type>skin_js</type>
<script>custom_folder/another_javascript.js</script>
</action>
</reference>
</default>
</layout>
Veuillez noter les skin_js à l'intérieur de votre chemin.
Un merci spécial à Koncz Szabolcs.