백엔드의 자홍색 탭 (varienTabs
)에서 클릭을 수신하려면 기존 사용자 정의 관찰자 만 추가하면됩니다. 이 될 것입니다 귀하의 예제 (백엔드에서 "편집 고객 페이지") 사용 :
var myTabs = $$("#customer_info_tabs li a.tab-item-link");
for (var i = 0; i < myTabs.length; i++) {
Event.observe(myTabs[i], "click", function (event) {
var tab = Event.findElement(event, "a");
// insert your custom code here
alert(tab.id);
Event.stop(event);
});
}
핵심 파일 (속보 업그레이드 가능성)을 변경하지 않고 사용자 정의 관찰자를 구현하려면, 적절한 관리 컨트롤러 액션을 재정의 할 수 있습니다.
예를 들어, Mage_Adminhtml_CustomerController::editAction()
오버라이드 (override) :
<!-- app/code/local/My/Adminhtml/etc/config.xml -->
<config>
<modules>
<My_Adminhtml>
<version>0.1.0</version>
</My_Adminhtml>
</modules>
<admin>
<routers>
<adminhtml>
<args>
<modules>
<My_Adminhtml before="Mage_Adminhtml">My_Adminhtml</My_Adminhtml>
</modules>
</args>
</adminhtml>
</routers>
</admin>
</config>
다음, 사용자 정의 관리 컨트롤러 정의 :
// app/code/local/My/Adminhtml/controllers/CustomerController.php
require 'Mage/Adminhtml/controllers/CustomerController.php';
class My_Adminhtml_CustomerController extends Mage_Adminhtml_CustomerController
{
public editAction()
{
// copy of Mage_Adminhtml_CustomerController::editAction() code here
}
}
마지막으로, 오버라이드 (override) 행동에, 사용자 정의 관찰자 스크립트를 포함하는 추가 텍스트 블록을 생성하고 그 블록을 레이아웃에 추가하십시오. editAction
의 말에 예를 들어 같은 것을 삽입 :
:
$this->loadLayout();
$oBlock = $this->getLayout()->createBlock('core/text')->setText('
<script type="text/javascript">
var myTabs = $$("#customer_info_tabs li a.tab-item-link");
for (var i = 0; i < myTabs.length; i++) {
Event.observe(myTabs[i], "click", function (event) {
var tab = Event.findElement(event, "a");
alert(tab.id);
Event.stop(event);
});
}
</script>
');
$this->getLayout()->getBlock('left')->append($oBlock);
$this->renderLayout();
:
"사용하지 않음"을보다 정확하게 정의하십시오. 일반적으로 게시 한 'varienTabs' 핸들러는 탭 클릭을 대기하는 위치입니다. –
지금까지이 클래스가 인터페이스를 렌더링하는 데 사용되는 것을 볼 수 있지만 클릭 탭 이벤트를 수신하기 위해 사용할 항목을 찾을 수 없습니다. – changeling
"클릭을 받기 위해 사용할 무언가"가 이미 있습니다. 코드를'tabMouseClick' 핸들러에 추가하기 만하면됩니다. 예를 들어, 게시물의'if/else' 블록 바로 앞에'alert ("tab was clicked"); –