La première étape consiste à créer un bloc appelé "pied" qui est essentiellement le même que "tête" mais vous le sortirez à un endroit différent. Vous pouvez l'ajouter à votre page.xml
:
<block type="page/html_head" name="foot" as="foot" template="page/html/foot.phtml"/>
Vous pouvez maintenant ajouter JS / CSS (bien que CSS dans le pied de page ne soit pas recommandé) en utilisant cette commande dans n'importe lequel de vos fichiers XML:
<reference name="foot">
<action method="addItem">
<type>skin_js</type>
<name>js/somefile.js</name>
</action>
<action method="addItem">
<type>skin_js</type>
<name>js/main.js</name>
</action>
</reference>
À l'intérieur page/html/foot.phtml
:
<?php echo $this->getCssJsHtml() ?>
<?php echo $this->getChildHtml() ?>
<?php echo $this->helper('core/js')->getTranslatorScript() ?>
<?php echo $this->getIncludes() ?>
Dans vos fichiers de modèle de page (par exemple page/1column.phtml
), vous devrez sortir ce bloc avant la balise de fermeture du corps:
<?php echo $this->getChildHtml('foot') ?>
Si vous utilisez les modèles Magento par défaut, vous obtiendrez des erreurs JS. Prenez le mini formulaire de recherche par exemple ( catalogsearch/form.mini.phtml
). Il a ce script en ligne:
<script type="text/javascript">
//<![CDATA[
var searchForm = new Varien.searchForm('search_mini_form', 'search', '<?php echo $this->__('Search Redset...') ?>');
//]]>
</script>
Elle sera appelée dès son chargement, car elle ne se trouve dans aucun gestionnaire de document prêt. Varien n'existe pas encore car il est dans le pied de page, vous obtenez donc une erreur. Vous pouvez résoudre ce problème en ajoutant un gestionnaire de documents prêt ou en déplaçant tous les JS en ligne de cette nature vers un fichier externe qui est également chargé dans le pied de page. Des problèmes comme celui-ci se produiront sur tout le site, en particulier dans les pages de paiement et les pages de produits configurables.
L'autre problème que vous pourriez rencontrer est si vous utilisez jQuery avec Prototype en mode noConflict. Vous devrez vous assurer que jQuery est chargé avant le prototype afin qu'aucun conflit ne se produise.