Magento 1.9.x - блоки не отображаются из локального модуля
-
28-09-2020 - |
Вопрос
Я создаю модуль, чтобы добавить дополнительный вызов на кнопки действия. Я не могу получить вывод для отображения.Я считаю, что я получаю либо конвенции именования, либо местоположение файла (или обоих) неправильно.
Это также может быть так, как я пытаюсь вставить блок.Я не хочу изменить файлы PHTML, если я смогу избежать этого.
Как вы можете видеть из моих файлов, я пробую ряд способов получить что-либо навести что-либо - без удачи.
Цель состоит в том, чтобы иметь возможность добавлять дополнительные кнопки CTA после добавления в корзину - такие как «образцы запроса»
Структура файла:
app
Code
local
CompanyName
CtaAttributes
Block -> CtaButtons.php
etc -> config.xml
design
frontend
base
default
layout->ctabuttons.xml
template
ctaattributes
catelog
product ->ctabuttons.phtml
.
config.xml
<config>
... includes Module and Resource
<global>
<blocks>
<ctaattributes>
<class>CompanyName_CtaAttributes_Block</class>
</ctaattributes>
</blocks>
</global>
</config>
.
ctabuttons.xml
<?xml version="1.0"?>
<layout version="0.1.0">
<catalog_product_view>
<reference name="content">
<block type="core/text_list" name="product.info.addtocart" before="addtocart" template="ctaattributes/catalog/product/ctabuttons.phtml"/>
<action method="append">
<block>ctabuttons</block>
</action>
</reference>
<reference name="product.info.addtocart">
<block type="core/text_list" name="core-text"><action method="setText"><text><![CDATA[<div>Test</div>]]></text></action></block>
</reference>
</catalog_product_view>
</layout>
.
ctabuttons.phtml
<?php
/**
*/
Mage::log(get_class($this));
echo 'this is my test';
.
ctabuttons.php
<?php
class CompanyName_CtaAttributes_Block_CtaButtons extends Mage_Core_Block_Template {
echo 'test';
}
. Решение 4
Я нашел решение - это в двух частях.
-
Я не определял путь интерфейса-> обновления обновления для моего обновления макета.Я вставил это после
</global>
<frontend> <layout> <updates> <ctaattributes> <file>ctaattributes.xml</file> </ctaattributes> </updates> </layout> </frontend>
- Вы не можете использовать корпус верблюда в имени класса блока
У меня использовал local.xml, я не верю, что это потребуется, но в моем тестировании я думал, что изменил имя файла, чтобы сохранить его отдельно.
Оригинал мой класс был CompanyName_CtaAttributes_Block_CtaButtons
- с соответствующим файлом под названием CtaButtons.php
.
Изменение имени для CompanyName_CtaAttributes_Block_Ctabuttons
и Ctabuttons.php
разрешили проблему.
Я не знаю, если это классный файл в блоке / BOCKNAME.PHP или файл макета XML, который имеет проблему.
Я проверил это с помощью камерка в названии компании и модуле без удара, кажется, ограничивается классом блока и файла.
Другие советы
- .
- /blocks/ctabuttons.xml в вашей структуре файла должен быть PHP файл.
- Я не вижу файл модуля, который должен быть в / приложение / etc / модули
- Вы должны иметь модуль версию в конфигурации .xml
Если вы используете последние патча, ваши блоки также должны быть разрешены в системе-> Permission-> Black
привет, вам нужно определить тип блока сначала
от
<?xml version="1.0"?>
<layout version="0.1.0">
<catalog_product_view>
<reference name="content">
<block type="core/text_list" name="product.info.addtocart" before="addtocart" template="ctaattributes/catalog/product/ctabuttons.phtml"/>
<action method="append">
<block>ctabuttons</block>
</action>
</reference>
<reference name="product.info.addtocart">
<block type="core/text_list" name="core-text"><action method="setText"><text><![CDATA[<div>Test</div>]]></text></action></block>
</reference>
</catalog_product_view>
</layout>
.
к
<?xml version="1.0"?>
<layout version="0.1.0">
<catalog_product_view>
<reference name="product.info">
<block type="core/text_list" name="product.info.ctaattributes" before="addtocart" template="ctaattributes/catalog/product/ctabuttons.phtml"/>
</reference>
</catalog_product_view>
</layout>
.