ページリストで、記事本文から、抜粋を作成する方法

2015年2月26日 at 6:29

バージョン:concrete5.6.3.2.ja

ページリストブロック

記事の本文から、自動で、抜粋するメソッドってありますか?
単純に文字制限して&改行をスペースとかにするだけなので、
組めばできるのでしょうが・・・。

標準の「ページリスト」ブロックでは、 ページ設定→説明の内容は取ってきてくれますが、 記事の内容から、自動で抜粋してくれると助かります。

検索しましたが、見つけることができませんでした。

タグ:

Re: ページリストで、記事本文から、抜粋を作成する方法

2015年2月26日 at 11:45
ページリストのカスタムテンプレートで実現しているものがあります。
下記のあたりを参考にしてみてください。

http://github.com/concrete5japan/concrete5/blob/master/web/concrete/blocks/page_list/templates/blog_index_thumbnail.php#L26

http://github.com/concrete5japan/concrete5/blob/master/web/concrete/blocks/page_list/templates/blog_index.php#L37
 

Re: ページリストで、記事本文から、抜粋を作成する方法

2015年2月27日 at 5:58
acliss19xx 様

ご回答ありがとうございます。
ご連絡遅れてすみませんでした。

ご投稿いただきました、リンクの

blog_index.php
blog_index_thumbnail.php

をページリストのカスタムテンプレートに置いて、表示させてみました。

が、結果は同じでした。
ですので、コア(concrete/blocks/page_list/::インストール時にあるカスタムテンプレート)
と差異を確認してみました。

どうも、もとからインストールされているものと同じようです。
これをもとにカスタマイズを始めましたので、困りました。

なので、検索キーワードから、抜粋ではなく、“サマリー”(たまたま気づきました) とかで検索をかけてみました。

そして、本家側のリンク、

https://www.concrete5.org/community/forums/usage/truncate-summaries/

のフォーラム内に、Truncate Summaries と言う投稿を発見しました。

これで、コードのカスタマイズを行いますと、仕様通りのコードを生成することができました。

/concrete/blocks/page_list/templates/blog_index.php
blog_index.php 内の 35行目

<div class="excerpt">
<?php
$a = new Area('Main');
$a->disableControls();
$a->display($cobj);
?>
</div>

を以下のように変更する

<div class="excerpt">
<?php
$a = new Area('Main');
$a->disableControls();
if($truncateChars) {
$th = Loader::helper('text');
ob_start();
$a->display($cobj);
$excerpt = ob_get_clean();
echo $th->entities($th->shorten($excerpt,$truncateChars));
} else {
$a->display($cobj);
}
?>
</div>

このコードに変更して、表示を確認しますと、仕様通りになりました。
また、ページリストブロック、要約の文字数制限も、文字数が指定も字数付近に、
整形されるようになりました。

ご投稿をヒントに自己完結できました。
ありがとうございます。