2009-12-09 4 views
3

다른 텍스트 상자를 추가하기 위해 확장 프로그램의 "상점 추가"및 "상점 편집"페이지에 대해 Magento 블록을 무시하려고 시간을 보냈습니다. 책과 인터넷 검색을 통해 나는 사람들이 일한다고 말하는 몇 가지 해결책을 찾았지만 나에게는 그렇지 않다.Magento - 무시 Adminhtml 블록

권장 사항 중 하나는 this one입니다.

원래 포스터에는 작동하지만 나에게는 적합하지 않은 Lee Saferite의 올바른 해결책을 복사했습니다. 물론, 값을 내가 재정의 한 클래스와 새로운 수정 된 클래스로 변경했습니다.

내 config.xml에 (관련 부분) :

<global> 
    <blocks> 
     <adminhtml> 
     <rewrite> 
      <system_store_sdit_form>Nintera_General_Block_StoreEdit</system_store_sdit_form> 
     </rewrite> 
     </adminhtml> 
    </blocks> 
    <resources></resources> 
    <helpers> 
     <Nintera_General> 
     <class>Nintera_General_Helper</class> 
     </Nintera_General> 
    </helpers> 
    </global> 

그리고 Nintera/일반/차단/StoreEdit.php에있는 블록 클래스 :

class Nintera_General_Block_StoreEdit extends Mage_Adminhtml_Block_System_Store_Edit_Form 
{ 
    /** 
    * Prepare form data 
    * 
    * return Mage_Adminhtml_Block_Widget_Form 
    */ 
    protected function _prepareForm() 
    { ... } 
} 

이 클래스에 포함 된 새로운 입력 필드 . 필드는 내가에서 원래의 코어 파일을 수정 완벽 경우 표시 :

응용 프로그램/코어/마법사/Adminhtml/차단/시스템/저장/Edit.php

하지만 난 정말 내 확장을 재정의합니다. 필요한 경우 전체 config.xml을 게시 할 수 있지만 대부분 최상위 관리 메뉴를 만들고 확장 정보를 지정합니다.

무엇이 잘못되었는지에 대한 아이디어가 있습니까? 해결책은 높게 평가 될 것입니다!

답변

10

약간 수정 한 모습입니다. '편집'을 'sdit'으로 잘못 입력 한 것처럼 보입니다.

<global> 
    <blocks> 
     <adminhtml> 
     <rewrite> 
      <system_store_edit_form>Nintera_General_Block_StoreEdit</system_store_edit_form> 
     </rewrite> 
     </adminhtml> 
    </blocks> 
</global> 

또한, 당신은 마법사 ::을 getModel ("nintera_general/myblock") 구문을 사용하여 다른 블록을 호출 할 경우, 당신은뿐만 아니라 그 코드에 자신의 블록을 추가해야합니다 것을 명심 아래에 나와 있습니다.

<global> 
    <blocks> 
     <adminhtml> 
     <rewrite> 
      <system_store_edit_form>Nintera_General_Block_StoreEdit</system_store_edit_form> 
     </rewrite> 
     </adminhtml> 
     <nintera_general> 
     <class>Nintera_General_Block</class> 
     </nintera_general> 
    </blocks> 
</global> 
2

여러 스레드를 읽은 후 나는 Mage_Adminhtml_Block_Widget_Grid를 재정의이 문제에 대한 해결책을 발견했습니다. "이 PHP에서 지원되지 않기 때문에 당신은 설정에서 인스턴스화 만 블록을 무시 (재 작성) 할 수 . 당신은 클래스 계층 구조에 아무것도 삽입 할 수 없습니다"

thread
에서 언급 한 바와 같이

나는 원 메서드를 재정의하려면의 확장 계층 구조에 대해 protected function _addColumnFilterToCollection($column)

을 재정의합니다.

Mage_Adminhtml_Block_Widget_Grid을 대체하는 대신 클래스 Mage_Adminhtml_Block_Sales_Order_Grid을 대체하고 거기에 내 함수를 배치하십시오.

나를 위해 이것은 잘 동작합니다.

관련 문제