Bước đầu tiên là tạo một khối gọi là "chân" về cơ bản giống như "đầu" nhưng bạn sẽ xuất nó ở một vị trí khác. Bạn có thể thêm phần này vào page.xml
:
<block type="page/html_head" name="foot" as="foot" template="page/html/foot.phtml"/>
Bây giờ bạn có thể thêm JS / CSS (mặc dù CSS trong phần chân trang không được khuyến nghị) bằng cách sử dụng lệnh này trong bất kỳ tệp XML nào của bạn:
<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>
Bên trong page/html/foot.phtml
:
<?php echo $this->getCssJsHtml() ?>
<?php echo $this->getChildHtml() ?>
<?php echo $this->helper('core/js')->getTranslatorScript() ?>
<?php echo $this->getIncludes() ?>
Trong tệp mẫu trang của bạn (ví dụ page/1column.phtml
) bạn sẽ cần xuất khối này trước khi đóng thẻ body:
<?php echo $this->getChildHtml('foot') ?>
Nếu bạn đang sử dụng các mẫu Magento mặc định, bạn sẽ gặp lỗi JS. Lấy mẫu tìm kiếm nhỏ chẳng hạn ( catalogsearch/form.mini.phtml
). Nó có kịch bản nội tuyến này:
<script type="text/javascript">
//<![CDATA[
var searchForm = new Varien.searchForm('search_mini_form', 'search', '<?php echo $this->__('Search Redset...') ?>');
//]]>
</script>
Điều này sẽ được gọi ngay khi nó tải, vì nó không có trong bất kỳ trình xử lý tài liệu sẵn sàng nào. Varien chưa tồn tại vì nó ở chân trang, do đó bạn gặp lỗi. Bạn có thể khắc phục điều này bằng cách thêm một trình xử lý tài liệu sẵn sàng hoặc bằng cách di chuyển tất cả các JS nội tuyến có tính chất này sang một tệp bên ngoài cũng được tải trong phần chân trang. Các vấn đề như thế này sẽ xảy ra trên toàn bộ trang web, đặc biệt là trong các trang sản phẩm thanh toán và có thể định cấu hình.
Vấn đề khác bạn có thể gặp là nếu bạn đang sử dụng jQuery cùng với Prototype ở chế độ noConflict. Bạn sẽ cần đảm bảo jQuery được tải trước Prototype để không xảy ra xung đột.