Zola 最新表示件数について
Rust製の静的サイトジェネレーターのZolaを利用して、最新表示をさせてみました。
プログラムのことは良く分からないので、いろんなテーマを参考に、表示させたい事を試行錯誤しながら成功例をメモしておきます。
個人的なメモ書き。
成功例のコードは、@ひろましゃサンにご確認のうえ、ご協力をいただきました。
ワードプレスの最新表示
ワードプレスの最新表示だと、こんな感じ。
<h2>最近の投稿</h2>
<dl>
<?php if(have_posts()): while(have_posts()): the_post(); ?>
<dt class="small"><?php the_time( 'Y-m-d' ); ?></dt>
<?php the_title( sprintf( '<dd><a href="%s" rel="bookmark">', esc_url( get_permalink() ) ), '</a></dd>' ); ?>
<?php endwhile; else: ?>
<?php endif; ?>
</dl>
function.phpに設定を記述(最新5件表示)
function change_posts_per_page($query) {
if ( is_admin() || ! $query->is_main_query() )
return;
if ( $query->is_home() ) {
$query->set( 'posts_per_page', 5 );
}
}
add_action( 'pre_get_posts', 'change_posts_per_page' );
Zolaの最新表示
zolaの最新表示だと、set sectionを使うらしい。
参考にしたテーマ
https://github.com/17cupsofcoffee/seventeencups.net
macros.htmlも理解できていないので、フィーリングでうまく表示されていればOKということで。
templates/index.html
<h2>新着情報</h2>
<dl>
{%- set section = get_section(path="posts/_index.md") -%}
{% for post in section.pages | slice(end=6) %}
<dt class="small">{{ post.date | date(format="%Y-%m-%d") }}</dt>
<dd><a href="{{ post.permalink | safe }}">{{ post.title }}</a></dd>
{% endfor -%}
</dl>
補足(Zola)
content/postsの記事(xxxxx.md)を最新の日付順でソートさせる。
postsの1階層上にあるcontentに_index.mdの設置と設定。
content/_index.md
+++
sort_by = "date"
+++
例)5件表示の場合
slice(end=6)の数字をお好みで修正する。
templates/index.html
{% for post in section.pages | slice(end=5) %}
Zolaについて
Rust製の静的サイトジェネレーター、Zolaは利用者も少ないので日本語情報を見つけるのも苦労します。
公開されているテーマから、マッチする内容を参考にすることが近道かもしれません。
- https://github.com/getzola/zola/blob/master/EXAMPLES.md
- https://www.seventeencups.net/
- https://github.com/17cupsofcoffee/seventeencups.net
Zola静的サイトジェネレーターは、マークダウンを使える利点はありますが、ワードプレスのような動的サイトに比べて、昔ながらのHTMLサイトっぽいので、やりたいこと・できることの範囲も限られてきます。
※たとえば、コメント機能・メールフォーム・関連記事の表示・人気記事の表示などは面倒。
まとめ
今回は、Zolaで「トップページに最新表示をさせたい」を実現できました。
静的サイトジェネレーターは簡素なホームページだと、サクッと作れるので、Zolaでも個人的に十分な必要最低限のことが可能でした。