2011-02-08 2 views
1

frontend\default\default\layout\mytemplate에 "myblock.phtml"이라는 파일을 만들었습니다. 단순히 사용자 정의 모듈의 컨트롤러 URL을 호출하는 "확인"버튼 만 표시합니다. 질문은 해당 버튼 표시를 중단하고 싶습니다 (예 : myblock .html 템플릿) 때마다 그 사용자 정의 모듈을 사용할 수 없게 의미가 없기 때문에 비활성화됩니다. 모듈의 config.xml 내에서 조정할 수있는 모든 방법 ??맞춤 모듈 상태를 기반으로 magento로 맞춤 레이아웃을 사용 중지하는 방법은 무엇입니까?

답변

0

// 내가 모듈을 해제 할 때, 따라서 년 그냥 다른 사람을 위해 유용 할 수 있습니다 내 모듈의 블록 "Checkbox.php"의 코드 ..

<?php 
class Mypackage_Myextension_Block_Checkbox extends Mage_Core_Block_Template { 

    //echos a text based on module state 
    protected function checkstate() { 

     $modules = Mage::getConfig()->getNode('modules')->children(); 
     $modulesArray = (array)$modules; 

          //my module name 
     if($modulesArray['Mypackage_Myextension']->is('active')) { 
      echo "Mypackage_Myextension is active."; 
     } 
     else { 
      echo "Mypackage_Myextension is not active."; 
     } 
    } 
} 

?> 

입니다 (시스템 -> 고급 -> 모듈 비활성화) 블록 내용이 표시되지 않습니다.

+0

이것은 약간의 잔인한 부분이며,로드 된 모든 확장을 반복하는 대신 config에서 활성 상태를 요청할 수 있습니다. 확장 프로그램에서 블록을 사용하는 경우 관리자 페이지에서 확장 프로그램을 사용하지 않으면 모든 블록 출력이 비활성화되므로이 조건은 무의미합니다. –

0

모든 템플릿은 블록을 통과해야하며 블록에 당신은 추가 검사를 할 수 있습니다 또는 확장이 관리 페이지에서 사용할 때 기본 젠토 기능 비활성화 블록의 출력을하자 이 같은 것을하는 클래스 :

class Mypackage_Myextension_Block_Checkbox extends Mage_Core_Block_Template { 

    protected function _toHtml() { 
     if(!$this->checkIfModuleIsEnabled()) { 
      return ""; 
     } 
     return parent::_toHtml(); 
    } 
} 

희망이 있습니다!

감사합니다, 조

+0

아이디어를 제공해 주셔서 감사합니다. – PraveenMax

0

안톤의 대답에 확장하려면 사용자 정의 블록을 만들

+0

어딘가에'Mage :: helper ('core') -> isModuleOutputEnabled ($ moduleName)'을 사용하는 것에 대해 생각해보십시오. – clockworkgeek

+0

고마워, 그건 분명히 좋은 제안이야. 개인적으로 Magento의 출력을 차단하는 기능은 결코 신뢰하지 못했지만 다른 기능은 내가하는 것과 같은 방식으로 볼 수 없습니다. –

+0

감사합니다. 샘플 코드에 대한. 나는 내 모듈을 진정으로 모듈화했다. 이전에 직접 템플릿 블록을 호출했지만 지금은 내 모듈의 블록에 전달하고 템플릿을 표시하도록했다. 알 수없는 이유로이 블록 안에 내 차단 코드를 게시 할 수 없다. box (scrambled) ... – PraveenMax

관련 문제