rNoteの動作

クエリ

 rNoteの動作はGET又はPOSTのクエリによって決定されます。

クエリ名対象メソッド<%=$site_link%>の
オプション名
説明
uGETurl カテゴリ名又はドキュメント名を指定します。
指定は entries ディレクトリからの相対です。
最後が '/' の時はカテゴリ名と判断します。
拡張子が '.htm' の時はドキュメントと判断し、同名の,xmlファイルの内容を表示します。
dGETdate 日付指定モードです。W3C-DTF の書式で指定します。
u と同時指定出来、「2004年12月の日記」のような感じで対象を絞り込めます。
pGET- u 及び d の内容から記事を抽出した結果、1ページに表示する記事数を超えた場合、表示するページを指定します。
sGETskin 表示に使用するBODY用スキンを指定します。
cGETtype content-type を指定します。xml 又は html が指定出来ます。
mGETmode ユーザーモードの指定です。同じURLでもモードに従って違う内容を表示する事が出来ます。
判断・分岐は <if mode="... で行う事が出来ます。
modeGET,POST- システムモードです。
admin, bbs_write 等が使用されています。
cacheGET,POST- cache=off にすると、そのページはキャッシュが行われなくなります。
検索プラグインの表示等、毎回内容が変わる可能性のあるページで使用します。
urlPOST- POSTメソッドでurlクエリが存在した場合は、TrackBack受信と看做します。

 なお、リンク作成時、直接クエリを書くのは避けるようにお願いします。
 スキンであれば <%=$site_link%> 命令を使い、プラグインの場合はリンク作成専用のAPIを呼んでください。

× <a href="rnote.php?u=bbs/&m=write_form">

○ <a href="<%=$site_link url="bbs/" mode="write_form" %>">

単一ファイル表示モードと複数ファイル表示モード

 ファイルの指定がカテゴリ指定(最後が'/'の時)の場合は複数ファイル表示モード、記事ファイルまで指定されていた場合は単一ファイル表示モードとなります。

 但し、カテゴリ指定時であっても、<%=$site_items> 命令において num="1" が指定されていた場合は、「セミ単一表示モード」とでも呼ぶべき特殊なモードになります。
 この場合、システム的にはあくまで複数ファイル表示モード扱いで、bSingleフラグも立ちませんが、前後移動ナビ等の表示は単一記事表示モードに準じた状態になります。


記事の記述

カテゴリ

 rNoteは、ディレクトリ=カテゴリ方式を採用しています。
 diary というカテゴリを作成したい場合は、entries ディレクトリ(ここがブラウザで見た時のHomeになります)の下に、diary というディレクトリを作成し、その中に記事ファイルをftpでアップロードしてください。
 なお、entries 以下のディレクトリには、ツッコミ(コメント)やトラックバック、リンク元等のログファイルが自動で作成されますので、カテゴリを新規に作成した場合は、そのディレクトリに書き込み属性(標準で 777 )を付けてください。

 rNoteは、entries 直下のカテゴリは「コーナー」として扱う事を想定して作成されています。
 例えば、標準では記事の前後移動時、diary/anime/ から diary/manga/ へは移動可能ですが、diary/ から gallery/ へは移動しない…といった感じです。
 カテゴリの構成を考える場合は、この点に留意してください。

記事ファイル

 記事ファイルは XML として記述します。
 初期設定の「SITE_CHARSET」で設定された文字コードで作成します。標準は「UTF-8」です。
 なお UFT-8 で保存する際、BOM付きだとゴミが出る可能性がありますので、必ず「BOMなし」(UTF-8Nと表記されてるエディタもあります)で保存するようにしてください。

 以下に記事ファイルの例を示します。

<?xml version="1.0" encoding="UTF-8"?>
<rNote xml:lang="ja" xmlns="http://rinn.e-site.jp/rnote/">
  <Title>昼寝しました</Title>
  <Date>2004-01-01</Date>
  <Text>
    <p>今日は天気がよくてぽかぽかしてたので、縁側でひるねした。</p>
    <p>きがついたら、横で猫さんが一緒に寝てたです。</p>
  </Text>
</rNote>
<Title>
記事のタイトルです。
RSS配信の関係上、タイトルにはhtmlのタグは使えません(あっても削除されます)。
<Text>
記事の本文です。htmlのタグが使えます。xhtmlに沿った記述が望ましいです。
<Date>
記事の日付です。このタグが存在しない場合は、記事ファイルのタイムスタンプがそのまま使用されます
W3C-DTFで規定されているフォーマットで記述する必要があります。
例1:2004-01-01
例2:2004-01-01T12:00:00
<Description>
記事の要約です。このタグが存在しない場合は、本文の冒頭が要約として使用されます。
<WB_Accept>
ツッコミ及びトラックバックの受け付けフラグです。このタグが存在しない場合は、初期設定で設定された数値が使用されます。
1以上の数字の場合は、記事の日付から指定日数だけ受け付け、指定日数を過ぎた段階で受け付けが終了します。
-1であれば無限に受け付けます。0の時は受け付けは禁止になります。

 上記タグ以外にも、必要に応じて好きなタグを作成する事が出来ます。
 詳細はリファレンスのスキンの書き方の所で説明しますが、スキン中で <%=$タグ名%> と記述すると、そこにそのタグの内容が表示されます。
 なお、独自のタグを使う場合は、xhtml のタグと重なってしまう名前は使わないように注意してください。

 記事を書き終えたら、一度ブラウザで表示してみてください。どうせなら、ちゃんとした XML 文書として作成しておくと、何かと便利ですので。
 もし何か間違っていた場合は、以下のように表示されます。

 正しく記述されていれば、以下のように表示されます

 特にエラーが出ずに、このように表示されれば、正しいXML文書として認定されたという事になります。

ヒント

 絵日記やギャラリー等を作成する場合、<Text>に直接<img>タグを入れるのではなく、以下のような形で記述するようにすると良いでしょう。

<?xml version="1.0" encoding="UTF-8"?>
<rNote xml:lang="ja" xmlns="http://rinn.e-site.jp/rnote/">
  <Title>らくがき</Title>
  <Image>cg.jpg</Image>
  <Thumbnail>cg_s.gif</Thumbnail>
  <ImageDir>image/</ImageDir>
  <Text>
    <p>今日のらくがきです。</p>
  </Text>
</rNote>

 これを表示する為のスキンは、以下のような感じで記述します。

<h2><a href="<%=$Url%>"><%=$Title%></a></h2>
<table><tr><td>
<a href="<%=$ImageDir%><%=$Image%>"><img src="<%=$ImageDir%><%=$Thumbnail%>" />
</td><td>
<%=$Text%>
</td></tr></table>

 このような形にしておけば、後にサイトのデザインを変更したいと思った場合でも、データそのものはいじる必要が無く、スキンだけを変更すれば良くなります。

サイト内記事へのリンク

 mod_rewrite を使用した場合と使用しない場合では、サイト内記事へのURLが変わります。
 また、例えばテスト用のサーバーと本番用のサーバーを別に用意してる場合、ダイレクトにurlを記述してしまうと、テスト用の場所ではリンクの確認が出来なかったりします。

 そこで、サイト内記事へのリンク記述用に $site_link 及び $site_link_full (fullは0.9.4以降で実装)というものが用意されています。
 $site_link_full は、http:// から始まるフルURLの記述になります。

<a href="$site_link/diary/d0204.htm">2月4日の日記</a>

 サイト内記事へのリンクでは、ダイレクトにURLを書くのではなく、 上記のように $site_link を使用した記述を行う方法を推奨します。

 画像など、記事ファイル以外へのリンクは rnote.php からの相対URLで記述してください。
 必要に応じて、サーバーのルートからの絶対URLに自動で変更を行います。

 なお、画像などは entries 以下には置かず、別にデータ用のディレクトリを作成し、そこに格納するようにした方が望ましいです。


スキンの概要

BODY用スキンとITEM用スキン

 rNoteで用いるスキンファイルは、大きく2種類に大別されます。

 一つは、ページ全体用のスキンです。以下これを「BODY用スキン」と呼称する事にします。ディフォルトのファイル名は「html_body.skin」です。
 もう一つは、エントリアイテム用のスキンです。以下これを「ITEM用スキン」と呼称します。ディフォルトのファイル名は「html_item.skin」です。
 (ディフォルトのファイル名は初期設定で変更可能です)

 つまり、BODY用スキンの途中に、複数のITEM用スキンが挿入されて、1ページが出来上がります。

 以下は、非常にシンプルなBODY用スキンの例です。

<html>
<body>
<h1>俺ページ</h1>
<%=$site_items%>
</body>
</html>

 <%=$site_items%> の部分に、ITEM用スキンが挿入されます。

 ITEM用スキンは以下のような形になります。

<h2><%=$Title%></h2>
<%=$Text%>

 <%=$Title%> の部分に記事のタイトルが、<%=$Text%> の部分に記事の本文が入ります。

 なお、スキン中に日本語を記述する場合、そのスキンファイルは、初期設定の「SITE_CHARSET」で設定された文字コードで保存されている必要があります。標準は UTF-8 です。
 UTF-8の場合は、必ず「BOMなし」で保存してください。

配布アーカイブのスキン構成

 配布アーカイブのスキンは以下のような構成になっています。

ファイル又はディレクトリ名説明
html_body.skin
html_head.skin
html_side.skin
この3つでBODY用スキンを構成しています。
html_item.skin
writeback.skin
この2つがITEM用スキンとなります。writeback.skin の方はツッコミ部分用です。
html_recent.skinサイドバーの Recent Entries 表示用のスキンです。
error.skinエラー表示用のスキンです。
rss_body.skin
rss_item.skin
rss_seq.skin
RSS用のスキンです。
html_body_i.skin
html_item_i.skin
error_i.skin
携帯表示用のスキンです。

カテゴリとスキン

 rNoteは「ディレクトリ=カテゴリ」方式を採用しています。
 「diary」というカテゴリを作りたい場合は、entriesの中に「diary」というサブディレクトリを作成し、この中に記事ファイルを置きます。

 さて、先ほど「BODY用スキンにITEM用スキンが挿入されてページが作成される」と説明しましたが、rNoteでは、カテゴリによって使用するスキンを分ける事が可能です。
 方法は、例えば gallary 専用スキンを作成した場合は、それを gallery フォルダに置くだけです。

[/]--+--rnote.php
     +--rnote_config.php
     +--[entries]--+--[diary]----+--diary040101.xml
                   |
                   +--[info]-----+--html_item.skin (2)
                   |             +--info01.xml
                   |
                   +--[midi]-----+--html_body.skin (3)
                   |             +--midi01.xml
                   |
                   +--[gallery]--+--html_body.skin (4)
                   |             +--html_item.skin (4)
                   |             +--cg001.xml
                   |
                   +--html_body.skin (1)
                   +--html_item.skin (1)

 例えば、上記のような構成でファイルが置かれていたとします。

 [diary] ディレクトリには、BODY用スキンもITEM用スキンも存在しませんので、entries直下のスキン (1) が使用されます。
 [info] ディレクトリには、ITEM用スキンが存在するので、info01.xml を表示する際は、(1) ではなく、(2) のhtml_item.skin が使用されます。
 Home でアクセスし diary040101.xml と info01.xml が同時に表示された場合は、両者はそれぞれのITEM用スキンによって表示が行われます。

 BODY用スキンは、現在のカレントカテゴリによって、どのスキンが使用されるかが決定します。

 現在のカテゴリが Home の時は (1) の html_body.skin が使用されます。又、[info] カテゴリに入った時も、ここには html_body.skin が存在しませんので、やはり (1) の html_body.skin が使用されます。
 [midi] カテゴリに入った時は、専用の html_body.skin が存在する為、この (3) の html_body.skin が使用されます。

 Homeでアクセスした場合、違うカテゴリの記事が同時に表示される場合があります。
 その為、あるカテゴリでは他と全くデザインを変えているという場合、同時に表示されると不都合が生じる可能性があります。このような場合、特定のカテゴリはHomeで表示しない設定にするか、又は、そもそも通常のBlogのようにHomeで新着記事を出すのを止め、トップページは各カテゴリへのメニューだけにする…等の対処を行ってください。

標準以外のITEM用スキンを使う

 <%=$site_items%> 置換命令において、オプション skin を設定する事により、前項で説明したディレクトリ依存以外のスキンを強制的に使用することが出来ます。

 例として、サイドバーに最新の日記10個のタイトルを表示させることにしましょう。
 まず、以下のような内容のファイルを作成し、これを html_recent.skin というファイル名で保存します。

<li><%=$Title%></li>

 次に、html_body.skin の適当な場所に、以下のような記述を追加します。

<h4>Recent Entries</h4>
<ul>
<%=$site_items num="10" skin="html_recent.skin" url="diary/" %>
</ul>

 これで、サイドバーに最新の日記10個のタイトルが表示されるようになります。

 全カテゴリの最新の記事のタイトルを表示したいという場合は、上記記述のurlオプションを url="/" に変更してください。
 urlオプションが無い場合は、対象が現在のカテゴリになります。もし url オプションを書き忘れますと、diary カテゴリに入ったら diary の最新記事10件が、gallery カテゴリに移動したら gallery の最新記事10件が表示されてしまいます。

 なお、<%=$site_items%> 命令についての詳細は、「スキンの詳細」の項をお読み下さい。

標準以外のBODY用スキンを使う

 サイト内リンクを生成する <%=$site_link%> 命令というのがあります。
 この命令に skin オプションを指定する事で、ディレクトリ依存した標準スキン以外のスキンを使用する事が出来ます。

 例えば、日記タイトル一覧を表示する diary_title.skin というスキンを作成した場合、以下のようにリンクを作成します。

<a href="<%=$site_link url="diary/" skin="diary_title" %>">
日記タイトル一覧
</a>

携帯表示用スキン

 携帯表示時は、あるカテゴリ専用としてそのディレクトリに html_body_i.skin を置いて…という方法は使用出来ません。常に entries 直下の携帯用スキンが使用されます。
 従って、携帯でカテゴリによって表示や処理を変更したいという場合は、<if category=... マクロを使用して処理を分岐させてください。

 なお、もし「ウチのサイトはあまり携帯からは見て欲しくないんだけどー」という場合は、html_body_i.skin を以下のようにでも書き換えてください。

<html><body>
<h1><%=$site_title%></h1>
<center>(c)<%=$site_author%></center>
<hr>
当サイトは携帯からの閲覧には対応してません。パソコンでご覧になってください。
</body></html>

エラー用スキン

 エラー表示に際しては、初期設定で指定されたエラー用のスキンが使用されます。


キャッシュ制御

 rNoteの特徴の一つに、動的生成でありながら、キャッシュ制御により静的生成とほぼ同等のサーバー負荷及び速度を実現している、という点があります。

 キャッシュは大きく2つ、ブラウザのキャッシュと、サーバーに作成されるキャッシュがあります。

 ブラウザのキャッシュは、If-Modified-Since応答によって制御されます。

 カウンタ等、毎回内容が変わる類のものをプラグインとして作成すると、現在の正しい数値ではなく、ブラウザのキャッシュの内容が表示されてしまい、カウンタであれば「何か数値がおかしい」という事になっていまします。
 カウンタを付けたい場合は、プラグインではなく、画像式のCGIをご利用下さい。
 もしくは(xhtmlとしては問題がありますが)インラインフレームで動作させるというのも手でしょう。
 勿論、If-Modified-Since応答自体を止めるというのも一つの方法です(あまりお勧めはしませんが…)。

 なお、CGI版PHP上で動作してる場合、If-Modified-Since応答は行われません。

 サーバーに作成されるキャッシュの方は、以下のタイミングでリフレッシュされます。

  • 再構築
  • BBS/ツッコミの書き込み・トラックバック受信
  • 新規リンク先の受信(カウントアップではリフレッシュは行われません)

 プラグイン呼び出しで <%=$plugin% name="..." cache="off"> と記述すると、サーバー側のキャッシュには結果が保存されず、出力直前に毎回プラグインが呼ばれるようになります。


rNote

official support page

about

setup

outline

reference

tips

downloads

links

bbs

Copyright ©Woody-Rinn All rights reserved. http://rinn.e-site.jp/

Powered by rNote 0.9.7.5