rNote という名のブログ

  • rNote とは、Woody-rinn さん開発の Blog ツール。
    rnote-sample.png

 Rnoteのメリット

  • 携帯対応であること
  • 一般・商用にかかわらずオープンに利用できること
  • MySQLなどのデーターベース不要なので、設置が容易。移動が容易。
  • モジュールの追加やスタイルの変更など柔軟に対応できること
  • 国産なので応援したいこと
  • 以上の4つが揃ったスクリプトはあまりありません。(ppBlogぐらいか)

 利用サイト

動作環境

  •  PHP 4.2.0 以降で動作します。
  •  データベース等は使用しません。
  • 日本語処理の関係上、マルチバイト文字列関数(mbstring)のサポート、及びマルチバイト正規表現(mbregex)のサポートが必須です(PHPのビルドの際に --enable-mbstring 及び --enable-mbregex が必要)。

特徴

  • 携帯からの閲覧に、標準で対応
  • 自由度の高いスキン機能、カテゴリ別でスキンを変更可能。
  • ローカルで記事を作成、FTPでアップロードが基本です。
  • 記事中に普通に(X)HTMLタグを使用出来ます。
  • 前後移動、カテゴリ表示、カレンダー、年月指定等のナビゲーションツール完備
  • カテゴリ表示などは状況に応じて折り畳まれる。縦に無茶苦茶長くなったりしません
  • RSS、トラックバック、ツッコミ(コメント)、リンク元表示など
  • 掲示板も標準装備
  • 実はRSSの作成もスキンの機能だけで行っています。
  • 新着一覧に画像のサムネールを表示する等も、特にプラグインとかを使用せず、標準の機能だけで可能です。
  • 新着順だけでなく、ファイル名順とか古い順表示なども可能。

カスタマイズとモジュール 追加 

権利など

  • 著作権は Woody-Rinnさんが保持
  • 使用に関しての制限はなし。商用・非商用サイトを問わず、自由にお使い下さいとのこと。
  • ページの何処かに、「Powered by rNote」という文字列、又はそれに相当するアイコン等を表示

設置方法

  • ダウンロード :http://rinn.e-site.jp/rnote/downloads/
  • FTPでアップロード
    • サーバーの適当な場所にアップロード。全ファイル、コード変換を行わない(バイナリ転送モード)で転送。
    • パーミッションを次のように設定。
rss.rdfを(666) 
entries、及びその中のディレクトリ全て(info,diary,bbs)を(777) 
cacheディレクトリを(777) 
  • 再構築
    • あらかじめディレクトリ階層やファイルの情報等を調査・収集(再構築)
    •  ブラウザで、管理者ツール(rnoteadmin.php)を実行する。
    • 管理者ツールにログインする際には、IDとパスワードを入力する必要があります。
    • 初期設定(rnote_config.php)に記述されてる管理者IDとパスワードを入力してください。
    • 無事起動しましたら、「再構築」ボタンを押してください。
  • 完了
    • 「キャッシュファイルの再構築とRSS生成を終了しました。」というメッセージが表示されれば、インストールは無事完了
  • バックアップとレストア
    • サーバートラブルに備え、entries ディレクトリ以下を丸ごとバックアップ。
    • もしツッコミの受け付けを行うのならば、該当記事のログファイル(xxx.log と xxx_ref.log)を (666) にする。
    •  なお、レストアの際、cache ディレクトリの内容は以前のものをコピーする必要はありません。というか、古いキャッシュが残っていると誤動作の原因になりますので、レストア時は cache ディレクトリは空にしておいてください。

初期設定

 初期設定は、rnote_config.php 内で記述します。

 項目数が結構多いですが、実際に書き換えないといけない部分は、実はほとんど無い筈です。  まずは、サイトのタイトルや製作者名等だけを書き換えた状態で動かし、後は動かしながら、必要に応じて設定を変更していってください。

 二者択一(真か偽か)の設定項目では、「true」又は「false」のいずれかを記述します。

サイト全般の設定

SITE_TITLE サイトのタイトルです。好きな名前を付けてください。 SITE_AUTHOR サイトの作者名です。 SITE_URL サイトの url です。入り口ページがある形式のサイトなどの場合、rnote.php の url ではなく、その入り口の url を記述します。 SITE_LANG サイトの言語です。日本の場合は「ja」です。 この設定は、html の lang 属性だけではなく、文字コードの自動判別の際の優先順位にも影響します。 SITE_CHARSET rNoteで使用する文字コードです。UTF-8、EUC-JP 等が使用できます。標準は UTF-8 です。 設定を変更する場合は、プログラム、記事ファイル、スキンファイル等、rNote で使用する全てのファイルを、ここで設定した文字コードで保存し直す必要があります。 なお、Shift_JIS は文字化けが起きるため使用出来ません。 詳しくはこちらの記事等をお読み下さい。 ※現在、UTF-8 以外の文字コードに設定した場合の動作検証は行ってません。従って、ここを UTF-8 以外の設定にする事はあまり推奨出来ません。 ADMIN_ID ADMIN_PASSWORD 管理者用IDとパスワードです。再構築の実行や、管理者権限によるBBSの記事削除等で使用します。 DIR_DATA 記事ファイルを置く場所です。このディレクトリが rNote の Home になります。標準では entries/ というディレクトリ名です。 このディレクトリの下層に更にディレクトリを作成すると、それが rNote 上ではカテゴリとして認識されます。例えば日記コーナーを作成したい場合は entries/diary/ というディレクトリを作成します。 ここで設定されたディレクトリ、及びその下層に作成したディレクトリには、ツッコミやトラックバック等のログファイルも作成されるため、パーミッションを (777) にしておく必要があります。ただ、この設定はセキュリティ的に弱いので、何らかの方策を講じる必要も出てきます。詳しくはサーバーの設定のセキュリティの項をお読み下さい。 DIR_PLUGINS プラグインを置く場所です。 USE_MOD_REWRITE Apache の mod_rewrite モジュールを使用して rnote.php を隠蔽する設定を行っている場合は、ここを true にしてください。なお、mod_rewrite についてはサーバーの設定の項で説明します。 EVAL_ENABLE true で、スキン内にPHPスクリプトを記述して実行する事が可能になります。但し、多少処理が重くなるのと、セキュリティ的な不安が多少ある為、標準では false になっています。 DATETIME_FORMAT DATETIME_LOCALE 日付時刻表示のフォーマットとロケールの規定値です。ツッコミ表示、<%=$Date%> 及び <%=$last_modified%> 命令等で使用します。 詳細は PHPの strftime(); 命令の説明を参照してください。 なお、曜日が文字化けするという場合は、define(DATETIME_LOCALE,'ja_JP.UTF8'); にすると良いらしいです。

表示・カテゴリ設定

NUM_ITEMS 1ページに表示する記事数の初期値です。BODY用スキン内の <%=$site_items%> 置換命令で num オプションが指定されていない場合、ここでの設定が使用されます。 比較的短い文章ページの場合は多めに、文章が長かったり、画像を貼ったりする場合は少なめにすると良いと思います。 FORTHBACKMODE 単一ファイルの表示時に、前後移動はカテゴリ内に限定するかどうかの設定です。標準では true になっています。 例えば、2004年1月1日の日記を表示していて、1月2日には画廊コーナーに画像が発表されている場合、「次へ」で1月2日の画廊ページに行ってしまうと、もし、日記コーナーと画廊コーナーで全く別のデザインを採用していた場合、不都合が起きる場合があり得ます。また、ファイル表示順がコーナーで異なる場合、例えば片方は新着順で片方はファイル名順というような場合、前後移動というのが意味を成さなくなってしまうケースもあり得ます。 カテゴリをコーナーとしては使用せず、単純に話題毎に分けるだけの目的で使用し、又スキンも余り凝った事をしていないような場合は false に変更しても良いでしょう。 $dir_access_enable BBSの新規書き込み及び、XML-RPC:metaWeblog.newPost によるエントリ作成の許可(将来実装予定)など、外部からの書き込みを許可するディレクトリを指定します。 $nodisp_at_toplv 何らかの理由で、このコーナーはトップページに表示したくないという場合、そのカテゴリ名を列記します。 例えばそのコーナーは他とは全く違うデザインを採用している為、トップページで他と混ざって表示されると不都合が発生するという場合。又は、作者についての紹介ページなど、そのコーナーは更新してもいちいち新着に乗せる必要が無い場合等。 $category_name カテゴリ名変換テーブルです。$category_name['diary'] = '日記'; 等と記述します。

ツッコミ・トラックバック、BBS

FORM_CONVENC_AUTO フォーム入力の際に、文字コードの自動判別及び変換を行うかどうかの指定です。標準では false です。 自動判別及び変換は、入力文字数が少ない時などに失敗する場合もありますので、ここは false のままにしておくのが望ましいのですが、もし、フォーム入力がどうしても文字化けするという場合は、最後の手段として true にしてみて下さい。 詳しくは、サーバーの設定の「フォーム入力の文字化け対処」の項で説明します。 TRACKBACK_MAXEXCERPT トラックバック表示時の、記事の要約の最大文字数です。 WRITEBACK_MAXTEXT ツッコミの本文最大文字数です。 BBS_MAXTEXT BBSの本文最大文字数です。 WRITEBACK_MAXQUERY ツッコミ及びBBSの、本文以外の全てのクエリ(名前、URL等)の最大文字数です。 基本的には、各項目の最大長はスキンの投稿フォーム中の maxlength で指定しますので、この設定は、イタズラ防止策としての意味合いになります。 BBS_DEFAULT_TITLE BBS_DEFAULT_NAME BBS及びツッコミ投稿時、タイトル及び名前が未記入の時の規定値です。 MEASURES_FOR_SPAM スパム対策で、投稿者のメールアドレスに含まれる@を変換します。 $wb_acceptdays ツッコミ及びトラックバックの受付日数です。余り古い記事にツッコまれても困るので、ここで設定した日数が経過すると自動的に受け付けを行わなくなります。 カテゴリ毎に指定できます。-1 で無限に受け付け、1以上でその日数経過まで、0の時は最初から受け付けません。 記事ファイル中に <WB_Accept> タグがあった場合はそちらの設定が優先されます。

リンク元関係

REFERER_MERGE リンク元の表示で、同一サイトは一つにまとめるかどうかの設定です。標準は true です。 Blogツールでは、同一ドキュメントが複数のurlで表示されます。例えばこの rNote では、2004年1月1日の日記が

http://your.site.jp/ http://your.site.jp/diary/ http://your.site.jp/diary/20040101.htm http://your.site.jp/?d=2004-01 …等の複数のurlで表示される可能性があります。 このような場合、これをそのままリンク元として記録すると非常に見づらい為、REFERER_MERGE=true の時はこれを一つにまとめて表示します。 但し、大抵はトップページのurlにまとめられてしまうので、日数が経ってしまうと、自分の書いた記事に言及した記事がどれか判らなくなるという弊害もあります。それが困るという場合は、お好みで false にして下さい。 $no_referer_site 「この記事のリンク元」に含めないアドレスを列記します。主なサーチエンジンについては、予めリンク元に含めないように設定してあります。

タグ名設定

 タグ名を設定します。詳細は記事の書き方の項をご覧下さい。  例えば、日付を <Date> ではなく <dc:date> にしたいという事も可です。但しその場合、ITEM用スキンでの日付表示置換命令も <%=$dc:date%> に変更になります。

ファイル名関係

 システムで使用する各種ファイルの、拡張子やファイル名を設定します。  通常は特に設定を変更する必要は無いと思われます。

 記事作成

  • 記事ファイル
    • 記事ファイルは 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>

絵日記やギャラリー等を作成する場合

  • <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>

カテゴリとスキン

 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件が表示されてしまいます。

標準以外の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>

エラー用スキン

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

キャッシュ制御

ブラウザのキャッシュは、If-Modified-Since応答によって制御されます。  カウンタ等、毎回内容が変わる類のものをプラグインとして作成すると、現在の正しい数値ではなく、ブラウザのキャッシュの内容が表示されてしまい、カウンタであれば「何か数値がおかしい」という事になっていまします。  カウンタを付けたい場合は、プラグインではなく、画像式のCGIをご利用下さい。  なお、CGI版PHP上で動作してる場合、If-Modified-Since応答は行われません。

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

再構築 BBS/ツッコミの書き込み・トラックバック受信 新規リンク先の受信(カウントアップではリフレッシュは行われません)  プラグイン呼び出しで <%=$plugin% name="..." cache="off"> と記述すると、サーバー側のキャッシュには結果が保存されず、出力直前に毎回プラグインが呼ばれるようになります。

Counter: 504, today: 1, yesterday: 0

添付ファイル: filernote-sample.png 170件 [詳細]

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-08-19 (日) 09:20:00 (2161d)