システムページのオーバーライド

2016年2月3日 at 10:51

使用バージョン:concrete5.6.3.4
PHP Version 5.6.3RC1
IIS 8.0

■ログインページ
concrete/controllers/login.php
concrete/single_pages/login.php
■会員登録ページ
concrete/controllers/register.php
concrete/single_pages/register.php
■会員一覧
concrete/controllers/members.php
concrete/single_pages/members.php
■マイページ関連
concrete/controllers/profile/○○○.php
concrete/single_pages/profile/○○○.php


上記ファイルをパッケージからオーバーライドしてコントローラには、ある機能を追加したり
シングルページ(ビューファイル)の方に表示する項目を増やしたり、
レイアウトや、HTML構造を変更したいのですが、

1、そもそもオーバーライドでどうこうできる話でしょうか?
2、別のシングルページを追加して対応するほうがいいのか?
3、オーバーライドして対応できるのできるのであれば、どうやって実装すべきか?
4、やり方等ご存じであればご指導おねがいいたします。

よろしくお願いいたします。

タグ:

Re: システムページのオーバーライド

2016年2月3日 at 12:14
どのようなことをされたいかによるのですが、

1、オーバーライドでできます。
2、しないほうがいいと思います。
3、書かれている上記はコア領域といいます。(concreteディレクトリ内)
それをユーザー領域といわれるconcreteディレクトリと同階層の同名のディレクトリにコピーします。
コントローラーはメソッドごとのオーバーライドが出来ますので、修正や追加したいメソッドだけ書き込んでください。

注意点としては、今度concrete5のバージョンアップされた場合にオーバーライドしている部分は、適用されません。
 

Re: システムページのオーバーライド

2016年2月3日 at 14:38
ありがとうございます。
私が開発しているパッケージに下記を加えることで解決いたしました。

public function on_start()
{
$env = Environment::get();

/* システムページのオーバーライド */
//ログイン
$env->overrideCoreByPackage('controllers/login.php', $this);
$env->overrideCoreByPackage('single_pages/login.php', $this);
//ユーザー一覧
$env->overrideCoreByPackage('controllers/members.php', $this);
$env->overrideCoreByPackage('single_pages/members.php', $this);
//ユーザー登録ページ
$env->overrideCoreByPackage('controllers/register.php', $this);
$env->overrideCoreByPackage('single_pages/register.php', $this);

//ユーザーマイページ
$env->overrideCoreByPackage('controllers/profile/controller.php', $this);
$env->overrideCoreByPackage('single_pages/profile/view.php', $this);
$env->overrideCoreByPackage('controllers/profile/avatar.php', $this);
$env->overrideCoreByPackage('single_pages/profile/avatar.php', $this);
$env->overrideCoreByPackage('controllers/profile/edit.php', $this);
$env->overrideCoreByPackage('single_pages/profile/edit.php', $this);
$env->overrideCoreByPackage('controllers/profile/friends.php', $this);
$env->overrideCoreByPackage('single_pages/profile/friends.php', $this);
$env->overrideCoreByPackage('controllers/profile/messages.php', $this);
$env->overrideCoreByPackage('single_pages/profile/messages.php', $this);
}
 

Re: システムページのオーバーライド

2016年2月3日 at 15:31
あっ、ごめんなさい、パッケージでしたね。