2010-01-19 15 views
14

मैं Magento के साथ AJAX कॉल का उपयोग करने की कोशिश कर रहा हूँ। जब मैं अजाक्स के माध्यम से एक ब्लॉक पेज को कॉल करता हूं, तो मुझे हेड, सीएसएस, जावास्क्रिप्ट और बॉडी समेत सभी एचटीएमएल मिलते हैं। मैं केवल शरीर का हिस्सा कैसे प्राप्त करूं?Magento Ajax - केवल शरीर का हिस्सा कैसे प्राप्त करें?

उत्तर

31

यदि आप "ब्लॉक पेज" के बारे में थोड़ी अधिक जानकारी प्रदान कर सकते हैं, तो आप इस मुद्दे को समझना आसान हो सकते हैं। डिफ़ॉल्ट रूप से, Magento में सभी पृष्ठों के लिए <default> लेआउट टैग शामिल है, जो आपको AJAX कॉल पर भी पृष्ठ शीर्षलेख और पाद लेख देगा।

अतिरिक्त के बिना एक पृष्ठ भेजने के लिए, आपके पास कुछ विकल्प हैं। सबसे पहले, आप पूरी तरह से लेआउट सिस्टम से परहेज करते हुए आउटपुट को अपने आप मैन्युअल रूप से सेट कर सकते हैं।

$result = array('foo' => 'foo', 'bar' => 'bar',); 
$this->getResponse()->setBody(Zend_Json::encode($result)); 

आप भी इस विधि को संशोधित कर सकते हैं इस तरह एक कस्टम लेआउट हैंडलर का उपयोग करने के लिए:

protected function loadPage() { 
    $layout = $this->getLayout(); 
    $update = $layout->getUpdate(); 
    $update->load('your_custom_handle'); 
    $layout->generateXml(); 
    $layout->generateBlocks(); 
    $output = $layout->getOutput(); 

    $result = array('outputHtml' => $output, 'otherVar' => 'foo',); 
    $this->getResponse()->setBody(Zend_Json::encode($result));   
} 

और अपने लेआउट फ़ाइल में:

<your_custom_handle> 
    <remove name="right"/> 
    <remove name="left"/> 

    <block type="module/block" name="root" output="toHtml" template="module/template.phtml"/> 
</your_custom_handle> 
Magento एक पृष्ठ चेकआउट सुविधा के लिए ऐसा करता है

यदि आप लेआउट का उपयोग करना चाहते हैं, तो दूसरा विकल्प, वैकल्पिक डिफ़ॉल्ट लेआउट को परिभाषित करना है। जब आप Magento नियंत्रकों में $this->loadLayout(); पर कॉल करते हैं, तो आप वास्तव में <default> से नीचे के लिए एक हैंडल निर्दिष्ट कर सकते हैं। Magento उत्पाद नियंत्रक से एक उदाहरण:

$this->loadLayout('popup'); 

यह लेआउट main.xml लेआउट फ़ाइल के भीतर डिफ़ॉल्ट रूप से परिभाषित किया गया है, और popup.phtml टेम्पलेट प्रस्तुत हुई है, और अपने उपयोग के लिए उपयुक्त हो सकता है।

यदि आपको अभी भी समस्या है, तो मुझे बताएं और हम अन्य चीजों को आजमा सकते हैं। उम्मीद है की वो मदद करदे।

धन्यवाद, जो

+0

इसके लिए धन्यवाद। मुझे समय की ढेर बचाई। – Travis

+0

ध्यान दें कि यदि आप लेआउट फ़ाइल उदाहरण की प्रतिलिपि बना रहे हैं और चिपका रहे हैं, तो 'टाइप = "मॉड्यूल/ब्लॉक को वास्तविक प्रकार के Magento ब्लॉक प्रकार में बदलना सुनिश्चित करें, जैसे' type = "page/html" 'या कस्टम ब्लॉक प्रकार परिभाषित किया गया है आप मॉड्यूल के लिए। – zlovelady

+0

शानदार, सरल, प्रभावशाली ... मुझे यह पसंद है। धन्यवाद जो – OSdave

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