Câu trả lời:
Bạn có thể sắp xếp thứ tự skin
hoặc js
các tệp trong layout.xml bằng cách sử dụng phần tử params với thuộc tính name như câu trả lời này giải thích: -
<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>
và xem những gì sẽ xảy ra (Tôi không chắc chắn 100%). Báo cáo lại nếu điều đó không tải nó sau khi tất cả những người khác.
Tôi không nghĩ bạn có thể chỉ định thứ tự sắp xếp cho các tệp js bạn thêm (rõ ràng bạn có thể thấy câu trả lời được cung cấp bởi @zigojacko), nhưng tôi nghĩ bạn có thể làm điều đó một chút khác biệt, mua thêm một khối con vào head
khối.
Tất cả các phần tử con của head
khối được hiển thị sau các phần tử js và css.
Đây là thứ mà bạn cần.
Thêm phần này vào một trong các tập tin bố trí của bạn.
<reference name="head">
<block type="core/template" name="fancy" as="fancy" template="fancybox/fancybox.phtml" />
</reference>
Sau đó tạo tập tin app/design/frontend/{package}/{theme}/template/fancybox/fancybox.phtml
với nội dung sau.
<script type="text/javascript" src="<?php echo Mage::getBaseUrl('js').'/fancybox.js'?>"></script>
Tôi biết câu hỏi này đã cũ, nhưng đây là một cách đơn giản để đặt hàng các tệp tài sản của bạn bằng cách sử dụng một mô-đun tùy chỉnh đơn giản (đã thử nghiệm):
tạo nên
app/etc/modules/Company_ReorderAssets.xml
và chèn:
<?xml version="1.0"?>
<config>
<modules>
<Company_ReorderAssets>
<active>true</active>
<codePool>local</codePool>
</Company_ReorderAssets>
</modules>
</config>
tạo app/code/local/Company/ReorderAssets/etc/config.xml
và chèn:
<?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>
tạo ReorderAssets/Block/Page/Html/Head.php
và chèn:
<?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;
}
}
Ở đây chúng tôi tạo các hàm của chúng tôi addItemFirst
và addItemAfter
có thể được sử dụng như thế này (bên trong bất kỳ layout.xml nào).
Ví dụ về 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>
Xin lưu ý skin_js bên trong đường dẫn của bạn.
Đặc biệt cảm ơn Koncz Szabolcs.