2011-07-29 15 views
14

app\locale\en_US\template\email\sales\order_new.html प्रश्न में फ़ाइल है।संपादन Magento बिक्री ई-मेल भुगतान ब्लॉक

साइट के अन्य अनुभागों को प्रभावित किए बिना {{var payment_html}} को संपादित करने के बारे में कोई कैसे जाएगा?

ऐसा लगता है कि खंड से आता है: app\design\frontend\base\default\template\payment\info\default.phtml

मैं इस बारे में सही हूँ? लेकिन उस फ़ाइल का उपयोग साइट पर अन्य स्थानों पर किया जाता है। क्या यह भी सही है?

मैं एक अलग फ़ाइल बनाना चाहता हूं, default_email.phtml कहें, इसे अलग से स्टाइल करें, और order_new.phtml के बजाय नई फ़ाइल शामिल करें।

मुझे लगता है कि मुझे में मेरी default_email.phtml फ़ाइल शामिल करने की आवश्यकता है। मैं यह कहां करूं?

उत्तर

0

/app/code/core/Mage/Sales/Model/Order.php में "sendNewOrderEmail" नामक एक विधि है। यही वह है जिसे आपको प्रभावित करने की आवश्यकता है। आप नीचे दिए गए कोड को समान मिलेगा:

$mailTemplate->setDesignConfig(array('area'=>'frontend', 'store'=>$this->getStoreId())) 
       ->sendTransactional(
        $template, 
        Mage::getStoreConfig(self::XML_PATH_EMAIL_IDENTITY, $this->getStoreId()), 
        $recipient['email'], 
        $recipient['name'], 
        array(
         'order'   => $this, 
         'billing'  => $this->getBillingAddress(), 
         'payment_html' => $paymentBlock->toHtml(), //Just change this line 
        ) 
       ); 

आप देख सकते हैं यह है कि इस जहाँ "payment_html" डेटा सेट हो जाता है। बस इसे उस चीज़ पर स्वैप करें जिसे आप चाहते हैं।

6

पहली बात मैंने Magento के स्रोत कोड में खोज की थी। {{var payment_html}} मानते हैं कि कहीं भी payment_html पर खोज की गई है। कई परिणाम खोज से मेल खाते हैं;

Mage_Sales_Model_Order 
Mage_Sales_Model_Order_Creditmemo 
Mage_Sales_Model_Order_Invoice 
Mage_Sales_Model_Order_Shipment 

तो उस भुगतान ब्लॉक की जानकारी वहां मौजूद है। मैंने Mage_Sales_Model_Order लिया और चर $paymentBlockHtml को चेक किया। यह भुगतान जानकारी द्वारा भुगतान ब्लॉक भरने के लिए और तर्क के लिए इंगित किया गया है। यह एक ब्लॉक बना रहा है और ऐसा लगता है कि पहली बार विस्तार/परिवर्तन/संशोधित करना आसान नहीं है। हां, हम विशिष्ट (भुगतान) ब्लॉक प्रकार पर एक टेम्पलेट लागू कर सकते हैं क्योंकि एक ब्लॉक बनाया गया है, लेकिन हम आसानी से जांच नहीं सकते कि हम कौन सा ब्लॉक लोड करना चाहते हैं। इसके अलावा टेम्पलेट Mage_Payment_Block_Info

के निर्माण में ओवरराल्ड किया गया है चलिए दूसरी तरफ जांचें।

चलो कुछ अच्छा करते हैं, हम ईमेल में एक ब्लॉक क्यों नहीं जोड़ते हैं जिसमें सही जानकारी होती है लेकिन अधिक महत्वपूर्ण है जहां सही मामले में स्विच करना संभव है। चूंकि टेम्पलेट पार्सर का उपयोग चर और लेआउट हैंडल को पार्स करने के लिए किया जाता है, इसलिए हम {{var payment_html}} ब्लॉक के बजाय निम्नलिखित को जोड़ सकते हैं और उस जानकारी को ब्लॉक में ही पुनर्प्राप्त कर सकते हैं।

{{block type='core/template' template='email/templatename.phtml'}} 

ऊपर कोड ईमेल, जिसका अर्थ है आप उस टेम्पलेट में कुछ भी कर सकता है कि सही डेटा दिखाने के लिए में ई-मेल/templatename.phtml को पार्स कर रहा है। इससे पहले कि हम इस टेम्पलेट में भुगतान डेटा पुनर्प्राप्त कर सकें, हमें ऑर्डर डेटा के साथ ऑर्डर तर्क जोड़ना होगा। यह काफी सरल है;

{{block type='core/template' order=$order template='email/templatename.phtml'}} 

टेम्पलेट में हम किसी अन्य तरीके से डेटा भुगतान जानकारी प्राप्त कर सके, या $this->getOrder->getPayment()->toHtml() या की प्रक्रिया $this->getOrder()->getPayment() कर सकते हैं।

बोनस; एक और समाधान लेआउट हैंडल के साथ काम कर रहा है और सही टेम्पलेट सेट करता है और उसी ईमेल में ऑर्डर आइटम्स के उदाहरण के नीचे लेआउट.एक्सएमएल में टाइप करता है। यह ब्लॉक के समान काम कर रहा है, लेकिन केवल लेआउट xml में कुछ सेटिंग्स के साथ।

{{layout handle="sales_email_order_items" order=$order}} 
0

मुझे एक ही समस्या थी। मैंने केवल ईमेल को बदलने के लिए क्या किया था भुगतान जानकारी वर्ग में निम्नलिखित जोड़ दिया गया था।

protected function _construct() { 
    parent::_construct(); 
    $this->setTemplate('payment/info/{new template}.phtml'); 
} 

फिर टेम्पलेट बना सकते हैं और यदि यह भुगतान तरीका प्रयोग किया जाता है ईमेल भुगतान अनुभाग के लिए इस टेम्पलेट डाल देंगे।

आशा है कि यह सहायक है!

संबंधित मुद्दे