概要
Concrete5でコアファイルをカスタマイズする際の、サービスプロバイダーオーバーライドの方法に関して。
バージョン5.7は、マニュアルがあったが、バージョン8はないので記載。
バージョン5.7の場合
ちなみに、上記URLのやり方で書くと
予期せぬエラーが発生しました。
Class '\Application\Page\PageList' not found
となる。
手順
前提
- ページリスト表示処理をカスタマイズするために、/concrete/src/Page/PageList.phpをカスタマイズ対象とします。
- バージョン5.7の場合を参考にし、バージョン5.7との違いを説明していきます。
1.app.phpを作成。
/concrete/config/app.php
バージョン5.7の場合
app.php
<?php
return array(
'providers' => array(
'PageList' => '\Application\Src\Page\PageList'
)
);
バージョン8の場合
app.php
<?php
return [
'canonical-url' => '',
'canonical-ssl-url' => '',
'aliases' => [
'PageList' => '\Application\Concrete\Page\PageList',
]
];
- 既存ソースにある、「canonical・・・」はそのまま。aliasesを追加します。
- カスタマイズするソースのパスを変えます。Src → Concrete
2.カスタマイズしたいファイルをコピー。
バージョン5.7の場合
/application/src/Page/PageList.php
バージョン8の場合
/application/src/Concrete/Page/PageList.php
- Concreteディレクトリはないので作成する必要があります。
3.ファイルの中身を修正
バージョン5.7の場合
PageList.php
<?php
namespace Application\Src\Page;
class PageList extends \Concrete\Core\Page\PageList
{
// カスタマイズ内容を記載
}
バージョン8の場合
PageList.php
<?php
namespace Application\Concrete\Page;
class PageList extends \Concrete\Core\Page\PageList
{
// カスタマイズ内容を記載
}
- namaspaceを変える必要があります。
以上。