[事例報告] テーマフォルダからdefault.phpを外したらgetThemePath()がおかしくなる

2013年4月10日 at 16:27

どのバージョンからかは分からないのですが、現ver5.6.0.2.jaでは「ページタイプ:デフォルト」のハンドル名が指定できるようになっていました。
そこでテーマフォルダの中を見やすくしたいと思い、
 「default.php」 → 「pageType_default.php」
 「home.php」 → 「pageType_home.php」
といった感じにファイル名を変えた上、
管理画面>ページタイプでハンドル名も併せて「pageType_default」や「pageType_home」に変えたところ、$this->getThemePath() で取得される値が「/updates/concrete5.6.0.2.ja/concrete/themes/[テーマハンドル]」になってしまいました。

色々試行錯誤してみた結果、中身は空でよいのでテーマフォルダ直下に「default.php」を置いてみたら、$this->getThemePath() の取得値を「/themes/[テーマハンドル]」に戻すことが出来ました。


以前のバージョンでは「default.php」は必須だったのでこのようなケースは発生しなかったと思いますが、今後は同じような穴に陥る人も出てくるかもしれませんので、ご参考までにアップしておきます。

といっても、わざわざ default.php のファイル名を変えるような人は居ないかな・・・

タグ: getThemePath, default.php

Re: [事例報告] テーマフォルダからdefault.phpを外したらgetThemePath()がおかしくなる

2013年4月10日 at 17:09
default.phpは以前から必須で、名前は変更できません。
また、「デフォルト」というページタイプは必須ではありません。ブログ付きのデータでインストールすると、そもそも作られませんし。
ページタイプとテーマの必須ファイルは別に考えましょう(ややこしいですけどね)。
テーマのdefault.php, view.phpは必須ファイルです。
 

Re: [事例報告] テーマフォルダからdefault.phpを外したらgetThemePath()がおかしくなる

2013年4月10日 at 22:09
なるほど。

> 「デフォルト」というページタイプは必須ではありません。
> ページタイプとテーマの必須ファイルは別に考えましょう

これはちょっと勘違いしていました。
失礼しました。

ところでそうなると、現在 default.php は中身が空のままでも一応うまく動作しているようなんですけれど、この default.php の役割って、ご存知ですか?
 

Re: [事例報告] テーマフォルダからdefault.phpを外したらgetThemePath()がおかしくなる

2013年4月10日 at 22:32
ページタイプ名:ホーム
ページタイプハンドル:home

のようなページタイプがあったとして、テーマに home.php が存在しない場合は、 default.php が使われます smiling
 

Re: [事例報告] テーマフォルダからdefault.phpを外したらgetThemePath()がおかしくなる

2013年4月11日 at 13:02
なるほど!
考えてみると、自作以外のテーマが使われるケースも考慮しておかないといけませんものね。
そうすると、「ページタイプ:デフォルトのハンドル名はdefaultのままにしておく」というのが、やっぱり一番分かりやすいですね。

hissyさん、ていねいにお付き合いくださいまして、ありがとうございました。