कैटलॉग उत्पाद सूची पृष्ठ में price.phtml का प्रतिपादन कैसे हो रहा है?


12

कैटलॉग उत्पाद सूची पृष्ठ की टेम्पलेट फ़ाइल है list.phtml। जहां श्रेणी के सभी उत्पादों का प्रतिपादन foreachलूप का उपयोग करके होता है।

मैं के प्रतिपादन के बारे में उलझन में हूँ price.phtml। क्योंकि हैंडल में इसके लिए कोई ब्लॉक नहीं है<catalog_category_default>

अब, <?php echo $this->getPriceHtml($_product, true) ?>उत्पाद की कीमत लौटाता है।

यह विधि किस प्रकार से जुड़ी है price.phtml?


बेस / डिफॉल्ट / your_theme में कैटलॉग। xml में "price.phtml" सर्च करें, यह लिस्ट वाले ब्लॉक का चाइल्ड ब्लॉक होगा। phtml।
शतहिश

जवाबों:


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टेम्पलेट को डिफॉल्ट करता है।

उत्पाद प्रकारों के लिए मूल्य रेंडरर्स और टेम्पलेट कहां परिभाषित किए गए हैं?

मूल्य ब्लॉक और रेंडरर्स आमतौर पर लेआउट एक्सएमएल का उपयोग करके निर्दिष्ट किए जाते हैं, इसलिए नए उत्पाद प्रकार जोड़ने वाले मॉड्यूल आसानी से अपने स्वयं के रेंडरर्स भी जोड़ सकते हैं। उदाहरण के लिए। बंडल किए गए उत्पाद 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के सीएसएस आईडी पूरा करने के लिए कीमत टेम्पलेट में प्रयोग किया जाता है <span>वास्तविक कीमत, उदाहरण के लिए आसपास के टैग:

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


अगर मैं सुपर विशेषता मूल्य प्राप्त करना चाहता था, तो मैं बस उपयोग करूंगा <; php इको $ यह-> getPriceHtml ($ _ उत्पाद); ?> या मुझे किस प्रकार के मूल्य निर्धारण को निर्दिष्ट करने की आवश्यकता है? Tiered?
एल्वा सैंडोवल

Corrent। विधि उत्पाद के प्रकार का निर्धारण करेगी और उसके अनुसार मूल्य प्रदान करेगी।
विनय

हाय @Vinai मैंने ऐसा करने की कोशिश की, लेकिन कीमत स्थिर है। जब मैं एक ऐसे रंग का चयन करता हूं जो अलग-अलग कीमत का होता है तो यह नहीं बदलता है। शीर्ष मूल्य में परिवर्तन होता है, लेकिन कार्ट में जोड़ के नीचे एक नीचे नहीं। यहाँ देखें jennyyootest.com/index.php/adelle.html
Elva सैंडोवल

आपको दोनों कीमतों को बदलने के लिए जावास्क्रिप्ट को समायोजित करना होगा।
विनई
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.