2012-01-07 2 views
2

Мне удалось переопределить формуляр по умолчанию для контакта с magento, с дополнительными полями и функциональностью, и, похоже, он работает.Проблемы с переопределением основного ядра 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.

ответ

1

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

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

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

+0

Спасибо, имеет смысл. Я ранее пробовал это, когда нашел другое сообщение stackoverflow о layout.xml. Я добавил обновление макета, как вы сказали. Однако теперь, когда я загружаю страницу контакта в браузере, форма отображается дважды на странице. 2.если я отключу модуль в приложении/etc/modules/company_module.xml, он отобразит форму по умолчанию. Однако, если я отключу модуль в admin, он использует мою модифицированную форму. Есть идеи? Кроме того, что является лучшим способом переопределить макет xml. Должен ли я скопировать contacts.xml в мою тему и внести некоторые изменения. Есть ли какие-либо специальные теги, которые мне нужно использовать в скопированном файле? Приветствия. – user1136431

+0

Я думаю, вам нужно удалить форму по умолчанию, используя директиву '', чтобы избежать дублирования. Во второй части вашего вопроса: отключить вывод модуля не отключает инструкции компоновки макета, поэтому вам нужно добавить дополнительную проверку для этого случая с помощью инструкции ifconfig. Некоторая проницательность здесь http://stackoverflow.com/questions/5596193/magento-xml-layouts-specify-value-for-ifconfig – Zifius

1

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

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

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

+0

Большое спасибо за ваш ответ. Однако я знаю, как отключать модули в пурпуре. Однако моя проблема связана с переопределением основного модуля. Когда я отключу свой модуль, magento все еще использует мой измененный шаблон для связи с нами, а не с шаблоном по умолчанию. Если кто-то может проверить мои файлы конфигурации, которые будут полезны. Как мне переопределить макет модуля xml и шаблон. Нужно ли скопировать макет contacts.xml и поместить его в мою тему? Нужно ли добавить что-то в конфигурацию модуля, чтобы включить файл макета? Cheers – user1136431

Смежные вопросы