문제

액션 버튼에 추가 호출을 추가하는 모듈을 만드는 것입니다. 디스플레이 할 출력을 얻을 수 없습니다.나는 이름 지정 규칙이나 파일 위치 (또는 둘 다)가 잘못되었다고 믿습니다.

블록을 삽입하려는 방법 일 수도 있습니다.나는 그것을 피할 수 있다면 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

솔루션을 찾았습니다. 이는 두 부분입니다.

  1. LAYOUT 업데이트의 프론트 엔드 -> 업데이트 경로를 정의하지 않았습니다.</global>

    후에 삽입했습니다
      <frontend>
        <layout>
            <updates>
                <ctaattributes>
                    <file>ctaattributes.xml</file>
                </ctaattributes>
            </updates>
        </layout>  
    </frontend>
    
  2. local.xml을 사용 했었 으면, 나는 이것이 요구되었을 것이라고 믿지 않지만, 내 테스트에서는 파일 이름을 별도로 유지하기 위해 파일 이름을 변경할 것이라고 생각했습니다.

    1. 블록 클래스 이름
    2. 에서 낙타 케이스를 사용할 수 없습니다.

      원래의 클래스는 CompanyName_CtaAttributes_Block_CtaButtons라는 해당 파일이 있습니다.
      이름을 CtaButtons.phpCompanyName_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>
.

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