ページリストブロックのランダム表示

2010年11月9日 at 9:25

ページリストブロックの「ページ並び替え」設定で
ランダム表示の項目を追加したいのですが可能でしょうか?

逆アルファベット順は殆ど使わないと思うので、
その部分を修正するとか…。
何か簡単な方法はありますか?

宜しくお願いします。

Re: ページリストブロックのランダム表示

2010年11月10日 at 11:02
可能です。逆アルファベット順の選択肢を追加するよりは、カスタムテンプレートで対応するのが早いと思います。

ブロック修正の仕方とカスタムテンプレートのしくみ
http://concrete5-japan.org/help/design/block_custom_template/

こちらのページを参考にしてください。

具体的には、以下のファイルをダウンロードして、
/concrete/blocks/page_list/view.php

こちらにアップします。
/blocks/page_list/templates/custom.php

↓この行の直後くらいに
if (count($cArray) > 0) { ?>

↓この行を記述します。
<?php shuffle($cArray); ?>

あとは、編集モードでページリストを追加し、カスタムテンプレートで「Custom」を選択すればランダム表示できます。
試してみてください。
 

Re: Re: ページリストブロックのランダム表示

2010年11月10日 at 14:40
返信ありがとうございます!

この方法を試してみたのですが、
全部で4ページある階層の中から、2ページを表示させた場合、
1番と2番のページの順番がランダムで表示されるだけで、
3番と4番のページが表示されませんでした。

希望としては、
指定した階層のページ(ページ数は変動)から
任意のページ数をランダムで表示できればと思っています。
例えば、8ページある階層から2ページを表示させたい場合、
1番と4番とか、8番と2番とか…
 

Re: Re: Re: ページリストブロックのランダム表示

2010年11月10日 at 14:51
なるほど。ブロックの設定としては全てのページが表示されるようにしておいて、shuffleしたあと先頭の2件だけを表示するようなテンプレートにすれば良いと思います。

具体的には

↓この行を
for ($i = 0; $i < count($cArray); $i++ ) {


こう変更
for ($i = 0; $i < 2; $i++ ) {
 

Re: Re: Re: Re: ページリストブロックのランダム表示

2010年11月11日 at 5:50
希望通りのことができました!
ありがとうございました!smiling