Magento: блок перезаписи не работает

Я пытаюсь переписать основной файл из magento. Почему-то он не перезаписывает код. Я пытаюсь перезаписать функцию getProduct().

Типфикс/Блок/Продукт/View.php

<?php

class WP_Tipfix_Block_Catalog_Product_View extends Mage_Catalog_Block_Product_View
{

    public function getProduct()
    {

        if (!Mage::registry('product') && $this->getProductId()) {
            $product = Mage::getModel('catalog/product')->load($this->getProductId());
            Mage::register('product', $product);
        }

        //return Mage::registry('product');
    }
}

Типфикс/etc/config.xml

<blocks>
    <WP_Tipfix>
        <class>WP_Tipfix_Block</class>
    </WP_Tipfix>
    <catalog>
        <rewrite>
            <product_view>WP_Tipfix_Block_Catalog_Product_View</product_view>
        </rewrite>
    </catalog>
</blocks>

Я знаю, что я делаю неправильно.

гр. Лекс


person Lexperts    schedule 05.03.2012    source источник
comment
К вашему сведению, группа классов <WP_Tipfix> не нужна, если только вы не создаете блочные классы.   -  person benmarks    schedule 05.03.2012


Ответы (2)


Ваш класс WP_Tipfix_Block_Catalog_Product_View, что означает, что он должен находиться в папке WP/Tipfix/Block/Catalog/Product/View.php. Вы должны либо переместить свой каталог Product в новый каталог с именем Catalog в этом месте, либо переименовать свой класс (как класс, так и в XML) в WP_Tipfix_Block_Product_View. Я рекомендую переместить файл .

person Max    schedule 05.03.2012
comment
Вы также должны очистить кеш, если это не работает! - person Black; 16.11.2018

Пожалуйста, измените config.xml содержимое вашего модуля на это, и я уверен, что это должно работать: -

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <modules>
        <WP_Tipfix>
            <version>1.0.0</version>
        </WP_Tipfix>
    </modules>

    <global>
        <blocks>
            <wptipfix>
                <class>WP_Tipfix_Block</class>
            </wptipfix>

            <catalog>
                <rewrite>
                    <product_view>WP_Tipfix_Block_Catalog_Product_View</product_view>
                </rewrite>
            </catalog>
        </blocks>
    </global>
</config>

Надеюсь, поможет.


ОБНОВЛЕНИЕ:- После комментария Бена я чувствую, что должен был упомянуть, что ОП также должен использовать решение, упомянутое Максом в его ответ. Таким образом, ОП потребуются совместные усилия, чтобы решить его проблему.

person Knowledge Craving    schedule 05.03.2012
comment
Спасибо, что устранили проблему. Здорово! - person Lexperts; 05.03.2012
comment
Это решение не могло решить проблему, основанную на исходном коде OP. - person benmarks; 05.03.2012
comment
@Ben - Пожалуйста, внимательно изучите содержимое файла config.xml, чтобы обнаружить, что в нем нет упоминания ни о каком узле config, ни об узле modules. Итак, я предоставил это решение, и на самом деле ОП сам прокомментировал, что оно решило его проблему. Можете ли вы сказать мне, что я сделал не так? - person Knowledge Craving; 05.03.2012
comment
Как вы предполагаете в своем редактировании, переписанное имя класса будет разрешено автозагрузчиком до WP/Tipfix/Block/Catalog/Product/View.php, поэтому ответ Макса является правильным решением, если предположить, что OP вырезал конфигурацию для краткости. Кроме того, номер версии и группа классов совершенно не нужны для перезаписи. - person benmarks; 06.03.2012
comment
@Ben - то, что OP разместил в файле config.xml, было не фрагментом, а полным исходным кодом страницы, иначе OP не прокомментировал бы эту ссылку: stackoverflow.com/questions/9565715/. Кроме того, если вы считаете, что мой пост где-то неверен, пожалуйста, отметьте его как неправильный и вы можете удалить его. У меня не будет сомнений по этому поводу. - person Knowledge Craving; 06.03.2012
comment
Моя главная мысль заключалась в том, что ваше решение не учитывало неправильное расположение файла. Более того, правильный ответ был опубликован, но ОП принял ваш ответ, поэтому я хотел, чтобы комментарий был для потомков и для любого человека, который уже сослался на ваш ответ как на авторитетный. - person benmarks; 06.03.2012