helperはどこに?

2012年12月20日 at 21:50

helperのpagenationのソースはどこにいきましたでしょうか?

5.5.2.1.jaで問題なかったですが、5.6.0.2.jaで表示のずれが生じたのでソースを見ようとしたら、
concrete5/helper/pagenation.phpの中身が空っぽ。classの継承定義だけ。

変わったみたいな話は、先日の勉強会で聞いたようにおもいますが。

タグ:

Re: helperはどこに?

2012年12月21日 at 1:34
PaginationHelper クラスは、 Concrete5_Helper_Pagination クラスを継承する形になりました。

class PaginationHelper extends Concrete5_Helper_Pagination {
}

concrete/helper/pagination.php

Concrete5_ で始まるクラスは、coreフォルダ内にあります。
Concrete5_Helper_Pagination クラスは concrete/core/helper/pagination.php

こうなっているのは、coreクラスの一部のメソッドのみオーバーライドできるようにするためです。

concrete5.6.0.2日本語版でも、この仕組みを使って日本語対応しています。
TextHelperがそうですね。Concrete5_Helper_Textクラスのurlifyメソッドだけ独自の動きにしています。
 

Re: helperはどこに?

2012年12月21日 at 8:59
coreが増えているんですね。
たとえば、/concrete/core/helper/pagenation.php 内のファイルのメソッドをオーバーライドする場合、
/helpers/pagenation.php を作ってオーバーライドするメソッドだけを置けばいいのでしょうか?
 

Re: helperはどこに?

2012年12月21日 at 10:18
そうですね。 concrete/helpers/pagination.php を複製して helpers/pagination.php に移動、concrete/core/helper/pagination.php から必要なメソッドを helpers/pagination.php にコピペして、あとはカスタマイズすればいいはずです。
 

Re: helperはどこに?

2012年12月21日 at 1:41
通常のユーザー領域だとhelperはオーバーライドしてくれない物もあります