htmlinsert.inc.php
Last Modified. 01/16/2007
ファイルをとりこみそのままWiki上に表示するプラグイン
Table of Contents |
説明
指定したファイル(サーバー上のローカルファイル)の内容をそのままWiki上に表示できます。 指定できるのはデフォルトでは index.php 階層の htmlinsert ディレクトリにおかれているファイルのみです。 管理者ならば Wiki で実現できない HTML, JavaScript を自由に取り込むことができます。 ユーザーも管理者が用意しておいてくれれば可能です。 Validation Check, 文字コードチェックは各自で行ってください。
さらにリビジョン 1.5 から :HTML/ という接頭辞のつくWikiページの内容を取り込めるようになりました。 そのページは $edit_auth で編集制限されているか凍結されているか、システムが PKWK_READONLY になっていなければいけません。
使用法
レベル1:ローカルファイルの取り込み
DATA_HOME の階層 (通常は index.php や wiki/ ディレクトリと同階層) に htmlinsert ディレクトリを作成し、 その下に HTML ファイルなどを ftp などでアップロードしてください。Wiki ページで、
#htmlinsert(ファイル名)
と記述すると、ファイルの内容を直接表示できます。 メインの機能はこれだけです。この機能だけで十分な方は以降を読む必要はありません。
おまけ1:
現在は plugin/htmlinsert ディレクトリにファイルを置いてもとりこむことができます。
おまけ2: XHTML 1.0 Transitional
XHTML の DOCTYPE を XHTML 1.0 Transitional に、その場限り変更したい場合は、
#htmlinsert(ファイル名,transitional)
のようにします。XHTML 文法など気にしないという方もいるとは思いますが、 PukiWiki では XHTML 1.1 というかなり厳しい文法にも合致するように開発者の方々が頑張っているので、 多少でもいいので気にしてみてください。ちなみに、XHTML 1.1 では正しくない文法となってしまい、XHTML 1.0 Transitional に変更しなければならないタグや要素の例としては、
- iframe タグ
- <a href="" target="_blank">
などがあります。
レベル2:wiki ページの取り込み
:HTML/ という接頭辞のつく wiki ページに書いた HTML を取り込むこともできます。
ただし、余計なお世話かもしれませんがセキュリティのために、それらのページは編集制限 ($edit_auth, 凍結, またはシステム全体がPKWK_READONLY) されていなければいけない、という制約をつけています。$edit_auth を用いて編集制限するには、以下のように設定しておきます。
pukiwiki.ini.php で
// User definition auth_users = array( // Username => password '使用したいユーザ名' => '使用したいパスワード', // Cleartext ); // Edit auth (0:Disable, 1:Enable) $edit_auth = 1; // Edit auth regex $edit_auth_pages = array( '#^:HTML/#' => '使用したいユーザ名', );
一度設定しておけば、取り込まれるファイルを wiki 上で作成、編集することができるようになり、ローカルファイルアップロードの手間が省けます。
実行
#htmlinsert(:HTML/ページ名) #htmlinsert(ページ名)
ちなみに、:HTML/ を省略した場合、まずローカルファイルを探索して、存在しない場合に wiki ページを探索します。
レベル3:アクション型
アクション型で、指定されたファイルの内容だけを表示できます。
http://あなたのPukiWikiサイト/index.php?cmd=htmlinsert&page=ページ名orファイル名
のように http アクセスすると、ファイルの内容を表示できます。
Wiki とは関係のない単独ページを作りたいが、html ファイルを ftp でアップロードするのが面倒くさい、という場合に使えるかも知れません。
ほかにも、例えば CSS や javascript を wiki 上で編集する、なんて使い方ができます。 <link rel="stylesheet" href="http://あなたのPukiWikiサイト/index.php?cmd=htmlinsert&page=ページ名&content-type=text/css" title="" type="text/css" charset="utf-8" />
<script type="text/javascript" src="http://あなたのPukiWikiサイト/index.php?cmd=htmlinsert&page=ページ名&content-type=text/javascript"></script>
なんてスキンに記述しておくと、Wiki ページに記述した内容を、CSS として利用したりしてくれます。
注: アクション型では cmd, page, content-type は予約語となるので、ページ内変数には使用できません。
レベル4:テンプレート変数
ファイル内に変数を記述してテンプレート的に使用できます。
例えば、flash 用の html タグを出したい、youtube など html タグが提供されているウェブサービスを利用したい、という程度ならばプラグインを作成せずとも(phpを知らずとも)簡単に実現できるようになります。夢が広がります。
テンプレート変数は
${[エンコード:]変数名=[初期値]}
のように指定します。[] は省略可能の意味です。 例えば、初期値、エンコードを省略する場合は
${変数名=}
のようになります。
注意: = は省略できません。
[エンコード:] には以下のような文字を指定できます。例) ${raw:height=350}
- enc: -- rawurlencode する。
- utf8: -- UTF8 に変換後 rawurlencode する。
- euc: -- EUC に変換後 rawurlencode する。
- sjis: -- SJIS に変換後 rawurlencode する。
- jis: -- JIS に変換後 rawurlencode する。
- raw: または省略 -- 生。rawurlencode しない。rawurlencode の raw を意味しているわけではないので注意。
どのように使用するのか、youtube を例にして説明します。
取り込まれるファイルの内容
htmlinsert/u2b 、もしくは wiki ページ :HTML/u2b として保存します。
<div class="u2b_img" style="${raw:style=}"> <object data="http://www.youtube.com/v/${raw:id=}" type="application/x-shockwave-flash" width="${raw:width=425}" height="${raw:height=350}"> <param name="src" value="http://www.youtube.com/v/${raw:id=}" /> </object> </div>
${raw:style=}, ${raw:id=}, ${raw:width=425}, ${raw:height=350} の部分が変数です。
たったこれだけで、Pukiwiki プラグイン(のようなもの)を作ることができます。 ほとんどただの HTML そのままであることがお分かり頂けると思います。
実行
#htmlinsert(u2b,id=qCpbBVthD7o)
htmlinsert プラグインの引数で、まず、ファイル名を指定して、オプションを、変数名=値 のように指定します。${変数名=初期値} な部分が 値 に置き換わります。
HTML出力結果
<div class="u2b_img" style=""> <object data="http://www.youtube.com/v/qCpbBVthD7o" type="application/x-shockwave-flash" width="425" height="350"> <param name="src" value="http://www.youtube.com/v/qCpbBVthD7o" /> </object> </div>
置き換わっていることを確認してください。 id 以外は指定していないので、初期値が使用されています。
結果
ダウンロード
右クリックから保存し、plugin ディレクトリにおいてください。常に開発版です。
更新履歴 viewcvs
旧版
リビジョン | 日付 | マニュアル |
v1.11 | 06/19/2007 | Manual/Plugin/htmlinsert.inc.php/v1.11 |
htmlinsert スクリプト
テンプレート変数を用いたテンプレートを htmlinsert スクリプトと呼んでいます。
利用者の方が投稿できるようにもしたいですが、ここ個人CMS形式なんですよね・・・どうしましょうか。
技術的詳細
一言
- なぜ htmlinclude ではないのか
- (初期は)ローカルファイルの取り込みなので、wiki ページの取り込みである include プラグインと区別したかったのです。
- #htmlinsert(page) のようにオプション(変数)が与えれらない場合、ページ内変数を全く置換していません。
- 従来通りのただの挿し込みをしたい場合に、従来よりも処理が重くなるのを避けるためです
- 今後どうするかはわかりません。