문제

편집 :에 의해 해결 조나단 Hussey.의 끝에 보시(아래)다른 질문을하려는 경우 도와 드리겠습니다!overridding 템플릿 및 레이아웃:)

자회사 질문 :할 수 있습니 override page.xml,위메.phtml 및 renderer.phtml 내 모듈 또는 내가 가지고 그들을 대체에서 수동으로 테마를 언제든지 변경합니다.그렇다면,당신은 저를 선도하는 튜토리얼 또는 설명하게 볼까요?나는 보이지 않았을 쉽게 찾을 수 있습과 일치하는 경우...

고 싶을 재정의하위메.phtml,the renderer.phtml 며,템플릿의 page.xml, 내 모듈, 면 가능합니다.

감사에 대한 이 추가 help:)


나는 새로운 젠토 사용,그래서 내가 하려는 간단한 것,내의 이해 Magento 다.

무엇을 원하는 표시하는 것입 탐색 메뉴(상단)다른 방법(패널 틱 드롭다운),을 생성하여 내 자신의 모듈이 있습니다.나는 현재 메뉴가 정의되었/라는 이 파일을 발견하 design/frontend/{mytheme}/default/layout/page.xml 처럼 보이는:

<default translate="label" module="page">
    <block type="page/html" name="root" output="toHtml" template="page/3columns.phtml">
        <block type="page/html_header" name="header" as="header">
            <block type="core/text_list" name="top.menu" as="topMenu" translate="label">
                <label>Navigation Bar</label>
                <block type="page/html_topmenu" name="catalog.topnav" template="page/html/topmenu.phtml">
                    <block type="page/html_topmenu_renderer" name="catalog.topnav.renderer" template="page/html/topmenu/renderer.phtml"/>
                </block>
            </block>
        </block>
    </block>
</default>

(가진 많은 대학 주변의 일이지만,그것은 필수)

<block type="page/html_topmenu" name="catalog.topnav" template="page/html/topmenu.phtml">
    <block type="page/html_topmenu_renderer" name="catalog.topnav.renderer" template="page/html/topmenu/renderer.phtml"/>
</block>

이러한선을 나타냅니다 우리가 필요합 클래스 Mage_Page_Block_Html_Topmenu, 표시되는 템플릿에서 파일 design/frontend/{mytheme}/default/template/page/html/topmenu.phtml, 는 포함합니다:

<nav id="nav">
    <div class="nav-megadropdown col6">
        <?php echo $this->getHtml('level-top'); // $this is the a Topmenu object ?>
    </div>
    <div style="clear:both"></div>
</nav>

방법 getHtml 에 도달하는 아이 블록 catalog.topnav.renderer 고 그것의 클래스(Mage_Page_Block_Html_Topmenu_Renderer 과 통화를 렌더링 방법과 함께 템플릿 design/frontend/{mytheme}/default/template/page/html/topmenu/renderer.phtml 을 포함하는 복잡하지만 작업 메뉴(나는 그것을 시도하여 마법사를 개질시키기 클래스고 테마 phtml 파일,그리고 그것은 일).

하지만 이제,만들고 싶은 그것에 의해 제대로 작 overridding 클래스 내에서 모듈(는 활성처럼 보인 Fqu_Supergroup).그래서 나는 시작 config.xml :

<config>
    <modules>
        <Fqu_Supergroup>
            <version>0.1.0</version>
        </Fqu_Supergroup>
    </modules>
    <global>
        <blocks>
            <Page>
                <rewrite>
                    <html_topmenu>Fqu_Supergroup_Block_Html_Topmenu</html_topmenu>
                </rewrite>
            </Page>
        </blocks>
    </global>
</config>

과일과(Fqu_Supergroup_Block_Html_Topmenu 에)내 모듈(local/Fqu/Supergroup/Block/Html/Topmenu.php)포함되 재정의 방법(_getRenderedMenuItemAttributes 및 _getMenuItemClasses)

그래서 여기에 빠르게 액세스할 수 있습니 내 코드는,페이지가 표시됩니다 깨진 메뉴기 때문에 그것을 사용하지 않 내(나를 위해서 var_dump 를'ed 클래스(get_class($this) 는)그것이었을 렌더링하는 데 사용되는 메뉴로 돌아 Mage_Page_Block_Html_Topmenu);그 때 나는 위해서 var_dump 를 포함된 파일(get_included_files())은 보이지 않는데 참조하여 내가 모듈에서는 모두(성 관리자 패널에서만)...

이루지만,여러분의 관심에 감사드립니다며 어떤 도움을!

자회사 질문 :할 수 있습니 override page.xml,위메.phtml 및 renderer.phtml 내 모듈 또는 내가 가지고 그들을 대체에서 수동으로 테마를 언제든지 변경합니다.

도움이 되었습니까?

해결책

는 동안 나는 하지 않은 분석이 귀하의 게시물에 세부사항은 장소를 찾을 때 위를 통해은 당신이 선언하는 다시 잘못 Page 해야 합니다 page.이 문자열과 일치하지 않는 모듈 이름을 즉이 PageMage_Page, 그 대신에 일치하는 문자열을 사용할 때을 선언하는 리소스에서 모듈을 다시 쓰기,그래서 이 경우에는 config.xmlMage_Page 핵심 모듈:

...
<blocks>
    <page> <!-- this is the string to match -->
        <class>Mage_Page_Block</class>
    </page>
</blocks>
...

를 참조하여 page 의 일치에 대하여 모듈 Mage_Page 결정을 검사하여 글로벌 config(는 기본적으로 한 대규모 xml 파일을 포함하는 모든 config.xml 파일에 대한 모든 모듈).나머지의 문자열에 따라 결정된 클래스 이름을 그래서 html_topmenu 지도 클래스 Mage_Page_Block_Html_Topmenu 되는 클래스를 다시 쓰기에 적용됩니다.

에 대한 추가 질문,그래할 수 있습을 재정의 레이아웃 파일 또는 템플릿을 선언하여 레이아웃 파일한 모듈이다.이 선언할 수 있습니다 어떤 레이아웃 변경을 원하는 변경을 포함하여 템플릿 블록 및 이러한 사항이 변경됩니다 우선한 핵심 레이아웃 파일로서 귀하의 모듈은 항상 부하 후 모든 핵심 모듈을 사용합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 magento.stackexchange
scroll top