En fait, «Contactez-nous» et «Commandes et retours» ne sont pas des pages CMS. Ce sont en fait des pages d'un module distinct. Ils ressemblent plus à la page «Connexion» ou «Inscription» qu'à des pages CMS. Pour créer une page comme celle-ci, vous pouvez créer un module simple avec un contrôleur, un bloc et un modèle. Appelons l'extension Easylife_Customform. Pour cela, vous aurez besoin des fichiers suivants.
app/etc/modules/Easylife_Customform.xml
- fichier de déclaration de module
<?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
- fichier de configuration
<?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
- fichier de mise en page frontend
<?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
- assistant de module par défaut
<?php
class Easylife_Customform_Helper_Data extends Mage_Core_Helper_Abstract{
}
app/design/frontend/base/default/template/easylife_customform/form.phtml
- le html réel du formulaire - donnez l'impression que vous avez besoin
<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
- le contrôleur de module
<?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
}
}
Ça devrait être ça. Videz le cache et vous devriez pouvoir accéder au formulaire sur mysite.com/customform
J'espère avoir écrit le code correctement et ne rien manquer