Простой модуль Magento: обновление макета не работает

#magento

#magento

Вопрос:

История

Я искал решение для этого, но ничто из того, что я могу найти, похоже, не решает проблему; Я новичок в создании модулей Magento, и для начала я пытаюсь создать очень простое изменение атрибута title.

Проблема

Все просто: это не работает (атрибут Title просто не изменяется). Я обновил все кэши и убедился, что модуль действительно загружен в Config> Advanced> Advanced.

Код:

/app/etc/modules/Acme_NewCoolModule.xml:

 <?xml version="1.0"?>
<config>
    <modules>
        <Acme_NewCoolModule>
            <active>true</active>
            <codePool>local</codePool>
        </Acme_NewCoolModule>
    </modules>
</config>
  

app/code/local/Acme/NewCoolModule/etc/config.xml:

 <?xml version="1.0"?>
<config>
    <modules>
        <Acme_NewCoolModule>
            <version>1.0.0.0</version>
        </Acme_NewCoolModule>
    </modules>
    <frontend>
        <layout>
            <updates>
                <Acme_NewCoolModule>
                    <file>acme_newcoolmodule.xml</file>
                </Acme_NewCoolModule>
            </updates>
        </layout>
    </frontend>
</config>
  

app/design/base/default/layout/acme_newcoolmodule.xml:

 <?xml version="1.0"?>
<layout>
    <default>
        <reference name="head">
            <action method="setTitle"><string>Hello World</string></action>
        </reference>
    </default>
</layout>
  

Ответ №1:

ваши Acme_NewCoolModule.xml коды содержат неправильную конфигурацию

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

У вас был </Firtal_EnhancedEcommerce> и <Firtal_NewCoolModule> в нем, и это неправильно.

Я предполагаю, что ваш namespace is Acme и имя модуля NewCoolModule

Комментарии:

1. Извините — я просто забыл изменить его с оригинала, на самом деле он написан так, как вы написали здесь. Теперь изменил его в OP.

2. @Dencker: после редактирования также ваш Acme_NewCoolМодуль неверен. Проверьте закрывающий узел </Acme_EnhancedEcommerce>

3. Спасибо за уведомление 🙂

Ответ №2:

Ваш код в /app/etc/modules/Acme_NewCoolModule.xml должен быть

/app/etc/modules/Acme_Newcoolmodule.xml

код:

1) Вместо

 <?xml version="1.0"?>
<config>
    <modules>
        <Firtal_NewCoolModule>
            <active>true</active>
            <codePool>local</codePool>
        </Firtal_EnhancedEcommerce>
    </modules>
</config>
  

Должно быть:

 <?xml version="1.0"?>
<config>
    <modules>
        <Firtal_Newcoolmodule>
            <active>true</active>
            <codePool>local</codePool>
        </Firtal_Newcoolmodule>
    </modules>
</config>
  

2) вместо app/code/local/Acme/NewCoolModule/etc/config.xml

Должно быть

app/code/local/Acme/Newcoolmodule/etc/config.xml

и код конфигурации должен быть

 <?xml version="1.0"?>
<config>
    <modules>
        <Acme_Newcoolmodule>
            <version>1.0.0.0</version>
        </Acme_Newcoolmodule>
    </modules>
    <frontend>
        <layout>
            <updates>
                <newcoolmodule>
                    <file>newcoolmodule.xml</file>
                </newcoolmodule>
            </updates>
        </layout>
    </frontend>
</config>
  

где Acme — пространство имен и Newcoolmodule — имя модуля

Краткое описание использования Magento Camel Case:

У вас есть конфигурационный узел в вашем config.xml вызывается global/models/yourpackage , в котором вы сохраняете свой префикс для своих моделей классов.

При вызове Mage::getModel('packagename/classname') Magento извлекает этот узел конфигурации, например Company_Yourmodule_Models , добавляет a _ , а затем имя класса с заглавной первой буквой:

Company_Yourmodule_Models_Classname

если у вас есть cAMElcaSe имена классов, это то же самое. Итак, допустим, имя вашего класса — className, тогда вам нужно позвонить Mage::getModel('packagename/className') , и magento преобразует его в: Company_Yourmodule_Models_ClassName

Комментарии:

1. Ах, проблема в случае с верблюдом?

2. @Dencker Смотрите мой отредактированный ответ. Вставьте приведенный выше код конфигурации и проверьте

3. Попробовал все это сейчас, предполагая, что Acme_Newcoolmodule также присутствует в первом кодовом блоке. По-прежнему не работает. Я работаю на производственном сервере (да, я знаю, я плохой мальчик), поэтому, возможно, какой-то другой модуль перезаписывает заголовок. Возможно ли сделать эквивалент CSS !important в разметке Magento?

4. Поместите макет acme_newcoolmodule.xml в свой дизайн, а не в базовую папку. Также проверьте обновление макета в config.xml

5. Переместил его, обновил кеши; все еще не работает.