Я хочу настроить Magento\Theme\Block\Html\Footer class
используя пользовательский модуль.
Выход: Привет, мир!
di.xml:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="Magento\Theme\Block\Html\Footer">
<plugin name="footer-text-override" type="Hello\Test\Plugin\Footer" sortOrder="15" />
</type>
</config>
footer.php
<?php
namespace Hello\Test\Plugin;
use Magento\Framework\View\Element\Template;
class Footer extends \Magento\Theme\Block\Html\Footer
{
public function getCopyright()
{
echo "Hello World!";
}
}
Но это не работает ..
Почему вы хотите переопределить класс, просто чтобы изменить текст? Magento предоставляет возможность изменить текст нижнего колонтитула.
Перейдите: Админ> Содержание> Дизайн> Конфигурация
Нажмите на действие редактирования представления магазина. Теперь прокрутите страницу вниз и найдите нижний колонтитул, разверните его и введите свой текст в поле Авторское право.
Сохраните его и очистите кеш.
Чтобы переопределить текст авторского права нижнего колонтитула в magento2, вы можете использовать предпочтение вместо плагин.
Таким образом, ваш di.xml выглядит следующим образом.
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<preference for="Magento\Theme\Block\Html\Footer" type="Hello\Test\Plugin\Footer" />
</config>
Предпочтение используется для переопределения класса. Это похоже на класс переписывает в magento1.
Плагин позволяет нам выполнять наш код до, после и вокруг любых открытых методов класса. (http://devdocs.magento.com/guides/v2.0/extension-dev-guide/plugins.html)