※開発者向けリソースは別ページに移動しました。
メタ情報
各投稿、及び投稿ファイルに記述するメタ情報の一覧です。
メタ情報は、一番最初に記述されているものが使われます。
(例外として、「複数行記述可能」としているものについては全て処理します)
投稿(記事・ウェブページ)のメタ情報
<!--
DATE: 2022-03-03
OUTPUTPATH: 2022-hinamatsuri
TAG: 行事,家族
SKIPGENERATE
-->
名称 | 概要 | フォーマット | 未入力時のデフォルト値 | 備考 |
---|---|---|---|---|
DATE | 投稿日 | 年4桁-月2桁-日2桁 年4桁-月2桁-日2桁 時2桁:分2桁:秒2桁 |
sinonome 処理時の年月日と時分秒 | 左記以外のフォーマットは未入力扱い |
OUTPUTPATH | 投稿名 | ファイル名に使用可能な半角英数字記号 | 数値(自動割り振り) | URLの一部(特にファイル名)になる |
TAG ※記事のみ | タグ | タグ名(カンマで列挙) | ||
SKIPGENERATE | ページとして出力しない | なし | 値は不要 |
補足
SKIPGENERATE
を記述すると、pagetitle
やpagebody
などのタグで内容を呼び出すことはできますが、ファイルとして出力はされません。
たとえばテンプレート内に以下のように記述すると、ウェブページファイル osirase.md に記述した内容を表示させることができ、かつ osirase.md はウェブページとしては出力されません。
{pages file="osirase"}
<h2>おしらせ</h2>
{pagebody}
{/pages}
ファイルのメタ情報
<!--
TITLE: このサイトについて
OUTPUTPATH: about-this-site
DELIM: →
RE_DEFINE: 📅 (\d{4}\-\d{2}-\d{2})→DATE: $1
-->
名称 | 概要 | フォーマット | 未入力時のデフォルト値 | 備考 |
---|---|---|---|---|
TITLE ※ウェブページファイルのみ | ファイルのタイトル | テンプレートタグから呼び出される | ||
OUTPUTPATH ※ウェブページファイルのみ | 出力パスに使用される文字列 | 半角英数字記号 | ||
DEFINE / REPLACE RE_DEFINE / RE_REPLACE |
文字列置換 | カンマ区切り (またはDELIMで指定した記号) |
複数行記述可能 | |
DELIM | 区切り文字変更 | , | 書いた行の下から有効 |
補足(DEFINE/RE_DEFINE/REPLACE/RE_REPLACE)
DEFINE
RE_DEFINE
REPLACE
RE_REPLACE
について説明します。
DEFINE
DEFINE
は、投稿ファイルがsinonomeのフォーマットにしたがってパースされる前に置換処理を行います。
パースされる前の置換なので、sinonomeの記法をハックできます。
たとえば各投稿のメタ情報は通常、HTMLのコメントアウトの中に記述するので、Markdownビューアーでは見えません。
これをMarkdownビューアーで見えるようにするために、コードブロックにしてみます。
<!--
DEFINE: ~~~~~~~~ meta,<!(hyphen)-,~~~~~~~~,-(hyphen)>
DEFINE: <!(hyphen)//,<!-,(hyphen)>,->
-->
上記の通り、「置換前,置換後」で記述します。
「置換1前,置換1後,置換2前,置換2後,..」と続けて書くこともできます。
また、2行以上書くことができ、その場合は上から処理されます。
これで、各投稿のメタ情報を、以下のように書くことができるようになります。
~~~~~~~~ meta
DATE: 2022-06-22
~~~~~~~~
REPLACE
REPLACEは、投稿ファイルがパースされた後、各投稿の本文に対して置換処理を行います。
<!--
DELIM: →
REPLACE: ,→,
-->
全角カンマを半角カンマに変換します。
カンマはデフォルトでは置換文字列に含むことができないので、DELIMで区切り文字を変更しています。
RE_DEFINE / RE_REPLACE
RE_DEFINE
RE_REPLACE
はRE_のついていないものと処理タイミングは同じですが、正規表現が使えます。
perl風のメタ文字が使用可能なので、たとえば以下のようなことができます。
<!--
RE_REPLACE: <a(\s+.*?href="http.+?\")>(.*?)<\/a>,<a$1 data-type="external">🔗$2</a>
-->
a
タグのhref
が「http」で始まる場合、テキストの前にリンクの絵文字が付きます。
補足2(define_replace.txt)
全ての投稿ファイルに同じDEFINE
等を適用したい場合に、全てのファイルに書くのは手間です。
そのような場合には、プロファイルディレクトリに define_replace.txt を作成して、内容を記述してください。
ただし、ファイルに書いたものと、define_replace.txtに書いたものとでは、処理タイミングが異なります。
これを把握していないと、意図しない置換動作になる可能性があります。
おかしいなと思ったら、以下を確認してみてください。
- 投稿ファイルが読み込まれる
- define_replace.txtの
DEFINE
RE_DEFINE
- ファイルの
DEFINE
RE_DEFINE
- ファイルがパースされ、各投稿に分解される
- 各投稿に対して、ファイルの
REPLACE
RE_REPLACE
- テンプレートタグが処理され、htmlファイルに書き込まれる内容が準備される
- htmlファイルに書き込まれる内容に対して、define_replace.txtの
REPLACE
RE_REPLACE
特に注意すべきなのは、上記の5.と7.の間に、テンプレート処理が入ることです。
テンプレート処理が終わってからREPLACEしたい場合は、define_replace.txtに書く必要があります。
もっとシンプルにいえば、テンプレートタグによる出力内容を置換したい場合は、define_replace.txtに書く必要があります。
たとえばあるテーマで、{entrydate}
タグで2022年06月01日
と出力されたとします。
普通「06月」「01日」という表現はしないので、REPLACE
で0を取り除こうと思います。
このとき、REPLACE
はファイルのメタ情報とdefine_replace.txt、どちらに書くべきでしょうか?
REPLACE: 年0,年,月0,月
{entrydate}
はテンプレートタグなので、6.で日付が出力されます。
よって、ファイルのメタ情報(5.)に書いても処理ができません。
define_replace.txt(7.)に書くことで、意図通りに処理されます。
複数プロファイル
sinonome は複数プロファイルに対応しています。
これにより、簡易的に複数の別のウェブサイトを生成することができます。
使用するプロファイルを指定するには、インストールディレクトリに profile.txt
を設置します。
そこにプロファイルのディレクトリ名を記入してください。
// コメントアウトが使えます。
// いちいちディレクトリ名を入力するのは不便なので、コメントアウトの付け外しで運用できます
//default
myblog
1行目から調べて、最初に発見したディレクトリ名が採用されます。
存在しないディレクトリ名は採用されず、無視されます。
// myblog の方が先に書いてありますので、myblog が使用されます。
myblog
default
profile.txt
が存在しない場合や、有効な記述がなかった場合は「default」を指定したと見なされます。
プロファイルの指定は、起動パラメーターでも可能です。
profile.txt
と起動パラメーターの両方で指定した場合は、起動パラメーターが優先されます。
起動パラメーター
sino.exeに以下の引数を渡して起動すると、動作を変更することができます。
複数渡すことができます。
パラメーター | 概要 |
---|---|
-nat | アーカイブテンプレートの処理を省略します。 (アーカイブテンプレートファイル自体の読み込みは行われます) |
-nit | インデックステンプレートの処理を省略します。 (インデックステンプレートファイル自体の読み込みは行われます) |
-nfc | ・テーマの \resources ディレクトリ ・プロファイルディレクトリの \files ディレクトリ 上記を出力ディレクトリへコピーする動作を省略します。 |
-profile ディレクトリ名 | プロファイルのディレクトリ名を指定します。無効なディレクトリ名の場合は処理を行いません。 |