manage category 切換 category 所觸發的 AJAX

在Magento 後台往往會想對某些頁面寫入JavaScript的需求,為了改變頁面的內容,大多數的頁面都在後端作處理就好,而有些頁面像是Category>manage category裡的category做切換的時候是透過AJAX機制做傳遞,這時候就有寫JavaScript的需求了。
1.如下圖的紅色框框,在切換category的時候執行JavaScript的程式碼

2. 如下先找到這個檔案app\design\adminhtml\default\default\template\catalog\category\edit.phtml,再找到function updateContent() 裡 的 Onsuccess這一個程式區塊,因為每次category再切換的時候是透過AJAX機制做傳遞,都會去跑這個區塊,所以可在這個區塊裡面撰寫程式碼。
function updateContent(url, params, refreshTree) {
if (!params) {
params = {};
}
if (!params.form_key) {
params.form_key = FORM_KEY;
}
toolbarToggle.stop();
/*if(params.node_name)
{
var currentNode = tree.getNodeById(tree.currentNodeId);
currentNode.setText(params.node_name);
}*/
var categoryContainer = $('category-edit-container');
var messagesContainer = $('messages');
var thisObj = this;
new Ajax.Request(url + (url.match(new RegExp('\\?')) ? '&isAjax=true' : '?isAjax=true' ), {
parameters: params,
evalScripts: true,
onComplete: function () {
/**
* This func depends on variables, that came in response, and were eval'ed in onSuccess() callback.
* Since prototype's Element.update() evals javascripts in 10 msec, we should exec our func after it.
*/
setTimeout(function() {
try {
if (refreshTree) {
thisObj.refreshTreeArea();
}
toolbarToggle.start();
} catch (e) {
alert(e.message);
};
}, 25);
},
onSuccess: function(transport) {
try {
if (transport.responseText.isJSON()) {
var response = transport.responseText.evalJSON();
var needUpdate = true;
if (response.error) {
alert(response.message);
needUpdate = false;
}
if(response.ajaxExpired && response.ajaxRedirect) {
setLocation(response.ajaxRedirect);
needUpdate = false;
}
if (needUpdate){
if (response.content){
$(categoryContainer).update(response.content);
}
if (response.messages){
$(messagesContainer).update(response.messages);
}
}
} else {
$(categoryContainer).update(transport.responseText);
}
onLandingPageSectionChanged();
}
catch (e) {
$(categoryContainer).update(transport.responseText);
}
}
});
}
筆者的範例只限於manage category,如果其他頁面的tab做切換也是用AJAX的機制,那要找到對應的那個onSuccess區塊。
更多的Magento相關教學,可以追蹤我們的Facebook粉絲專頁喔!
我要留言