「 members 」ページの URL を「 list 」へ変えたい

2013年9月30日 at 17:12

お世話になります。※ concrete 5.6.1.2.ja

登録会員を一覧表示する「members」ページの URL を、

 ・http://www.../index.php/member/
   ↓
 ・http://www.../index.php/list/

と変更したいのですが、この場合、シングルページなので、ファイル名を書き換える必要がありますよね?
そこで、「members」ページを生成していると思われる、

 .../concrete/single_pages/members.php

というファイルを、試しに「list」という名前でコピーした上で、

 .../concrete/single_pages/list.php

管理画面からシングルページとして登録してみましたが、アクセスすると、

Fatal error: Call to a member function getTotal() on a non-object in /.../concrete/single_pages/list.php on line 13

と表示されて動作しませんでした。該当箇所は、
<?php if ($userList->getTotal() == 0) { ?>

の部分ですが、変数 $userList が読み込まれていないようです。
何か他に変更すべき箇所があるのでしょうか?

何卒ご教示のほど、よろしくお願い致します。

タグ:

Re: 「 members 」ページの URL を「 list 」へ変えたい

2013年9月30日 at 19:57
テストしていないので間違っていたらごめんなさい。。。

concrete5の構造はlist.php に見合うコントローラー controllers/list.php が あるかどうかをチェックします。なければそのままsingle_page/list.phpを処理するという形なので、$userListにオブジェクトがセットされていない状態のままになり、Fatal error となります。

concrete/controllers/members.php

concrete/controllers/list.php

にコピーしクラス名を

class MembersController extends Concrete5_Controller_Members {

class ListController extends Concrete5_Controller_Members {

でいけると思います。
ただし、concreteフォルダ内でコピーするとconcrete5のバージョンアップした場合無効になりますのでconcreteフォルダと同レベルの階層(ユーザー領域)のフォルダにコピーされるのをおすすめします。
また、listという名前はユーザーリスト以外にも使われる可能性があるので今後concrete5のバージョンアップ時には注意が必要だとおもいます。
 

Re: 「 members 」ページの URL を「 list 」へ変えたい

2013年10月9日 at 19:38
遅くなって申し訳ございません。

はい、ご助言通り、上手くいきました。

確かに、ファイル名の競合については、注意して運用してみます。

ありがとうございました。