การแสดงผลของ price.phtml ในหน้ารายการผลิตภัณฑ์แคตตาล็อกเกิดขึ้นได้อย่างไร?


12

list.phtmlแคตตาล็อกรายการผลิตภัณฑ์แฟ้มแม่แบบหน้าเป็น ตำแหน่งที่การแสดงผลของผลิตภัณฑ์ทั้งหมดในหมวดหมู่เกิดขึ้นโดยใช้การforeachวนซ้ำ

price.phtmlฉันกำลังสับสนเกี่ยวกับการแสดงผลของ เพราะไม่มีบล็อกสำหรับมันในการจัดการ<catalog_category_default>

ตอนนี้<?php echo $this->getPriceHtml($_product, true) ?>ส่งคืนราคาของผลิตภัณฑ์

วิธีการนี้เชื่อมโยงกับprice.phtml?


ค้นหา "price.phtml" ใน catalog.xml ใน base / default / your_theme มันจะเป็น child child ไปยัง block ที่มี 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 ของ<span>แท็กโดยรอบราคาที่แท้จริงตัวอย่างเช่น:

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

@Vinai คุณจะกรุณาแนะนำสิ่งที่เกี่ยวกับเรื่องนี้stackoverflow.com/questions/20949796/...
Mukesh

ถ้าฉันต้องการได้รับการกำหนดราคาคุณสมบัติพิเศษฉันจะใช้ <? php echo $ this-> getPriceHtml ($ _ product); ?> หรือฉันต้องระบุการกำหนดราคาประเภทใด ฉัตร?
Elva Sandoval

Corrent วิธีการจะกำหนดประเภทของผลิตภัณฑ์และแสดงราคาตาม
Vinai

สวัสดี @Vinai ฉันพยายามทำแบบนั้น แต่ราคาคงที่ จะไม่เปลี่ยนแปลงเมื่อฉันเลือกสีที่มีราคาแตกต่างกัน ราคาสูงสุดไม่เปลี่ยนแปลง แต่ไม่ได้ลงราคาด้านล่างใกล้กับสั่งซื้อ ดูที่นี่jennyyootest.com/index.php/adelle.html
Elva Sandoval

คุณต้องปรับ JavaScript เพื่อเปลี่ยนราคาทั้งสอง
Vinai
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.