VikiWikiに関すること

VikiWikiとは?

静的HTMLが出力できるWiki Engineです(もちろん動的生成もできます)。書き換えられると困るようなサイト、負荷が気になるようなサイトでは特にお勧めできます。

また、複数のWikiスタイルをサポートしているため他のWiki Engineからの移行もスムーズにできます。詳しくは配布元であるMOPIA - Homeをご覧ください。

プラグイン

個人的につくったプラグインです。実用的なものから役に立たないものまで色々あります。

最終更新日時表示プラグイン
VikiWiki本体にも最終更新日時を表示する機能がありますが、それの機能強化版のようなものです。#lastmodified "最終更新日時 : " / のようにするとこのサイトの最終更新日時表記になります。

改造ToDo

上にあるほど先に作業したい項目です。

  1. XHTML 1.1に準拠させる。(テスト中)
  2. rubyタグを使えるようにする。
  3. <div> と </div> の間が空にならないような仕組みを考える。(空になる場合はdivタグを出力しないとか)
  4. PukiWikiStyleでCSV形式でも表を書けるようにする。
  5. 静的HTMLを上流に遡って生成する。つまり、Frontpage/misc/VikiWikiというページなら、FrontpageとmiscとVikiWikiを更新する。(本サイトのための独自拡張の予定=汎用性の無視)
  6. divタグを極力減らす。(本サイトのための独自改造)

rss.xmlで公開用のURLを使う(CMS利用時)

CMS利用時、rss.xml内のURLはvikiwiki.cgiを使ったURLが記述されています。出力されるRSSを公開用にしたい場合は、rss.rhtmlをダウンロードして上書きしてください。

XHTML 1.1に準拠させる。

header.rhtmlをXHTML 1.1用に書き換えて様子を見ています。

動的生成部ではAcceptヘッダを確認し、メディアタイプ「application/xhtml+xml」が含まれているようなら「text/html」ではなくそちらを返す。また、Accept中のapplication/xhtml+xmlの優先順位や、<meta http-equiv="hoge" content="fuga" />の取り扱いも適切に行う。静的生成の方は mod_rewrite モジュールが有効な環境下で

AddType "text/html; charset=utf-8" .html
 
RewriteEngine On
RewriteCond %{HTTP_ACCEPT} application/xhtml\+xml
RewriteCond %{REQUEST_FILENAME} \.html
RewriteRule .* - "[T=application/xhtml+xml; charset=utf-8]"

としておけばよさそうだ。(但し、動的生成ではないためmetaタグをうまく処理できない。 .htaccessの例は application/xhtml+xml と mod_rewriteより引用。

VikiWiki本体に取り込まれたもの

textディレクトリ・dataディレクトリを明示的に指定するには?

vikiwiki.cgi内の@conf=で始まる中括弧中に次の2行を加える。

"TEXTDIR"=>"/home/hoge/fuga/text",
"DATADIR"=>"/home/hoge/fuga/data",

このように別のディレクトリを指定することで得られるメリットとしては、次のようなものが考えられる。1つしか思いつかない…。

  1. Webサーバ経由ではアクセスできないところにファイルを置く事ができる

SJIS/EUCでVikiWikiを利用する

VikiWikiをUTF-8ではなくSJISやEUCで使う場合、思わぬ問題に引っかかることがあります。この項では解決策を記録していきます。

インストール後にやるべき作業

vikiwiki.cgi内の@conf=で始まる中括弧中にENCODINGという項目がありますが、インストール時に指定した文字コードが入っているか確認してください。utf-8が指定されていたら適切に書き換えます。下はutf-8が入っている場合の例。

"ENCODING"=>"utf-8",

SJISの場合
"ENCODING"=>"Shift_JIS",
EUCの場合
"ENCODING"=>"euc-jp",

簡単なトラブル

ruby tool/unkf.rb hoge を実行したらエラーが出て変換されない
Uconvを入れましょう