Der erste Schritt besteht darin, einen Block mit dem Namen "foot" zu erstellen, der im Wesentlichen mit "head" identisch ist, den Sie jedoch an einer anderen Stelle ausgeben. Sie können dies hinzufügen zu page.xml
:
<block type="page/html_head" name="foot" as="foot" template="page/html/foot.phtml"/>
Jetzt können Sie JS / CSS hinzufügen (obwohl CSS in der Fußzeile nicht empfohlen wird), indem Sie diesen Befehl in einer Ihrer XML-Dateien verwenden:
<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>
Innen page/html/foot.phtml
:
<?php echo $this->getCssJsHtml() ?>
<?php echo $this->getChildHtml() ?>
<?php echo $this->helper('core/js')->getTranslatorScript() ?>
<?php echo $this->getIncludes() ?>
In Ihren Seitenvorlagendateien (zB page/1column.phtml
) müssen Sie diesen Block vor dem schließenden Body-Tag ausgeben:
<?php echo $this->getChildHtml('foot') ?>
Wenn Sie die Standard-Magento-Vorlagen verwenden, werden JS-Fehler angezeigt. Nehmen Sie zum Beispiel das Minisuchformular ( catalogsearch/form.mini.phtml
). Es hat dieses Inline-Skript:
<script type="text/javascript">
//<![CDATA[
var searchForm = new Varien.searchForm('search_mini_form', 'search', '<?php echo $this->__('Search Redset...') ?>');
//]]>
</script>
Dies wird aufgerufen, sobald es geladen wird, da es sich nicht in einem dokumentenfertigen Handler befindet. Varien ist noch nicht vorhanden, da es sich in der Fußzeile befindet und Sie eine Fehlermeldung erhalten. Sie können dies beheben, indem Sie einen dokumentenfertigen Handler hinzufügen oder alle Inline-JS dieser Art in eine externe Datei verschieben, die ebenfalls in die Fußzeile geladen wird. Probleme wie diese treten auf der gesamten Website auf, insbesondere auf den Checkout- und konfigurierbaren Produktseiten.
Das andere Problem besteht darin, dass Sie jQuery zusammen mit Prototype im NoConflict-Modus verwenden. Sie müssen sicherstellen, dass jQuery vor Prototype geladen wird, damit keine Konflikte auftreten.