카탈로그 제품 목록 페이지에서 price.phtml을 어떻게 렌더링합니까?


12

카탈로그 제품 목록 페이지의 템플릿 파일은 list.phtml입니다. 범주 내 모든 제품의 렌더링이 foreach루프를 사용하여 발생하는 경우

의 렌더링에 대해 혼란스러워합니다 price.phtml. 핸들에 블록이 없기 때문에<catalog_category_default>

이제 <?php echo $this->getPriceHtml($_product, true) ?>제품 가격을 반환합니다.

이 방법은 어떻게 연결되어 price.phtml있습니까?


base / default / your_theme의 catalog.xml에서 "price.phtml"을 검색하면 list.phtml을 포함하는 블록의 하위 블록이됩니다.
Shathish

답변:


12

제품 가격 표시

이 메소드 getPriceHtml()는 블록 클래스에서 정의됩니다 Mage_Catalog_Block_Product_Abstract.

이 방법은 제품 유형에 따라 가격 렌더러를 사용합니다.

$type_id = $product->getTypeId(); // e.g. simple, configurable, bundle, grouped, ...
$this->_preparePriceRenderer($type_id)

가격 렌더러는 템플릿이 연결된 블록입니다. 둘 다 제품 유형에 따라 다릅니다.

지정된 제품 유형에 대해 정의 된 블록 또는 템플릿이없는 경우 기본적으로 catalog/product_price블록 및 catalog/product/price.phtml템플릿이 사용됩니다.

제품 유형에 대한 가격 렌더러 및 템플릿은 어디에 정의되어 있습니까?

가격 블록과 렌더러는 일반적으로 레이아웃 XML을 사용하여 지정되므로 새로운 제품 유형을 추가하는 모듈도 자체 렌더러를 쉽게 추가 할 수 있습니다. 예를 들어. 번들 제품은 bundle.xml레이아웃 파일 에서 다음과 같이 가격 렌더러를 추가 합니다.

<default>
    <reference name="catalog_product_price_template">
        <action method="addPriceBlockType">
            <type>bundle</type>
            <block>bundle/catalog_product_price</block>
            <template>bundle/catalog/product/price.phtml</template>
        </action>
    </reference>
</default>

맞춤형 가격 템플릿 또는 렌더러

동일한 메커니즘을 사용하여 기본 렌더러를 재정의 할 수도 있습니다. 템플릿을 변경하고 기본 가격 블록 유형을 유지 addPriceBlockType하려면 기본 블록 (위 참조)과 템플릿을 사용하여 레이아웃 파일을 호출 하면됩니다.

가격 블록 렌더링

실제로 가격 블록을 렌더링하는 코드는 다음과 같습니다.

$this->_preparePriceRenderer($type_id)
    ->setProduct($product)
    ->setDisplayMinimalPrice($displayMinimalPrice)
    ->setIdSuffix($idSuffix)
    ->toHtml();

$displayMinimalPrice$idSuffix변수는에 선택적 인수입니다 getPriceHtml방법.

public function getPriceHtml($product, $displayMinimalPrice = false, $idSuffix = '')

$idSuffix의는 CSS의 ID를 완료하기 위해 가격 템플릿에 사용되는 <span>예를 들어 실제 가격을 둘러싼 태그 :

<span class="price" id="price-excluding-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">


슈퍼 속성 가격을 얻으려면 <? php echo $ this-> getPriceHtml ($ _ product); ?> 또는 가격 유형을 지정해야합니까? 계층?
Elva Sandoval

코 렌트. 이 방법은 제품 유형을 결정하고 그에 따라 가격을 표시합니다.
Vinai

안녕하세요 @Vinai 나는 그것을 시도했지만 가격은 고정되어 있습니다. 다른 가격의 색상을 선택해도 바뀌지 않습니다. 최고 가격은 변경되지만 장바구니에 담기 근처의 가격은 변경되지 않습니다. 여기를 참조하십시오 jennyyootest.com/index.php/adelle.html
Elva Sandoval

두 가격을 모두 변경하려면 JavaScript를 조정해야합니다.
Vinai
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.