Свяжитесь с Нами Расширение Формы не работает
Позвольте мне предварить это тем фактом, что я на 100% новичок в Magento.
Я пытаюсь расширить страницу "Свяжитесь с нами", чтобы позволить мне добавить на страницу некоторую информацию, например форму, в которой ее нельзя изменить с помощью CMS (в частности, информацию об адресе для начала). Я провел массу поисковых запросов в Google и рассмотрел похожие вопросы здесь (это, кажется, ближе всего: Форма "Свяжитесь с нами" не отображается), но я не понимаю этого.
Я пробовали различные методы решения, но в настоящее время я пытаюсь добавить блок. Все, что я пытаюсь сделать на данный момент, - это показать "специальный" текст на странице вместе с формой. Понимаю, что это может быть неправильно, просто ищу какое-то направление в том, кем я являюсь потерянный.
Код:
Etc/modules/TPW_Contacts.xml
<?xml version="1.0"?>
<config>
<modules>
<TPW_Contacts>
<active>true</active>
<codePool>local</codePool>
</TPW_Contacts>
</modules>
</config>
App/code/local/TPW/Contacts/controllers/IndexController.php
<?php
require_once Mage::getModuleDir('controllers', 'Mage_Contacts') . DS . 'IndexController.php';
class TPW_Contacts_IndexController extends Mage_Contacts_IndexController
{
public function indexAction()
{
$this->loadLayout();
$this->renderLayout();
}
}
?>
App/code/local/TPW/Contacts/etc/config.xml
<?xml version="1.0"?>
<config>
<modules>
<TPW_Contacts>
<version>0.1.0</version>
</TPW_Contacts>
</modules>
<global>
<blocks>
<contacts>
<class>TPW_Contacts_Block</class>
</contacts>
</blocks>
</global>
<frontend>
<routers>
<contacts>
<args>
<modules>
<TPW_Contacts before="Mage_Contacts">TPW_Contacts</TPW_Contacts>
</modules>
</args>
</contacts>
</routers>
</frontend>
</config>
App/design/frontend/enterprise/hellov/layout/contacts.xml
<?xml version="1.0"?>
<layout version="0.1.0">
<default>
<reference name="footer_links">
<action method="addLink" translate="label title" module="contacts" ifconfig="contacts/contacts/enabled"><label>Contact Us</label><url>contacts</url><title>Contact Us</title><prepare>true</prepare></action>
</reference>
</default>
<contacts_index_index translate="label">
<label>Contact Us Form</label>
<reference name="head">
<action method="setTitle" translate="title" module="contacts"><title>Contact Us</title></action>
</reference>
<reference name="root">
<action method="setTemplate"><template>page/1column.phtml</template></action>
<action method="setHeaderTitle" translate="title" module="contacts"><title>Contact Us</title></action>
</reference>
<reference name="content">
<block type="contacts/location" name="contacts.locationinfo" template="contacts/locationinfo.phtml"/>
</reference>
<reference name="content">
<block type="core/template" name="contactForm" template="contacts/form.phtml"/>
</reference>
</contacts_index_index>
</layout>
App/code/local/TPW/Contacts/Block/Contacts.php
<?php
class TPW_Contacts_Block_Location extends Mage_Core_Block_Template
{
public function getLocation()
{
return 'This is my address!';
}
}
?>
Приложение/дизайн/интерфейс/предприятие/hellov/шаблон/контакты/locationinfo.phtml
<p><?php echo $this->getLocation(); ?></p>
Ваш помощь приветствуется. Спасибо!
2 answers
Проблема 1: Также, как и вы used blocks type
в contacts/location
, это означает, что этот класс должен быть mage_contacts_block_location.
Как этот class not exits
, то override
этот класс using another class
<global>
<blocks>
<contacts>
<class>TPW_Contacts_Block</class>
</contacts>
</blocks>
</global>
Изменить на
<global>
<blocks>
<customcontacts>
<class>TPW_Contacts_Block</class>
</customcontacts>
<contacts>
<rewrite>
<location>TPW_Contacts_Block_Location</location>
<rewrite>
<contacts>
</blocks>
</global>
Проблема 2: Другая проблема с расположением файла:
Как TPW_Contacts_Block_Location, если местоположение должно быть app/code/local/TPW/Contacts/Block/Location.php
из app/code/local/TPW/Contacts/Block/Contacts.php
Шаг 3:
ваш текущий indexAction
не set form post action
.В default magento from post action
задается из Функция индексации Mage_Contacts_IndexКонтроллер.Если ваш rewrite class indexAction
класс inherit parent class then post action easy come
Итак, вам нужно перейти от
public function indexAction()
{
$this->loadLayout();
$this->renderLayout();
}
До
public function indexAction()
{
parent::indexAction();
}
В <frontend>
вы забыли добавить нижеприведенную строку.
<layout>
<updates>
<contacts>
<file>contacts.xml</file>
</contacts>
</updates>
</layout>
Поэтому он не будет вызывать ваш файл contacts.xml
.