magento 1.9.x - 로컬 모듈에서 표시되지 않는 블록
-
28-09-2020 - |
문제
액션 버튼에 추가 호출을 추가하는 모듈을 만드는 것입니다. 디스플레이 할 출력을 얻을 수 없습니다.나는 이름 지정 규칙이나 파일 위치 (또는 둘 다)가 잘못되었다고 믿습니다.
블록을 삽입하려는 방법 일 수도 있습니다.나는 그것을 피할 수 있다면 PHTML 파일을 수정하고 싶지 않다.
내 파일에서 볼 수 있듯이 아무것도 출력 할 수있는 을 얻는 여러 가지 방법을 시도합니다.
목표는 장바구니에 담기 후 추가 CTA 버튼을 추가 할 수 있습니다 - 예 : '요청 샘플'
파일 구조 :
app
Code
local
CompanyName
CtaAttributes
Block -> CtaButtons.php
etc -> config.xml
design
frontend
base
default
layout->ctabuttons.xml
template
ctaattributes
catelog
product ->ctabuttons.phtml
.
config.xml
<config>
... includes Module and Resource
<global>
<blocks>
<ctaattributes>
<class>CompanyName_CtaAttributes_Block</class>
</ctaattributes>
</blocks>
</global>
</config>
.
ctabuttons.xml
<?xml version="1.0"?>
<layout version="0.1.0">
<catalog_product_view>
<reference name="content">
<block type="core/text_list" name="product.info.addtocart" before="addtocart" template="ctaattributes/catalog/product/ctabuttons.phtml"/>
<action method="append">
<block>ctabuttons</block>
</action>
</reference>
<reference name="product.info.addtocart">
<block type="core/text_list" name="core-text"><action method="setText"><text><![CDATA[<div>Test</div>]]></text></action></block>
</reference>
</catalog_product_view>
</layout>
.
ctabuttons.phtml
<?php
/**
*/
Mage::log(get_class($this));
echo 'this is my test';
.
ctabuttons.php
<?php
class CompanyName_CtaAttributes_Block_CtaButtons extends Mage_Core_Block_Template {
echo 'test';
}
. 해결책 4
솔루션을 찾았습니다. 이는 두 부분입니다.
-
LAYOUT 업데이트의 프론트 엔드 -> 업데이트 경로를 정의하지 않았습니다.
후에 삽입했습니다</global>
<frontend> <layout> <updates> <ctaattributes> <file>ctaattributes.xml</file> </ctaattributes> </updates> </layout> </frontend>
- 블록 클래스 이름 에서 낙타 케이스를 사용할 수 없습니다.
local.xml을 사용 했었 으면, 나는 이것이 요구되었을 것이라고 믿지 않지만, 내 테스트에서는 파일 이름을 별도로 유지하기 위해 파일 이름을 변경할 것이라고 생각했습니다.
원래의 클래스는 CompanyName_CtaAttributes_Block_CtaButtons
라는 해당 파일이 있습니다.
이름을 CtaButtons.php
및 CompanyName_CtaAttributes_Block_Ctabuttons
로 변경하면 문제가 해결되었습니다.
블록 / blockname.php의 클래스 파일 또는 문제가있는 레이아웃 XML 파일의 클래스 파일인지 모르겠습니다.
IMPELCASE에서 IMPELSENCANDER BLOCKNAME 클래스 및 파일로 제한되는 것으로 보입니다.
다른 팁
- 파일 구조의 /blocks/ctabuttons.xml은 PHP 여야합니다. 파일.
- in / app / etc / modules 에 있어야하는 모듈 파일이 표시되지 않습니다.
- config.xml 에 모듈 버전 관리가 있어야합니다.
최신 패치를 사용하는 경우 시스템 -> 권한 -> 블록
에서 블록을 허용해야합니다.안녕하세요 블록 유형을 처음으로 정의해야합니다
<?xml version="1.0"?>
<layout version="0.1.0">
<catalog_product_view>
<reference name="content">
<block type="core/text_list" name="product.info.addtocart" before="addtocart" template="ctaattributes/catalog/product/ctabuttons.phtml"/>
<action method="append">
<block>ctabuttons</block>
</action>
</reference>
<reference name="product.info.addtocart">
<block type="core/text_list" name="core-text"><action method="setText"><text><![CDATA[<div>Test</div>]]></text></action></block>
</reference>
</catalog_product_view>
</layout>
.
~
<?xml version="1.0"?>
<layout version="0.1.0">
<catalog_product_view>
<reference name="product.info">
<block type="core/text_list" name="product.info.ctaattributes" before="addtocart" template="ctaattributes/catalog/product/ctabuttons.phtml"/>
</reference>
</catalog_product_view>
</layout>
.