Grav Bootstrap4 テーマのカスタマイズ。

概要(Summary)関連の処理がかゆいところに手が届かないので変更。

かゆいところ:ページオプションでサマリーを無効にしても「Continue Reading...」のリンクが出ちゃう。

テンプレートの該当箇所。

File:/grav/user/theme/bootstrap4/templates/partials/blog_item.html.twig

~~~
        {% elseif truncate %}
            {% if page.summary != page.content %}
                <p>{{ page.content|truncate(550) }}</p>
            {% else %}
                <p>{{ page.content|raw }}</p>
            {% endif %}
            <p><a href="{{ page.url }}">Continue Reading...</a></p>
        {% else %}
~~~

truncate 変数は呼び出し元のファイル
/grav/user/theme/bootstrap4/templates/blog.html.twig 内で呼び出し時に固定値で指定されている。規定値は「true」。
これを「false」にしたところ「Continue Reading...」は消えたけど、前ページ、次ページのリンクが出てきてしまう上に、概要が無視されてコンテンツが長くても(サマリー表示でも)「Continue Reading...」が出なくなった。

うーむ、かゆいところに手が届かない(´・ω・`)。

 

こうしてみた。

File:/grav/user/theme/bootstrap4/templates/partials/blog_item.html.twig

~~~
        {% elseif truncate %}
            {% if page.summary != page.content %}
                <p>{{ page.content|truncate(550) }}</p>
            {% else %}
                <p>{{ page.content|raw }}</p>
            {% endif %}
            {% if page.summary.enabled %} 
                {# page.summary.enabled はページオプションでsummaryの有効無効を切り替えるとページデータに追加される。#}
                <p><a href="{{ page.url }}">Continue Reading...</a></p>
            {% endif %}
        {% else %}
~~~

これで一応希望の動きにはなっている。

記事の文字数が少なすぎて「Continue Reading...」が出ない(全文表示になる)場合は、記事の中間に概要デミリタ「===」を配置すれば強制的に概要表示になり「Continue Reading...」が表示される。

 

カテゴリ分けした記事の先頭に目次を配置したのが、事の始まり。
目次なので概要にならずに全文表示したいけど、全文表示なのに「Continue Reading...」がでるのはちとかっこわるいなーと。

やってしまった後であれだけど、そこまでこだわることでもなかった気もする(´・ω・`)

Post If you feel like it, I would be happy if you could post it.