Price.phtml'nin katalog ürün listeleme sayfasında oluşturulması nasıl gerçekleşiyor?


12

Katalog Ürün listeleme sayfasının şablon dosyasıdır list.phtml. Kategorideki tüm ürünlerin oluşturulması foreachdöngü kullanılarak gerçekleşir .

Ben render render hakkında kafam karıştı price.phtml. Çünkü bunun için bir blok yok<catalog_category_default>

Şimdi, <?php echo $this->getPriceHtml($_product, true) ?>ürünün fiyatını döndürür.

Bu yöntemle nasıl bağlantı kurulur price.phtml?


temel / varsayılan / temanızda catalog.xml dosyasında "price.phtml" araması, list.phtml içeren bloğun alt bloğu olacaktır.
Shathish

Yanıtlar:


12

Ürün fiyat göstergesi

Yöntem getPriceHtml()blok sınıfında tanımlanır Mage_Catalog_Block_Product_Abstract.

Yöntem, ürün türüne bağlı olarak bir fiyat oluşturucu kullanır:

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

Fiyat oluşturucu, ilişkili bir şablona sahip bir bloktur. Her ikisi de ürün tipine bağlıdır.

Belirtilen ürün türü için tanımlanmış bir blok veya şablon yoksa, varsayılan olarak catalog/product_priceblok ve catalog/product/price.phtmlşablon için kullanılır.

Ürün türleri için fiyat oluşturucular ve şablonlar nerede tanımlanır?

Fiyat blokları ve oluşturucular genellikle düzen XML'si kullanılarak belirtilir, böylece yeni ürün türleri ekleyen modüller kendi oluşturucularını da kolayca ekleyebilir. Örneğin. paketlenen ürün fiyat düzenleyicisini bundle.xmldüzen dosyasında aşağıdaki gibi ekler :

<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>

Özel fiyat şablonları veya oluşturucular

Aynı mekanizmayı kullanarak varsayılan oluşturucuları geçersiz kılmak da mümkündür. Yalnızca şablonu değiştirmek ve varsayılan fiyat bloğu türünü korumak istiyorsanız addPriceBlockType, düzen dosyasını varsayılan blok (yukarıya bakın) ve şablonunuzla arayın .

Fiyat bloğunu oluşturma

Aslında fiyat bloğunu oluşturmak için kod şuna benzer:

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

$displayMinimalPriceVe $idSuffixdeğişkenler isteğe bağlı argümanlar olan getPriceHtmlyöntem.

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

$idSuffixCSS kimliği tamamlamak için fiyat şablonunda kullanılan <span>örneğin gerçek fiyatı, çevreleyen etikete:

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

@Vinai bu konuda bir şey önermek misiniz stackoverflow.com/questions/20949796/...
Mukesh

Süper özellik fiyatlandırmasını almak istersem sadece <? Php echo $ this-> getPriceHtml ($ _ ürün); ?> veya ne tür bir fiyatlandırma belirtmem gerekir? Katmanlı?
Elva Sandoval

Bu formda. Yöntem, ürün türünü belirleyecek ve fiyatı buna göre oluşturacaktır.
Vinai

merhaba @Vinai Bunu denedim, ama fiyat sabit kalır. Farklı bir fiyatta bir renk seçtiğimde değişmiyor. En yüksek fiyat değişiyor, ancak yakınlardaki aşağıya değil sepete ekle. Buraya bakın jennyyootest.com/index.php/adelle.html
Elva Sandoval

Her iki fiyatı da değiştirmek için JavaScript'i ayarlamanız gerekir.
Vinai
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.