मैं एक गैर-संपादन योग्य Magento CMS पेज कैसे बनाऊँ?


16

Magento की एक नई स्थापना पर, यह कई डिफ़ॉल्ट CMS पृष्ठों के साथ आता है जिन्हें आप संपादित कर सकते हैं CMS > Pages। हालांकि, यह "गैर-संपादन योग्य" सीएमएस पेजों के एक जोड़े के साथ भी आता है: Orders and Returnsऔर Contact Us... दोनों ही उन पर रूपों के साथ पृष्ठ हैं, और Magento CE में एक कमी पर प्रकाश डाला गया: बनाने और संपादन रूपों।

मैं अपने स्वयं के फ़ॉर्म के साथ डिफ़ॉल्ट हमसे संपर्क करने में असमर्थ हूं, लेकिन मैं एक और फ़ॉर्म जोड़ना चाहूंगा, और भविष्य में और फ़ॉर्म जोड़ने की आवश्यकता हो सकती है। मैं मौजूदा कार्यों और पृष्ठों को ओवरराइड करने के लिए Magento मॉड्यूल बनाने के साथ कुछ परिचित हूं, जैसा कि मैंने इस प्रकार किया है।

मैंने एक ऐसे मॉड्यूल पर काम करना शुरू कर दिया है जो मैगनेटो में फॉर्म पेज बनाने की क्षमता को सक्षम करेगा, लेकिन उन्हें सीएमएस प्रबंधन के लिए अदृश्य होना होगा जैसे कि डिफ़ॉल्ट फॉर्म हैं। मुझे प्रोग्राम को CMS पेज बनाने के उत्तर मिले हैं, लेकिन यह Magento के लिए इसे जोड़ता है CMS > Pages

मैं एक CMS पेज कैसे बनाऊं जो केवल Magento के मॉड्यूल द्वारा संपादन योग्य हो?


जानकार अच्छा लगा! क्या यह क्रॉस-पोस्ट करने के लिए कोषेर है या मैंने जो पहले से यहां पोस्ट किया है, उसके बाद से क्या स्वीकार किया जाता है?
एंडवेज

मैं "फ्लैग" लिंक पर क्लिक करता हूं और आपके लिए इसे स्थानांतरित करने के लिए एक मॉड पूछता हूं। सामान्यतया क्रॉस-पोस्टिंग पर बात की जाती है।
जॉन कोनडे

यदि आप CMS पेज के भीतर एक कस्टम संपर्क फ़ॉर्म की तलाश कर रहे हैं, तो magento.stackexchange.com/questions/79602/… या अधिक विस्तृत stackoverflow.com/q/1066127/664108
Fabian Schmengg

जवाबों:


21

वास्तव में 'हमसे संपर्क करें' और 'आदेश और रिटर्न' सीएमएस पृष्ठ नहीं हैं। वे वास्तव में एक अलग मॉड्यूल से पेज हैं। वे 'लॉगिन' या 'रजिस्टर' पृष्ठ की तरह सीएमएस पृष्ठों की तरह हैं। इस तरह एक पेज बनाने के लिए आप एक नियंत्रक, एक ब्लॉक और एक टेम्पलेट के साथ एक सरल मॉड्यूल बना सकते हैं। एक्सटेंशन को कॉल करें Easylife_Customform। इसके लिए आपको निम्न फाइलों की आवश्यकता होगी।
app/etc/modules/Easylife_Customform.xml- मॉड्यूल घोषणा फ़ाइल

<?xml version="1.0"?>
<config>
    <modules>
        <Easylife_Customform>
            <active>true</active>
            <codePool>local</codePool>
        </Easylife_Customform>
    </modules>
</config>

app/code/local/Easylife/Customform/etc/config.xml - कॉन्फ़िगर फ़ाइल

<?xml version="1.0"?>
<config>
    <modules>
        <Easylife_Customform>
            <version>0.0.1</version>
        </Easylife_Customform>
    </modules>
    <global>
        <blocks>
            <customform><!-- block alias -->
                <class>Easylife_Customform_Block</class>
            </customform>
        </blocks>
        <helpers>
            <customform><!-- helper alias -->
                <class>Easylife_Customform_Helper</class>
            </customform>
        </helpers>
    </global>
    <frontend>
        <routers>
            <customform>
                <use>standard</use>
                <args>
                    <module>Easylife_Customform</module>
                    <frontName>customform</frontName><!-- url key for module -->
                </args>
            </customform>
        </routers>
        <layout>
            <updates>
                <easylife_customform>
                    <file>easylife_customform.xml</file><!-- frontend layout file -->
                </easylife_customform>
            </updates>
        </layout>
        <translate>
            <modules>
                <Easylife_Customform>
                    <files>
                        <default>Easylife_Customform.csv</default><!-- translation file (not mandatory) -->
                    </files>
                </Easylife_Customform>
            </modules>
        </translate>
    </frontend>
</config>

app/design/frontend/base/default/layout/easylife_customform.xml - फ्रंटएंड लेआउट फ़ाइल

<?xml version="1.0"?>
<layout>
    <customform_index_index translate="label" module="customform">
        <label>Custom form</label>
        <reference name="root">
            <action method="setTemplate"><template>page/2columns-right.phtml</template></action><!-- can be different -->
        </reference>        
        <reference name="content">
            <block type="core/template" name="customform" template="easylife_customform/form.phtml" /><!-- content of page -->
        </reference>
    </customform_index_index>
</layout>

app/code/local/Easylife/Customform/Helper/Data.php - डिफ़ॉल्ट मॉड्यूल सहायक

<?php
class Easylife_Customform_Helper_Data extends Mage_Core_Helper_Abstract{
}

app/design/frontend/base/default/template/easylife_customform/form.phtml - फॉर्म के लिए वास्तविक html - इस तरह से बनाएं जैसे आपको ज़रूरत हो

<form action="<?php echo $this->getUrl('customform/index/send')?>">
    <input type="text" name="name" />
    <input type="submit" />
</form>

app/code/local/Easylife/Customform/controllers/IndexController.php - मॉड्यूल नियंत्रक

<?php 
class Easylife_Customform_IndexController extends Mage_Core_Controller_Front_Action{
    public function indexAction(){ //this will display the form
        $this->loadLayout();
        $this->_initLayoutMessages('core/session'); //this will allow flash messages
        $this->renderLayout();
    }
    public function sendAction(){ //handles the form submit
        $post = $this->getRequest()->getPost();
        //do something with the posted data
        Mage::getSingleton('core/session')->addSuccess($this->__('Your message was sent'));//add success message.
        $this->_redirect('*/*');//will redirect to form page
    }
}

यह होना चाहिए। कैश साफ़ करें और आप फॉर्म को एक्सेस करने में सक्षम होना चाहिए mysite.com/customform
मुझे आशा है कि मैंने कोड सही ढंग से लिखा था और कुछ याद नहीं किया था


2
आप वास्तव में इस उत्तर पर अतिरिक्त मील गए। +1
परिकल्पना

@ एफिलविंकल: वह अच्छा है या बुरा? :)
मेरियस

वास्तव में महान गाइड मारियस, धन्यवाद! मैं एक पृष्ठ शीर्षक सेट करने का प्रयास कर रहा हूं, मेरे लेआउट xml में <लेबल> को अनदेखा किया जा रहा है और यह <reference name="head"> <action method="setTitle" translate="title"><title>Subscribe to our Newsletter</title></action> </reference> काम नहीं करेगा।
लोफेल

@loeffel। हो सकता है कि आपके पास कुछ और हो जो शीर्षक से आगे निकल जाए। सिद्धांत रूप में कोड को काम करना चाहिए।
मरिअस

@ मार्स यह बहुत आसान है, लेकिन हम त्रुटि संदेश कैसे जोड़ सकते हैं? मैंने जोड़ने की कोशिश की Mage::getSingleton('core/session')->addError("Error");लेकिन कोई किस्मत नहीं। यह केवल सफलता संदेश दिखा रहा है। कोई मदद?
आमिर सिद्दीकी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.