Почему мой пользовательский модуль Magento переопределяет весь основной модуль и не дает результатов? - PullRequest
2 голосов
/ 07 июля 2011

Я работал над моим первым модулем Magento, который предназначен для расширения класса Mage_Page_Block_Html_Head и изменения функциональности getDefaultTitle (). Просто верно?

Я создаю новый файл с именем Title.php в каталоге моего модуля local / Company / Metadata / Block и в Title.php следующий код:

<?php
class Company_Metadata_Block_Title extends Mage_Page_Block_Html_Head
{

}

Я даже не начал настраивать функциональность getDefaultTitle () и, похоже, уже скучаю по лодке.

Когда я загружаю новый модуль, он переопределяет все содержимое Head страницы, созданной Mage_Page_Block_Html_Head, и в моем Html появляются пустые теги head. Как это:

<head></head>

Куда я иду не так? Разве вышеприведенный код (или его отсутствие) в Title.php не должен позволить расширенному классу делать свое дело, пока не будет сказано иначе?

Вот мой конфигурационный файл для модуля:

<config>

<modules>
    <Company_Metadata>
        <version>0.0.1</version>
    </Company_Metadata>
</modules>

<global>
    <blocks>
        <page>
            <rewrite>
                <html_head>Company_Metadata_Block_Title</html_head>
            </rewrite>
        </page>
    </blocks>
</global>

</config>

Ответы [ 4 ]

2 голосов
/ 07 июля 2011

Я предполагаю, что вы должны объявить свой класс блоков в config.xml.Действительно, Magento понимает, что вы хотите переопределить Head, но не находит классов Block для использования.

Пожалуйста, попробуйте этот config.xml:

<modules>
    <Company_Metadata>
        <version>0.0.1</version>
    </Company_Metadata>
</modules>

<global>
    <blocks>


        <metadata>
            <class>Company_Metadata_Block</class>
        </metadata>


        <page>
            <rewrite>
                <html_head>Company_Metadata_Block_Title</html_head>
            </rewrite>
        </page>
    </blocks>
</global>

1 голос
/ 09 июля 2011

Убедитесь, что у вас не отключен вывод для вашего модуля. Перезаписи все еще обрабатываются с отключенным выводом, но модуль не может ничего показать, даже если он вызывает родительские методы

0 голосов
/ 20 января 2012

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

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

0 голосов
/ 07 июля 2011

Вы можете попробовать объявить getTitle () и вернуть родительский метод. Кроме того, узел <modules> должен находиться в app / etc / modules / Company_Metadata.xml, в то время как ваш будет работать, поскольку Magento объединяет все XML в одно большое дерево, которое используется для согласованности (здравомыслия). Также есть много других методов в Head.php, посмотрите, работают ли они по-прежнему правильно, если это так, то ваши xml-перезаписи работают правильно.

<?php
class Company_Metadata_Block_Title extends Mage_Page_Block_Html_Head
{
    public function getTitle()
    {
        return parent::getTitle();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...