Düzenlenemeyen bir Magento CMS Sayfasını nasıl oluştururum?


16

Magento'nun yeni bir yüklemesinde, düzenleyebileceğiniz birkaç varsayılan CMS sayfası ile birlikte gelir CMS > Pages. Bununla birlikte, birkaç "düzenlenemez" CMS Sayfası ile birlikte gelir: Orders and Returnsve Contact Us... ikisi de formları olan sayfalardır ve Magento CE'de bir form eksikliğini vurgular: form oluşturma ve düzenleme.

Varsayılan Bize Ulaşın'ı kendi formumla geçersiz kılmayı başardım, ancak başka bir form eklemek istiyorum ve gelecekte daha fazla form eklemeniz gerekebilir. Şimdiye kadar yaptığım gibi, mevcut işlevleri ve sayfaları geçersiz kılmak için Magento Modülleri oluşturmaya biraz aşinayım.

Magento'da form sayfaları oluşturma yeteneğini sağlayacak bir modül üzerinde çalışmaya başladım, ancak varsayılan formlar gibi CMS yönetimine görünmez olmaları gerekiyor. Programlı olarak bir CMS sayfası oluşturmak için cevaplar buldum, ancak bu Magento'ya ekler CMS > Pages.

Yalnızca Magento Modülü tarafından düzenlenebilir bir CMS sayfasını nasıl oluştururum?


Bunu bildiğim iyi oldu! Çapraz gönderi yapmak daha kolay mı yoksa bunu zaten buraya gönderdiğimden beri kabul edilen uygulama nedir?
andyjv

Ben "bayrak" bağlantısına tıklayın ve bir mod sizin için taşımak istiyorum. Genel olarak konuşursak çapraz gönderme hoş karşılanmaz.
John Conde

Bir CMS sayfasında özel iletişim formu arıyorsanız, bkz. Magento.stackexchange.com/questions/79602/… veya daha ayrıntılı stackoverflow.com/q/1066127/664108
Fabian Schmengler

Yanıtlar:


21

Aslında 'Bize Ulaşın' ve 'Siparişler ve iadeler' CMS sayfaları değildir. Aslında ayrı bir modülün sayfalarıdır. CMS sayfalarından çok 'Giriş' veya 'Kayıt' sayfasına benziyorlar. Böyle bir sayfa oluşturmak için bir denetleyici, bir blok ve bir şablon içeren basit bir modül oluşturabilirsiniz. Şimdi Easylife_Customform uzantısını çağıralım. Bunun için aşağıdaki dosyalara ihtiyacınız olacak.
app/etc/modules/Easylife_Customform.xml- modül bildirim dosyası

<?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 - yapılandırma dosyası

<?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 - ön uç düzen dosyası

<?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 - varsayılan modül yardımcısı

<?php
class Easylife_Customform_Helper_Data extends Mage_Core_Helper_Abstract{
}

app/design/frontend/base/default/template/easylife_customform/form.phtml - form için gerçek html - bunu ihtiyacınız gibi görün

<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 - modül kontrolörü

<?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
    }
}

Bu olmalı. Önbelleği temizleyin ve forma erişebilmelisiniz, mysite.com/customform
umarım kodu doğru yazdım ve bir şey kaçırmadım


2
gerçekten bu cevaba ekstra yol kat ettin. +1
philwinkle

@philwinkle: bu iyi mi kötü mü? :)
Marius

Gerçekten harika bir rehber Marius, teşekkür ederim! Bir sayfa başlığı ayarlamaya çalışıyorum, benim düzeni xml <label> yok sayılıyor ve bu <reference name="head"> <action method="setTitle" translate="title"><title>Subscribe to our Newsletter</title></action> </reference> çalışmaz.
Loeffel

@loeffel. Belki de başlığı geçersiz kılan başka bir şeyiniz var. Teoride kodun çalışması gerekir.
Marius

@Marius Bu çok kullanışlı, ancak Hata Mesajlarını nasıl ekleyebiliriz? Eklemeye çalıştım Mage::getSingleton('core/session')->addError("Error");ama şansım yok. Sadece gösteren başarı mesajı. Herhangi bir yardım?
Aamir Siddique
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.