Свяжитесь с Нами Расширение Формы не работает


Позвольте мне предварить это тем фактом, что я на 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>

Ваш помощь приветствуется. Спасибо!

Author: Community, 2014-09-04

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 actiondefault 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();

    }
 0
Author: Amit Bera, 2014-09-04 17:36:25

В <frontend> вы забыли добавить нижеприведенную строку.

 <layout>
  <updates>
    <contacts>
      <file>contacts.xml</file>
    </contacts>
  </updates>
</layout>

Поэтому он не будет вызывать ваш файл contacts.xml.

 0
Author: Keyul Shah, 2014-09-04 16:35:42