Zolaで遊ぶ

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は利用者も少ないので日本語情報を見つけるのも苦労します。

公開されているテーマから、マッチする内容を参考にすることが近道かもしれません。

Zola静的サイトジェネレーターは、マークダウンを使える利点はありますが、ワードプレスのような動的サイトに比べて、昔ながらのHTMLサイトっぽいので、やりたいこと・できることの範囲も限られてきます。

※たとえば、コメント機能・メールフォーム・関連記事の表示・人気記事の表示などは面倒。

まとめ

今回は、Zolaで「トップページに最新表示をさせたい」を実現できました。

静的サイトジェネレーターは簡素なホームページだと、サクッと作れるので、Zolaでも個人的に十分な必要最低限のことが可能でした。

参考