Pickles 2

ブログ編集

Pickles 2 のブログは、1記事1行の CSV または Microsoft Excel のファイル形式で管理する、サイトマップ管理機能と似た機能となっていますが、いくつかの異なる点があります。

サイトマップは、サイトマップを更新するとキャッシュが再生成されますが、ページ数が多くなるに連れ、キャッシュ生成に長く時間がかかるようになっていきます。キャッシュ生成の処理でもっとも負荷の高い処理は、パンくず階層の整理でした。ブログ機能は、パンくず階層を整理しない代わりに、キャッシュ生成を高速に完了できるのが、もっとも大きな違いです。

ブログ管理機能は、プラグイン pickles2/px2-blog-kit によって追加される機能です。

ブログCSVの格納ディレクトリ

ブログCSVは、ホームディレクトリ(px-files/) の中にある、 blogs/ ディレクトリ直下に格納します。

ブログは複数のCSVファイルに分けて格納することができます。1つのCSVファイルが、1つのブログを生成します。 CSVファイル名から拡張子を除いた部分を、ブログID として認識されます。

例えば、 articles.csv に記述された記事は、ブログID articles にリストされます。

Excel 形式 (.xlsx) のファイルでの編集

サイトマップと同様、ブログ定義もグラフィカルな Excel ファイル形式で編集できます。 pickles2/px2-sitemapexcel プラグインによって追加される機能です。

Pickles 2 本来の機能では、 CSVファイルで管理されるのが基本です。このページでは、CSVファイルでの編集について説明します。

ブログの定義

ブログの定義は、メインコンフィグ config.php に記述します。

ブログは、 pickles2/px2-blog-kit プラグインによって処理されますので、ブログの定義は このプラグインのオプションとして記述します。

/**
 * funcs: Before content
 */
$conf->funcs->before_content = array(

    // BlogKit
    \pickles2\px2BlogKit\register::blog( array(
        "blogs" => array(
            "articles" => array( // ブログID
                "orderby" => "update_date", // 並べ替えに使用するカラム名
                "scending" => "desc", // 並び順 (昇順 asc or 降順 desc)
                "logical_path" => "/articles/{*}", // パンくず (サイトマップCSV上での記法と同じ)
            ),
        ),
    ) ),

);

この例では、 ブログID articles を設定しています。つまり、 articles.csv に記載された記事リストに適用される定義となります。

  • orderby で並び替えのキーを指定します。デフォルトは update_date です。
  • scending には、昇順 asc または 降順 desc のいずれかを指示できます。デフォルトは 降順 desc です。
  • logical_path は、パンくずの階層を指定します。指定の形式はサイトマップCSVの locical_path 列と同じです。省略した場合は、トップページ直下に配置されます。

定義されていないブログは、すべてデフォルト値の設定で処理されます。

CSVの形式

  • CSVファイルはUTF-8で保存してください。
  • 1行目は定義行として、2行目以降にページデータを記述してください。
  • 定義行は、* 定義名 のように、先頭にアスタリスクを記述します。
  • * path* title は必須です。必ず定義に加えてください。

規定の定義

キー 意味
A title ページタイトル
B path ページのパス
C release_date 公開日
D
update_date 更新日
E
article_summary 記事サマリ
F article_keywords 記事キーワード

title - ページタイトル

ページのタイトルです。 titleタグや、h1タグ、パンくず、ナビゲーション上のリンクラベルなどに利用されます。

path - ページのパス

ページのパスを入力します。必須項目です。

パスは、スラッシュから始まる絶対パスで記入します。URLの origin 部分は含みません。
Pickles 2 は、ページのユニークな識別子として path を利用しますので、同じパスのページを複数定義することはできません。

もし、プロジェクト設定の $conf->path_controot に深い階層が設定されている場合、絶対パスの起点はこのディレクトリになります。

release_date - 公開日

記事の公開日を YYYY-MM-DD 形式(例: 2023-05-07) で指定します。

update_date - 更新日

記事の更新日を YYYY-MM-DD 形式(例: 2023-05-07) で指定します。

デフォルトでは、update_date は記事リストの並び替えのキーとして利用されます。

article_summary - 記事サマリ

記事のサマリ文言を指定します。この文字列は、記事一覧に表示されます。

article_keywords - 記事キーワード

記事の内容を端的に表すキーワードを指定します。

ブログ定義の自由な拡張

サイトマップと同様、ブログでも定義を任意の名称で追加することができます。コンテンツやテーマから参照する方法は、サイトマップと同じです。

例えば、 * custom_col と定義した列の値は、$px->site()->get_page_info( 'page_id', 'custom_col' )$px->site()->get_current_page_info( 'custom_col' ) で取得することができます。

また、定義列は、任意に並べ替えることができます。 よくアクセスする列を左の方へ配置するなど、使いやすいスタイルに調整することができます。

サイトマップに標準的に定義されている定義列を追加すると、サイトマップと同様の効果が得られるはずです。例えば、 layout 列を追加すれば、その記事に適用するテーマレイアウトを選択することができます。

ただし、次の定義列はブログでは定義することができないことに注意してください。

  • id
  • logical_path

記事一覧ページの作成

記事の一覧ページは、サイトマップに記載します。

次の条件で追加してください。

  • path の末尾は /{*} で終わるようにしてください。例: /articles/{*}

このページのコンテンツには、次のように実装します。

<?= $px->blog->mk_list_page(
    array(
        "blog_id"=> 'articles', // ブログID
        "orderby" => 'update_date', // 並び順
        "scending" => 'desc', // 昇順 or 降順
        "dpp" => 10, // 1ページあたりの表示記事件数
        "index_size" => 5, // ページネーションのサイズ
        "list_page_id" => null, // 2ページ目以降のリストを別のページに転送する場合に指定する
    )
); ?>

または、 ブロックエディタ編集では、pickles2/px2-blog-kit プラグインに同梱されている「記事リスト」モジュールを配置して作成することもできます。

RSSフィードの出力設定

設定ファイル config.php (通常は ./px-files/config.php) を編集します。 before_output の任意の位置に設定を追加します。

<?php

/* 中略 */

/**
 * funcs: Before output
 */
$conf->funcs->before_output = array(

    // BlogKit: RSS出力
    \pickles2\px2BlogKit\register::feeds( array(
        "path_trigger" => "/",
        "blog_id" => "articles",
        "orderby" => "update_date",
        "scending" => "desc",
        'dpp' => 10,
        'lang' => 'ja',
        'scheme' => 'https',
        'domain' => 'yourdomain.com',
        'title' => 'test list 1',
        'description' => 'TEST LIST',
        'url_home' => 'https://yourdomain.com/',
        'url_index' => 'https://yourdomain.com/listsample/',
        'author' => 'Tomoya Koyanagi',
        'dist' => array(
            'atom-1.0' => '/rss/atom0100.xml',
            'rss-1.0' => '/rss/rss0100.rdf',
            'rss-2.0' => '/rss/rss0200.xml',
        ),
    ) ),

);
  • path_trigger は、RSSフィード出力処理を実行するパスを指定します。例えば、トップページ / を指定すると、トップページをプレビューしたとき、あるいはトップページがパブリッシュされたときに、生成が実行されるようになります。
  • dist には、RSSフィードの出力先パスを指定します。 フィードは、 Atom 1.0、 RSS 1.0、RSS 2.0 の形式に対応しています。それぞれの出力先ファイル名を設定します。