Il primo passo è creare un blocco chiamato "foot" che è essenzialmente lo stesso di "head" ma lo emetterai in un punto diverso. Puoi aggiungere questo al tuo page.xml
:
<block type="page/html_head" name="foot" as="foot" template="page/html/foot.phtml"/>
Ora puoi aggiungere JS / CSS (anche se i CSS nel piè di pagina non sono consigliati) usando questo comando in uno qualsiasi dei tuoi file 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>
All'interno page/html/foot.phtml
:
<?php echo $this->getCssJsHtml() ?>
<?php echo $this->getChildHtml() ?>
<?php echo $this->helper('core/js')->getTranslatorScript() ?>
<?php echo $this->getIncludes() ?>
Nei file del modello di pagina (ad es. page/1column.phtml
) Dovrai generare questo blocco prima del tag body di chiusura:
<?php echo $this->getChildHtml('foot') ?>
Se stai utilizzando i modelli Magento predefiniti otterrai errori JS. Prendi ad esempio il mini modulo di ricerca ( catalogsearch/form.mini.phtml
). Ha questo script incorporato:
<script type="text/javascript">
//<![CDATA[
var searchForm = new Varien.searchForm('search_mini_form', 'search', '<?php echo $this->__('Search Redset...') ?>');
//]]>
</script>
Questo verrà chiamato non appena viene caricato, poiché non è presente in nessun gestore di documenti pronto. Varien non esiste ancora perché è nel piè di pagina, quindi viene visualizzato un errore. È possibile risolvere questo problema aggiungendo un gestore pronto per il documento o spostando tutti i JS in linea di questa natura in un file esterno che viene anche caricato nel piè di pagina. Problemi come questo si verificano in tutto il sito, in particolare nella pagina di checkout e nelle pagine dei prodotti configurabili.
L'altro problema che potresti riscontrare è se stai usando jQuery insieme a Prototype in modalità noConflict. Devi assicurarti che jQuery sia caricato prima di Prototype in modo che non si verifichino conflitti.