Extension:HTMLets/ja
HTMLets Release status: stable |
|
---|---|
Implementation | Tag |
Description | ファイルからHTMLスニペットを埋め込むことができる |
Author(s) | Daniel Kinzler (Duesentriebトーク) |
Latest version | continuous updates |
MediaWiki | 1.9 以降 |
Database changes | No |
License | GPL-2.0 以降 |
Download | README |
$wgHTMLetsDirectory |
|
<htmlet> |
|
Quarterly downloads | 14 (Ranked 126th) |
Translate the HTMLets extension if it is available at translatewiki.net | |
HTMLets拡張機能は(インラインの)スタティックなHTMLスニペットをwikiページにインクルードする方法を提供します。スニペットはウェブサーバ上の特別なディレクトリのファイルに設定されます。これは任意で潜在的に有害なコードを挿入することをユーザに許可することなく、特別なJavaScriptコード、<iframe>、HTMLフォームを挿入するシンプルな方法に対する要求を解決します。
インストール
[edit]- Download and move the extracted
HTMLets
folder to yourextensions/
directory.
Developers and code contributors should install the extension from Git instead, using:cd extensions/
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/HTMLets - Add the following code at the bottom of your LocalSettings.php file:
require_once "$IP/extensions/HTMLets/HTMLets.php"; $wgHTMLetsDirectory = "$IP/htmlets";
- Done – Navigate to Special:Version on your wiki to verify that the extension is successfully installed.
使用
[edit]
HTMLスニペットをインクルードすることは特別なタグである、<htmlet>
を使用することで行われます。例えば、wikiページで次のコードを設置する場合です:
<htmlet>foobar</htmlet>
これはhtmletディレクトリからfoobar.html
ファイルの内容をインクルードします。スニペットが頻繁に変更して、これらの変更をすぐにwikiページ上で反映させたい場合、そのページに対してHTMLetsにパーサーキャッシュを無効にするように伝えることができます:
<htmlet nocache="yes">foobar</htmlet>
htmletディレクトリは$wgHTMLetsDirectory
を使用して構成することができます; デフォルトの値は"$IP/htmlets"
で、すなわち、MediaWikiのインストレーションrootのhtmlets
ディレクトリです。$wgHTMLetsDirectory
はウェブサーバ上の場所を参照することもできます。例えばhttp://localhost/htmlets/
に設定できます。- note that the .html
で終わることが必須でクエリ文字列がhtmletの名前で許可されていないからです。。
パーサー問題とハック
[edit]現在、mediawikiのパーサーはパーサーフックの出力をそのままにしてしまいます(bugzilla:8997)。このことはスニペットのファイルからのHTMLは特定の状況で一部が表示されない(mangeled)可能性があります(例えば、インデントもしくは空白の行が含まれない)。
リビジョン19966に関して、HTMLetsは"hack modes"によってこの問題に対処します。提供されるhackは<htmlet>
タグに対してhack
属性を使用することで制御でき、$wgHTMLetsHack
設定をLocalSettings.phpで使用することで、グローバルなデフォルトの値を設定できます。次の値が定義されています(最初はhack
属性で使用するための名前で、2番目はLocalSettings.phpで使用するための定数名です):
- "bypass" (HTMLETS_BYPASS_HACK): は安全に動作します; スニペットファイルからBase64でエンコードされたHTMLバージョンを出力して、ParserAfterTidyフックでそれをデコードすることで動作します。これはデフォルトの設定です。
- "strip" (HTMLETS_STRIP_HACK): は表示をめちゃくちゃにするきっかけになるものをストリップまたはエンコードします。これは<pre> でフォーマットされたテキストを壊し特別な状況の下でJavaScriptコードに干渉もする可能性があります。
- "none" (HTMLETS_NO_HACK): スニペットファイルの内容の処理をパーサーに任せます。完全な世界では、これは正しいでしょう。表示されない要素(mangeling)に注意しないとすぐに予期せぬ結果になります。既知のトリガーは空白の行、と空白で始まる行、"#", "*", ";",もしくは":"です、行においてコロン(":")の前にある空白も問題です。ここで説明したものはHTMLETS_STRIP_HACKによって対処できます。別のトリガーがあるかもしれませんし、パーサーの振る舞いが変わることがあります。
関連項目
[edit]- Extension:Anysite
- Extension:RawMsg - similar, uses system messages
- Extension:SecureHTML
- Extension:SecureWidgets
- Extension:Widgets