Re: ページリストのカスタムテンプレートから、ページの記事ブロックの値を取得したい

2015年9月10日 at 17:44

いろいろコツがあると思いますが・・・。


■ 案1: 5.6 のブログ表示のテクニック:ページのエリアを全部表示。CSS で隠す

5.6 の blog_index のコードを、5.7 のデフォルトの Page List の説明欄を表示する部分に入れ込んだものです。

実は、そのページの Main エリアをすべて表示するという方法をとっていて、
<div class="excerpts"> のクラスで囲っているので、そこで over-flow: hidden な設定で隠すということができます。

サンプルコードをご覧ください。
http://gist.github.com/katzueno/9b173e46df38a651e3d2/revisions
(下から2番目の変更箇所を参考にしてください。あと、すいません。PHP ショートコードなサンプルで作ってしまいました。)

この方法は、すごく簡単にできるのですが、
ページが長いと、HTMLサイズが重くなってしまいます。


■ 案2: メインエリアの最初か2番目のブロックをそのまま表示する方法

参考
http://www.concrete5.org/community/forums/customizing_c5/get-first-block-in-area-then-get-that-blocks-data/

サンプルコードはこちらです。
http://gist.github.com/katzueno/08173afeefacde40f243/revisions
(すいません。PHP ショートコードなサンプルで作ってしまいました。)

ここの
$blocks = $page->getBlocks('Main');
でメインエリアのブロックを読み込んで
$blocks[0]->display();
で1個目のブロックを表示するという設定になります。

2個目のブロックを表示させたければ
$blocks[1]->display();
にするとできます。

てな感じですかね。
こちらも、ブロックの中身が大きくなったら、CSS で隠すとかですかね。

タグ: