#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.xml5. Переместил его, обновил кеши; все еще не работает.