Проблемы с переопределением ядра magento, свяжитесь с нами - PullRequest
2 голосов
/ 08 января 2012

Мне удалось переопределить форму обратной связи magento по умолчанию, с дополнительными полями и функциональностью, и, похоже, она работает.

Проблема в том, что когда я отключаю свой модуль в magento, вместо настроенной по умолчанию отображается моя настроенная форма для связи с нами.

Я предполагаю, что только если мой модуль активен, моя настройка (методы действия и шаблон) будет доступна / отображена.

Я думаю, что моя проблема связана с переопределением макета, блока, шаблона.

Несколько советов было бы хорошо.

Вот мой код:

Приложение / код / ​​местные / MyCompany / ContactsExtension / и т.д. / config.xml

<config>
   <modules>
        <MyCompany_ContactsExtension>
            <version>0.1.0</version>  
        </MyCompany_ContactsExtension>
   </modules>
<frontend>
    <routers>
        <contacts>
            <args> 
                <modules> 
                    <MyCompany_ContactsExtension before="Mage_Contacts">MyCompany_ContactsExtension</MyCompany_ContactsExtension> 
                </modules> 
            </args> 
        </contacts>
    </routers>
</frontend>

<global>
    <blocks>
        <contactsextension>
            <class>MyCompany_ContactsExtension_Block</class>
        </contactsextension>
    </blocks>
   <helpers>
        <contactsextension>
            <class>MyCompany_ContactsExtension_Helper</class>
        </contactsextension>
    </helpers>           
</global>
</config>

По сути, я скопировал файл contacts.xml по умолчанию и добавил свои изменения. Я думаю, что я не правильно обновил его.

приложение / дизайн / интерфейс / предприятия / MyTheme / макет / contactsextension.xml

<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/2columns-right.phtml</template></action>
        <action method="setHeaderTitle" translate="title" module="contacts"><title>Contact Us</title></action>
    </reference>
    <reference name="content">
        <block type="core/template" name="contactForm" template="contactsextension/form.phtml">
            <block type="contactsextension/additionalfield" name="contacts.addfields" as="addfields" template="contactsextension/additionalfield.phtml" />
        </block>    
    </reference>
</contacts_index_index>
</layout>

Спасибо, Duniya.

Ответы [ 2 ]

1 голос
/ 09 января 2012

Да, вам нужно определить в конфигурации вашего модуля в разделе <frontend>, что у вас есть обновления макета, такие как:

<layout>
    <updates>
        <uniquehandle>
            <file>module_layout.xml</file>
        </uniquehandle>
    </updates>
</layout>

Тогда он должен работать правильно, когда вы отключаете свой модуль. В противном случае Magento загружает все обновления макета, найденные в папке макета темы

1 голос
/ 08 января 2012

Есть два способа «отключить» расширение, я помещаю слово «отключить» в кавычки, потому что один отключает только вывод.В зависимости от того, как вы сейчас отключаете, обязательно попробуйте другой метод.

  1. В области администрирования перейдите в Система> Конфигурация> Дополнительно> Дополнительно> Отключить вывод модуля и выберите Отключить расширение.Как говорится, однако, это только отключит вывод.Если ваше расширение выполняет какую-то другую задачу, например, наблюдение за событием, оно все равно будет продолжаться.
  2. Чтобы полностью отключить расширение, перейдите в файл app / etc / modules / company_module.xml и измените значение true на false втег:

    <config>
        <modules> 
            <company_module> 
                <active>true</active> 
                <codePool>local</codePool> 
            </company_module> 
    </modules> 
    

...