В Magento 1 системный класс можно переопределить (перекрыть) посредством директивы rewrite
в файле etc/config.xml
своего модуля.
В Magento 2 системные классы перекрываются в файле etc/di.xml
своего модуля посредством директивы preference
:
<?xml version='1.0'?>
<config
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xsi:noNamespaceSchemaLocation='../../../../../lib/internal/Magento/Framework/ObjectManager/etc/config.xsd'
>
<!--
Цель перекрытия —
перевод заголовка страницы
(в частности, чтобы в административной части в заголовке
отображалось «Административная часть» вместо «Magento Admin»)
-->
<preference for='Magento\Framework\View\Page\Title' type='Rm\Framework\View\Page\Title' />
</config>
Значением атрибута for
должен быть перекрываемый системный класс.
Значением атрибута type
должен быть перекрывающй класс своего модуля.
Как правило, свой класс наследуется от перекрываемого и переопределяется требуемый метод:
<?php
namespace Rm\Framework\View\Page;
class Title extends \Magento\Framework\View\Page\Title {
/**
* Цель перекрытия —
* перевод заголовка страницы
* (в частности, чтобы в административной части в заголовке
* отображалось «Административная часть» вместо «Magento Admin»)
* @override
* @param string $title
* @return Title
*/
public function set($title) {
parent::set(__($title));
return $this;
}
}