마 젠토 템플릿을 수정하는 올바른 방법 / 접근 방법은 무엇입니까?


15

사용자가 버튼을 클릭 할 때 "이메일로 보내기"페이지를 팝업 창으로 사용자 정의하고 싶은 올바른 방법을 제안 해주십시오. 템플릿 힌트를 사용하면 버튼이

frontend / rwd / default / template / catalog / product / view / sharing.phtml

그리고 해당 레이아웃 파일은 catalog.xml(frontend / rwd / default / layout에 있음)

그래서 다음 코드가 local.xml있는 동일한 폴더에를 만들었습니다 catalog.xml( test.phtml대신 sharing.phtml'Debug'에 부여한 것 )

<?xml version="1.0"?>
<layout version="0.1.0">
    <default>

        <catalog-product-view>
            <reference name="content">
                <block type="catalog/product_view" name="product.info" template="catalog/product/view.phtml">
                    <block type="catalog/product_view" name="product.info.sharing" as="sharing" template="catalog/product/view/test.phtml"/>
                </block>
            </reference>
        </catalog-product-view>

    </default>
</layout>

그러나 아무 일도 일어나지 않습니다. 기존 xmlphtml파일 을 수정하지 않고 테마의 기본 디자인을 변경 (덮어 쓰기)하는 방법을 의미 합니까?

답변:


10

이것이 local.xml파일 안에 넣어야 할 것 입니다.

<?xml version="1.0"?>
<layout version="0.1.0">
    <catalog_product_view>
        <reference name="product.info.sharing">
            <action method="setTemplate">
                <template>catalog/product/view/test.phtml</template>
            </action>
        </reference>
    </catalog_product_view>
</layout>

당신이 한 실수

  • 당신은 사용 이 레이아웃 업데이트 핸들을 : defaultcatalog-product-view. 그건 잘못이야 하나의 레이아웃 업데이트 핸들 만 필요합니다. 여기서 사용해야 할 올바른 것은catalog_product_view

  • 따라서 catalog-product-viewmagento는 알려져 있지 않습니다. 올바른 이름은catalog_product_view

  • 공유 블록은 이미를 통해 정의되었으므로 catalog.xml이제 해당 블록을 참조한 다음 조치를 추가하여 템플리트를 변경해야합니다 setTemplate. 이것이 위의 스크립트가하는 일입니다.

당신이 아이디어를 얻을 바랍니다


local.xml을 사용했는데, 여전히 지정된 폴더에 기존 파일 (test.phtml을 만들었습니다)을 표시합니다
Dimag Kharab

캐시를 지우셨습니까? 모든 것을 올바르게했다면 이것이 작동해야합니다.
Rajeev K Tomy

yup 캐싱은 제 경우에 비활성화되어 있으며 다시
색인을 생성했습니다 (

이것을 <reference name="content"><block type="core/template" name="test.block" template="catalog/product/view/test.phtml" /></reference>노드 바로 아래에 추가 하십시오 <catalog_product_view>. 제품보기 페이지 하단에서 test.phtml 파일 컨텐츠를 사용할 수 있는지 확인하십시오
Rajeev K Tomy

아직 운이
없어요

10

나는 일반적인 대답을하려고 노력할 것입니다.

템플릿을 변경하는 방법

테마 phtml에서 기본 테마 또는 상위 테마의 파일을 대체 할 수 있습니다 . 원본 파일을 복사 app/design/frontend/[package]/[theme]/template/[path/to/phtml]하여 변경하십시오.

예를 들어, 테마를 방금 구매했기 때문에 프로젝트 특정 사용자 정의 테마가없는 경우

app/design/frontend/[original-package]/[project-name]

에서 상속받습니다. [original-package]/[default]기본값에서 모든 것을 복사 할 필요가 없으며 변경해야 할 파일 만 있습니다.

모듈 별 변경

phtml파일 을 대체하는 대안 은 템플릿 경로를 변경하는 것입니다. 일반적으로 다음과 같이 레이아웃 XML에서 수행 할 수 있습니다.

<reference name="the-block-name">
    <action method="setTemplate"><name>path/to/new/template.phtml</name></action>
</reference>

그러나 이것은 테마별 변경이 아닌 템플릿을 전환해야하는 모듈에서 사용하기위한 것입니다. base/default그때 새 템플릿이 있어야합니다 .

local.xml / theme.xml을 사용하는 방법

local.xml파일을 사용하고있는 실제 테마, 즉의 디렉토리에 있어야합니다

app/design/frontend/[package]/[theme]/layout

local.xml대체 계층 구조의 여러 파일은 고려되지 않습니다. 찾을 수있는 첫 번째가 사용됩니다.

app/design/frontend/[package]/[theme]/layout/local.xml
app/design/frontend/[package]/default/layout/local.xml
app/design/frontend/base/default/layout/local.xml

(기본 계층 구조가 있고 사용자 정의 계층 구조가 없다고 가정)

변경하는 방법

원래 XML 파일에 이미있는 정의를 반복하지 말고 local.xml에서만 수정해야합니다. 즉, 기본 테마에서 XML 파일을 복사하여 파일에서 직접 변경하지 마십시오. 테마를 유지layout 디렉토리를 깨끗하게 !

의 전형적인 요소 local.xml입니다 <remove>완전히 기존의 블록을 제거하고, <action method="unsetChild">그리고 <action method="append">또 다른 하나의 부모로부터 블록을 이동하거나 기존 블록의 다른 메소드를 호출하는 것은 자신의 행동을 수정할 수 있습니다.

마 젠토 1.9

Magento 1.9부터는 모범 사례가 실제로 layout/local.xml이러한 변경에 사용되지 않지만etc/theme.xml

즉, app / design / frontend / yourpackage / etc / theme.xml에서 레이아웃 업데이트를 추가 할 수 있습니다. 장점은 레이아웃 업데이트의로드 순서를 제어 할 수 있다는 것입니다. Magento 1.9 이전에는 local.xml이 항상 마지막에로드되기 전에 레이아웃 지시문을 실행할 수 없었습니다.

프로젝트 별 테마 수정에 더 이상 local.xml을 사용하지 않습니다. local.xml은 이전 버전과의 호환성을 위해 더 이상 사용되지 않으므로 (1.9 이상) 사용됩니다. Local.xml은 Magento 2에서도 제거되었습니다 ( https://github.com/magento/magento2/issues/1037 ).

출처 : https://erfanimani.com/dont-use-local-xml/

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.