Làm thế nào kết xuất của price.phtml trong trang danh sách sản phẩm danh mục đang xảy ra?


12

Danh mục tập tin mẫu của trang danh sách sản phẩm là list.phtml. Trường hợp kết xuất tất cả các sản phẩm trong danh mục xảy ra bằng cách sử dụng foreachvòng lặp.

Tôi bối rối về kết xuất của price.phtml. Bởi vì không có khối cho nó trong xử lý<catalog_category_default>

Bây giờ, <?php echo $this->getPriceHtml($_product, true) ?>trả lại giá của sản phẩm.

Làm thế nào phương pháp này được liên kết đến price.phtml?


tìm kiếm "price.phtml" trong catalog.xml trong cơ sở / mặc định / your_theme, nó sẽ là khối con cho khối chứa list.phtml.
Shathish

Câu trả lời:


12

Hiển thị giá sản phẩm

Phương thức getPriceHtml()được định nghĩa trong lớp khối Mage_Catalog_Block_Product_Abstract.

Phương pháp sử dụng trình kết xuất giá phụ thuộc vào loại sản phẩm:

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

Trình kết xuất giá là một khối có mẫu liên quan. Cả hai đều phụ thuộc vào loại sản phẩm.

Nếu không có khối hoặc mẫu được xác định cho loại sản phẩm được chỉ định, nó sẽ mặc định cho catalog/product_pricekhối và catalog/product/price.phtmlmẫu.

Đâu là trình kết xuất giá và mẫu cho các loại sản phẩm được xác định?

Các khối giá và trình kết xuất thường được chỉ định bằng cách sử dụng XML bố cục, do đó, các mô-đun thêm loại sản phẩm mới cũng có thể dễ dàng thêm trình kết xuất của riêng chúng. Ví dụ. sản phẩm đi kèm thêm trình kết xuất giá của nó như sau trong bundle.xmltệp bố cục:

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

Mẫu giá hoặc trình kết xuất tùy chỉnh

Sử dụng cùng một cơ chế, nó cũng có thể ghi đè các trình kết xuất mặc định. Nếu bạn chỉ muốn thay đổi mẫu và giữ loại khối giá mặc định, chỉ cần gọi addPriceBlockTypetệp bố cục với khối mặc định (xem bên trên) và mẫu của bạn.

Kết xuất khối giá

Mã để thực sự kết xuất khối giá trông như thế này:

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

Các biến $displayMinimalPrice$idSuffixlà các đối số tùy chọn cho getPriceHtmlphương thức.

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

Ví dụ, $idSuffixđược sử dụng trong mẫu giá để hoàn thành id CSS của <span>thẻ xung quanh giá thực tế, ví dụ:

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

@Vinai bạn có thể vui lòng đề xuất một cái gì đó trên stackoverflow.com/questions/20949796/
Mukesh

Nếu tôi muốn có được giá siêu thuộc tính, tôi chỉ cần sử dụng <? Php echo $ this-> getpriceHtml ($ _ sản phẩm); ?> hoặc tôi cần chỉ định loại giá nào? Bậc thang?
Elva Sandoval

Đúng. Phương pháp sẽ xác định loại sản phẩm và đưa ra giá phù hợp.
Vinai

hi @Vinai Tôi đã thử làm điều đó, nhưng giá vẫn cố định. Nó không thay đổi khi tôi chọn một màu có giá khác. Giá hàng đầu không thay đổi, nhưng không giảm xuống dưới gần thêm vào giỏ hàng. Xem tại đây jennyyootest.com/index.php/adelle.html
Elva Sandoval

Bạn phải điều chỉnh JavaScript để thay đổi cả hai mức giá.
Vinai
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.