<head>\r
<!--\r
Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)\r
- Copyright (C) 2002-2010 The Nucleus Group\r
+ Copyright (C) 2002-2011 The Nucleus Group\r
\r
This program is free software; you can redistribute it and/or\r
modify it under the terms of the GNU General Public License\r
(see nucleus/documentation/index.html#license for more info)\r
\r
@license http://nucleuscms.org/license.txt GNU General Public License\r
- @copyright Copyright (C) 2002-2010 The Nucleus Group\r
+ @copyright Copyright (C) 2002-2011 The Nucleus Group\r
-->\r
<!-- $Id$ -->\r
<!-- $NucleusJP: plugins.html,v 1.9 2007/02/04 06:28:45 kimitake Exp $ -->\r
\r
<div class="heading">\r
<a id="top" name="top">プラグイン API</a>\r
-<em>2009年2月6日</em>\r
+<em>2011年2月3日</em>\r
</div>\r
\r
-<div class="note-trans"><strong>訳者注:</strong> \r
+<div class="note-trans"><strong>訳者注:</strong>\r
<ul>\r
<li>このドキュメントの原文は以下のURLにあります。<br />\r
<a href="http://nucleuscms.org/documentation/devdocs/plugins.html">http://nucleuscms.org/documentation/devdocs/plugins.html</a></li>\r
</ul>\r
</div>\r
\r
-<div class="note"><strong>注:</strong> \r
+<div class="note"><strong>注:</strong>\r
<ul>\r
<li>このドキュメントは基本的なプラグインの書き方についての情報を提供しています。さらに質問がある方は <a href="http://forum.nucleuscms.org/viewforum.php?f=10">Plugin\r
Development Forum</a> (<a href="http://japan.nucleuscms.org/bb/viewforum.php?f=5">日本語フォーラム</a>)をご覧ください。</li>\r
</p>\r
\r
<p>\r
-このドキュメントはNucleusプラグインの作り方についての解説です。 \r
+このドキュメントはNucleusプラグインの作り方についての解説です。\r
</p>\r
\r
<h1><a id="toc" name="toc">目次</a></h1>\r
<li><a href="#firstplug">はじめてプラグインを書いてみる</a></li>\r
<li><a href="#nucleusplugin"><code>NucleusPlugin</code> クラスの概要</a></li>\r
<li><a href="#skinvars"><code><%plugin(...)%></code> スキン変数</a></li>\r
- <li><a href="#templatevars"><code><%plugin(...)%></code> テンプレート変数</a></li> \r
+ <li><a href="#templatevars"><code><%plugin(...)%></code> テンプレート変数</a></li>\r
<li><a href="#actions"><code>action.php</code> を使ったアクション</a></li>\r
<li><a href="#events">イベントとイベント登録の仕方</a></li>\r
<li><a href="#options">オプションを保存する</a></li>\r
{\r
case 'SqlTablePrefix':\r
return 1;\r
- case 'SqlApi':\r
- return 1;\r
+ case 'SqlApi':\r
+ return 1;\r
default:\r
return 0;\r
}\r
</tr>\r
<tr>\r
<td><code>getName()</code></td>\r
- <td>プラグイン名を返します。インストール済みプラグインリストに表示されます。デフォルトの実装では <code>Undefined</code> を返すため、必ず再定義されないといけません。</td> \r
+ <td>プラグイン名を返します。インストール済みプラグインリストに表示されます。デフォルトの実装では <code>Undefined</code> を返すため、必ず再定義されないといけません。</td>\r
</tr>\r
<tr>\r
<td><code>getAuthor()</code></td>\r
- <td>プラグインの作者名を返します。インストール済みプラグインリストに表示されます。デフォルトの実装では <code>Undefined</code> を返すため、必ず再定義されないといけません。</td> \r
+ <td>プラグインの作者名を返します。インストール済みプラグインリストに表示されます。デフォルトの実装では <code>Undefined</code> を返すため、必ず再定義されないといけません。</td>\r
</tr>\r
<tr>\r
<td><code>getURL()</code></td>\r
- <td>プラグインをダウンロード可能な、またはプラグインの追加情報のあるサイトのURLを返します。そのようなサイトがない場合は作者のメールアドレスへの mailto:リンクが適切です。デフォルトの実装では <code>Undefined</code> を返すため、必ず再定義されないといけません。</td> \r
+ <td>プラグインをダウンロード可能な、またはプラグインの追加情報のあるサイトのURLを返します。そのようなサイトがない場合は作者のメールアドレスへの mailto:リンクが適切です。デフォルトの実装では <code>Undefined</code> を返すため、必ず再定義されないといけません。</td>\r
</tr>\r
<tr>\r
<td><code>getDescription()</code></td>\r
- <td>プラグインに関する説明文(長文)を返します。インストール済みプラグインリストに表示されます。デフォルトの実装では <code>Undefined</code> を返します。</td> \r
+ <td>プラグインに関する説明文(長文)を返します。インストール済みプラグインリストに表示されます。デフォルトの実装では <code>Undefined</code> を返します。</td>\r
</tr>\r
<tr>\r
<td><code>getVersion()</code></td>\r
- <td>プラグインの現在のバージョンを返します。デフォルトは <code>0.0</code> を返します。</td> \r
+ <td>プラグインの現在のバージョンを返します。デフォルトは <code>0.0</code> を返します。</td>\r
</tr>\r
<tr>\r
<td><code>getMinNucleusVersion()</code></td>\r
</tr>\r
<tr>\r
<td><code>doSkinVar($skinType)</code></td>\r
- <td><code><%plugin(...)%></code> スキン変数によってプラグインが呼び出されたときにこのメソッドが呼ばれます。<code>$skinType</code> パラメータはプラグインが呼ばれた場所のスキンタイプに該当します(<code>item</code>, <code>archive</code>, ...)。パラメータが一つしかないことに混乱しないでください。複数パラメータを渡すことも<strong>可能</strong>です。<a href="#skinvars"><code>doSkinVar</code> メソッドの実装に関する詳細情報はこちら</a>。デフォルトではこのメソッドはなにも出力しません。</td> \r
+ <td><code><%plugin(...)%></code> スキン変数によってプラグインが呼び出されたときにこのメソッドが呼ばれます。<code>$skinType</code> パラメータはプラグインが呼ばれた場所のスキンタイプに該当します(<code>item</code>, <code>archive</code>, ...)。パラメータが一つしかないことに混乱しないでください。複数パラメータを渡すことも<strong>可能</strong>です。<a href="#skinvars"><code>doSkinVar</code> メソッドの実装に関する詳細情報はこちら</a>。デフォルトではこのメソッドはなにも出力しません。</td>\r
</tr>\r
<tr>\r
<td><code>doTemplateVar(&$item)</code></td>\r
- <td>基本的に <code>doSkinVar</code> と同じですが、今度は<em>テンプレート</em>内(<code>item header/body/footer</code> と <code>dateheader/footer</code>)での<code><%plugin(...)%></code> 変数からの呼び出しになります。デフォルトではこのメソッドはテンプレートをスキンタイプとみなして<code>doSkinVar</code> メソッドに処理を渡します。<a href="#templatevars"><code>doTemplateVar</code> メソッドの実装に関する詳細情報はこちら</a></td> \r
+ <td>基本的に <code>doSkinVar</code> と同じですが、今度は<em>テンプレート</em>内(<code>item header/body/footer</code> と <code>dateheader/footer</code>)での<code><%plugin(...)%></code> 変数からの呼び出しになります。デフォルトではこのメソッドはテンプレートをスキンタイプとみなして<code>doSkinVar</code> メソッドに処理を渡します。<a href="#templatevars"><code>doTemplateVar</code> メソッドの実装に関する詳細情報はこちら</a></td>\r
</tr>\r
<tr>\r
<td><code>doTemplateCommentsVar(&$item, &$comment)</code></td>\r
</tr>\r
<tr>\r
<td><code>doAction($type)</code></td>\r
- <td>プラグインがユーザーインタラクションを求めたとき、 <code>action.php</code>を介してこのメソッドがそれを与えます。これはNucleus自身が新しいコメントや投票を処理するのに使用するスクリプトです。正しいパラメータを用いることで、プラグインからの <code>doAction</code> メソッドを呼び出せます。<code>$type</code> はオプションのメッセージタイプに該当します。<code>doAction</code> メソッド内で、リクエストからの追加の変数にアクセスできます。デフォルトではこのメソッドがエラーメッセージをトリガーすると<code>'No Such Action'</code>という文字列を返します。<a href="#actions"><code>doAction</code> に関する詳細情報はこちら</a></td> \r
+ <td>プラグインがユーザーインタラクションを求めたとき、 <code>action.php</code>を介してこのメソッドがそれを与えます。これはNucleus自身が新しいコメントや投票を処理するのに使用するスクリプトです。正しいパラメータを用いることで、プラグインからの <code>doAction</code> メソッドを呼び出せます。<code>$type</code> はオプションのメッセージタイプに該当します。<code>doAction</code> メソッド内で、リクエストからの追加の変数にアクセスできます。デフォルトではこのメソッドがエラーメッセージをトリガーすると<code>'No Such Action'</code>という文字列を返します。<a href="#actions"><code>doAction</code> に関する詳細情報はこちら</a></td>\r
</tr>\r
<tr>\r
<td><code>install()</code></td>\r
</tr>\r
<tr>\r
<td><code>getEventList()</code></td>\r
- <td>プラグインはイベント登録が可能です。イベントはNucleusが何かアクションを起こすたびに生成されます。たとえば、<code>AddItem</code> イベントは、このイベントを登録しているすべてのプラグインを呼び出します。呼び出されるメソッドは <code>event_AddItem($params)</code>になります。 <code>$params</code> パラメータは、例えば <code>AddItem</code> の <code>itemid</code> のような、情報フィールドを複数持つ連想配列です。デフォルトではどのイベントにも登録されていないことを示す空の配列を返します。<a href="#events">イベントに関する詳細情報はこちら</a></td> \r
+ <td>プラグインはイベント登録が可能です。イベントはNucleusが何かアクションを起こすたびに生成されます。たとえば、<code>AddItem</code> イベントは、このイベントを登録しているすべてのプラグインを呼び出します。呼び出されるメソッドは <code>event_AddItem($params)</code>になります。 <code>$params</code> パラメータは、例えば <code>AddItem</code> の <code>itemid</code> のような、情報フィールドを複数持つ連想配列です。デフォルトではどのイベントにも登録されていないことを示す空の配列を返します。<a href="#events">イベントに関する詳細情報はこちら</a></td>\r
</tr>\r
<tr>\r
<td><code>getTableList()</code></td>\r
<li><code>createItemOption(...)</code>(v3.2)</li>\r
</ul>\r
</td>\r
- <td><a href="#options" title="More info on options">新しいオプションを生成します。</a></td> \r
+ <td><a href="#options" title="More info on options">新しいオプションを生成します。</a></td>\r
</tr>\r
<tr>\r
<td>\r
<li><code>deleteItemOption(...)</code>(v3.2)</li>\r
</ul>\r
</td>\r
- <td><a href="#options" title="More info on options">オプションを削除します。</a></td> \r
+ <td><a href="#options" title="More info on options">オプションを削除します。</a></td>\r
</tr>\r
<tr>\r
<td>\r
<li><code>setItemOption(...)</code>(v3.2)</li>\r
</ul>\r
</td>\r
- <td><a href="#options" title="More info on options">オプションに値をセットします。</a></td> \r
+ <td><a href="#options" title="More info on options">オプションに値をセットします。</a></td>\r
</tr>\r
<tr>\r
<td>\r
<li><code>getItemOption(...)</code>(v3.2)</li>\r
</ul>\r
</td>\r
- <td><a href="#options" title="More info on options">オプションの値を取得します。</a></td> \r
+ <td><a href="#options" title="More info on options">オプションの値を取得します。</a></td>\r
</tr>\r
<tr>\r
<td>\r
<li><code>getAllItemOptions(...)</code>(v3.2)</li>\r
</ul>\r
</td>\r
- <td><a href="#options" title="More info on options">与えられたオプションにより、すべての値(コンテクストごとの一つの値)の連想配列を返します。</a></td> \r
+ <td><a href="#options" title="More info on options">与えられたオプションにより、すべての値(コンテクストごとの一つの値)の連想配列を返します。</a></td>\r
</tr>\r
\r
<tr>\r
</tr>\r
<tr>\r
<td><code>getID()</code></td>\r
- <td>このプラグインのIDを返します(このIDはNucleus内部で利用されるものです)。</td> \r
+ <td>このプラグインのIDを返します(このIDはNucleus内部で利用されるものです)。</td>\r
</tr>\r
<tr>\r
<td><code>getAdminURL()</code></td>\r
- <td>プラグインの管理エリアが置かれたURLを返します(そのような管理エリアがない場合は、この情報は無効です)。</td> \r
+ <td>プラグインの管理エリアが置かれたURLを返します(そのような管理エリアがない場合は、この情報は無効です)。</td>\r
</tr>\r
<tr>\r
<td><code>getDirectory()</code></td>\r
- <td>プラグインの追加ファイルが格納されたサーバーのファイルシステムのパスを返します(そのようなファイルがない場合は、この情報は無効です)。結果は"<code>.../nucleus/plugins/<em>plugname</em>/</code>"のようになります。</td> \r
+ <td>プラグインの追加ファイルが格納されたサーバーのファイルシステムのパスを返します(そのようなファイルがない場合は、この情報は無効です)。結果は"<code>.../nucleus/plugins/<em>plugname</em>/</code>"のようになります。</td>\r
</tr>\r
<tr>\r
<td><code>getShortName()</code></td>\r
- <td>"NP_"部分を省き、全てを小文字にしたプラグインのクラス名を返します。この情報は <code>getAdminURL</code> と <code>getDirectory</code> で使用されます。</td> \r
+ <td>"NP_"部分を省き、全てを小文字にしたプラグインのクラス名を返します。この情報は <code>getAdminURL</code> と <code>getDirectory</code> で使用されます。</td>\r
</tr>\r
\r
</table>\r
<strong>&マークに注意!</strong>\r
</li>\r
</ol>\r
- \r
+\r
<p>テンプレート変数はスキン変数と同じ要領で呼ばれます(<code><%plugin(PlugName,parameters)%></code> または <code><%PlugName(parameters)%></code>)。\r
</p>\r
\r
...\r
function event_PreAddComment(&$data) {\r
// 頭字語 HTML を置き換え\r
- $data['comment']['body'] = \r
+ $data['comment']['body'] =\r
strreplace('HTML',\r
'<acronym title="HyperText Markup Language">HTML</acronym>',\r
$data['comment']['body']);\r
<dd>スキンタイプ('index', 'item', 'archive', 'archivelist', 'member', 'error', 'search', 'imagepopup', 'fileparser'のいずれか)</dd>\r
<dt class="ref">contents</dt>\r
<dd>スキンの内容</dd>\r
- </dl></td> \r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PostSkinParse</td>\r
<dd><code>BLOG</code> オブジェクト</dd>\r
<dt class="ref obj">item</dt>\r
<dd>アイテムデータを持つオブジェクト</dd>\r
- </dl></td> \r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PostItem</td>\r
<dd><code>BLOG</code> オブジェクト</dd>\r
<dt class="ref obj">item</dt>\r
<dd>アイテムデータを持つオブジェクト</dd>\r
- </dl></td> \r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PreComment</td>\r
<td><dl>\r
<dt class="ref">comment</dt>\r
<dd>コメントデータを持つ連想配列</dd>\r
- </dl></td> \r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PostComment</td>\r
<td><dl>\r
<dt class="ref">comment</dt>\r
<dd>コメントデータを持つ連想配列</dd>\r
- </dl></td> \r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PreDateHead</td>\r
<dd><code>BLOG</code> オブジェクト</dd>\r
<dt class="ro">timestamp</dt>\r
<dd>日付ヘッダーのタイムスタンプ</dd>\r
- </dl></td> \r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PostDateHead</td>\r
<dd><code>BLOG</code> オブジェクト</dd>\r
<dt class="ro">timestamp</dt>\r
<dd>日付ヘッダーのタイムスタンプ</dd>\r
- </dl></td> \r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PreDateFoot</td>\r
<dd><code>BLOG</code> オブジェクト</dd>\r
<dt class="ro">timestamp</dt>\r
<dd>日付フッターのタイムスタンプ</dd>\r
- </dl></td> \r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PostDateFoot</td>\r
<dt class="ro">timestamp</dt>\r
<dd>日付フッターのタイムスタンプ</dd>\r
</dl></td>\r
- </tr> \r
+ </tr>\r
<tr>\r
<td>LoginSuccess</td>\r
<td>ログイン成功後</td>\r
<dd><code>MEMBER</code> オブジェクト</dd>\r
<dt class="ro">username</dt>\r
<dd>ログ印字に使用されたログイン名</dd>\r
- </dl></td> \r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>LoginFailed</td>\r
<td><dl>\r
<dt class="ro">username</dt>\r
<dd>ログイン時に使われたユーザー名</dd>\r
- </dl></td> \r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>Logout</td>\r
<td><dl>\r
<dt class="ro">username</dt>\r
<dd>ログアウト時のユーザー名</dd>\r
- </dl></td> \r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PreBlogContent</td>\r
<dd><code>BLOG</code> オブジェクト</dd>\r
<dt class="ro">type</dt>\r
<dd>呼び出されたスキン変数 ('blog', 'otherblog', 'archive', 'archivelist', 'item', 'searchresults', 'othersearchresults', 'categorylist', 'otherarchive', 'otherarchivelist')</dd>\r
- </dl></td> \r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PostBlogContent</td>\r
<dd><code>BLOG</code> オブジェクト</dd>\r
<dt class="ro">type</dt>\r
<dd>呼び出されたスキン変数 ('blog', 'otherblog', 'archive', 'archivelist', 'item', 'searchresults', 'othersearchresults', 'categorylist', 'otherarchive', 'otherarchivelist')</dd>\r
- </dl></td> \r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PreAddComment</td>\r
<dd>コメントデータ(連想配列)</dd>\r
<dt class="ref">spamcheck</dt>\r
<dd>(v3.3) <em>SpamCheck</em>イベントの結果として返されるデータ構造(連想配列)</dd>\r
- </dl></td> \r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PostAddComment</td>\r
<dd>コメントのID</dd>\r
<dt class="ref">spamcheck</dt>\r
<dd>(v3.3) <em>SpamCheck</em>イベントの結果として返されるデータ構造(連想配列)</dd>\r
- </dl></td> \r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PostRegister</td>\r
<td><dl>\r
<dt class="obj ref">member</dt>\r
<dd>新しい<code>MEMBER</code> オブジェクト</dd>\r
- </dl></td> \r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PostAddItem</td>\r
<td><dl>\r
<dt class="ro">itemid</dt>\r
<dd>データベースに出来た新しい itemid</dd>\r
- </dl></td> \r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PostUpdateItem</td>\r
<dd>1 (ドラフト) or 0 (非ドラフト)</dd>\r
<dt class="ref">catid</dt>\r
<dd>カテゴリーID</dd>\r
- </dl></td> \r
- </tr> \r
+ </dl></td>\r
+ </tr>\r
<tr>\r
<td>PreUpdateItem</td>\r
<td>データベースにあるアイテムが更新される直前</td>\r
<dd>1 (コメント不可) or 0 (コメント可)</dd>\r
<dt class="ref">catid</dt>\r
<dd>カテゴリーID</dd>\r
- </dl></td> \r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PrepareItemForEdit</td>\r
<td><dl>\r
<dt class="ref">item</dt>\r
<dd>アイテムデータを持つ連想配列</dd>\r
- </dl></td> \r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PreUpdateComment</td>\r
<td><dl>\r
<dt class="ref">body</dt>\r
<dd>コメント本文</dd>\r
- </dl></td> \r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PrepareCommentForEdit</td>\r
<td><dl>\r
<dt class="ref">comment</dt>\r
<dd>コメントデータ(連想配列)</dd>\r
- </dl></td> \r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PrePluginOptionsEdit</td>\r
<dt class="ro">contextid</dt>\r
<dd>コンテクスト ID (blogid, memberid, catid, itemid コンテクストによる)</dd>\r
\r
- </dl></td> \r
- </tr> \r
+ </dl></td>\r
+ </tr>\r
<tr>\r
<td>PrePluginOptionsUpdate</td>\r
<td>\r
<dt class="ro">plugid</dt>\r
<dd>プラグイン ID (これが気になるなら、<code>GetID()</code>を見ると理解できる)(globalコンテクスト)</dd>\r
<dt class="ro">blogid</dt>\r
- <dd>(v2.2) blog ID (blog コンテクスト)</dd> \r
+ <dd>(v2.2) blog ID (blog コンテクスト)</dd>\r
<dt class="ref obj">blog</dt>\r
- <dd>(v2.2) BLOG オブジェクト (blog コンテクスト)</dd> \r
+ <dd>(v2.2) BLOG オブジェクト (blog コンテクスト)</dd>\r
<dt class="ro">memberid</dt>\r
- <dd>(v2.2) member ID (member コンテクスト)</dd> \r
+ <dd>(v2.2) member ID (member コンテクスト)</dd>\r
<dt class="ref obj">member</dt>\r
- <dd>(v2.2) MEMBER オブジェクト (member コンテクスト)</dd> \r
+ <dd>(v2.2) MEMBER オブジェクト (member コンテクスト)</dd>\r
<dt class="ro">catid</dt>\r
- <dd>(v2.2) category ID (category コンテクスト)</dd> \r
+ <dd>(v2.2) category ID (category コンテクスト)</dd>\r
<dt class="ro">itemid</dt>\r
<dd>(v2.2) item ID (item コンテクスト)</dd>\r
<dt class="ref obj">member</dt>\r
<dd>(v2.2) ITEM オブジェクト (item コンテクスト)</dd>\r
- </dl></td> \r
- \r
- </tr> \r
+ </dl></td>\r
+\r
+ </tr>\r
<tr>\r
<td>PostAuthentication</td>\r
<td>(v2.0b) ログイン処理の完了後。ページリクエストごとに発生</td>\r
<td><dl>\r
<dt class="ro">loggedIn</dt>\r
<dd><code>$member->isLoggedIn()</code>の戻り値</dd>\r
- </dl></td> \r
- </tr> \r
+ </dl></td>\r
+ </tr>\r
<tr>\r
<td>PreAddItemForm</td>\r
<td>(v2.0b) アイテム追加フォーム(ブックマークレットまたは管理エリア)が生成される直前</td>\r
<dd>連想配列への参照。そのうちの'title', 'body', 'more'にはフォームフィールドへの初期値を与えることができます。複数のプラグイン間でこれらの値の変更を避けるには、処理後に'hasBeenSet'の値を1にセットします(かつ処理前にこの値をチェックするようにします)</dd>\r
<dt class="ref obj">blog</dt>\r
<dd><code>BLOG</code> オブジェクトへの参照</dd>\r
- </dl></td> \r
- </tr> \r
+ </dl></td>\r
+ </tr>\r
<tr>\r
<td>AddItemFormExtras</td>\r
<td>(v2.0b) アイテム追加ページまたはブックマークレット内部のどこか。<code>template</code> ファイルの類を別に用意しなくても、ここでプラグインがカスタムフィールドを追加できる。</td>\r
<td><dl>\r
<dt class="ref obj">blog</dt>\r
<dd><code>BLOG</code> オブジェクトへの参照</dd>\r
- </dl></td> \r
- </tr> \r
+ </dl></td>\r
+ </tr>\r
<tr>\r
<td>EditItemFormExtras</td>\r
<td>\r
<dt class="ro">variables</dt>\r
<dd>\r
(read-only) 編集されるアイテムに関する全ての情報を持つ連想配列: 'itemid', 'draft', 'closed', 'title', 'body', 'more', 'author', 'authorid', 'timestamp', 'karmapos', 'karmaneg', 'catid'\r
- </dd> \r
+ </dd>\r
<dt class="ro">itemid</dt>\r
<dd>アイテム IDへのショートカット</dd>\r
- </dl></td> \r
- </tr> \r
+ </dl></td>\r
+ </tr>\r
<tr>\r
<td>BlogSettingsFormExtras</td>\r
<td>(v2.0) blog設定ページにフォームを追加可能\r
追加フォームの内容\r
</p></form></code></pre>\r
このようにして、正しい構造を保ちつつ複数のプラグインがオプションを保持できます。またフィールド名の重複を避けるためにプレフィックスを用いてください(例 <code>plug_tb_url</code>)。\r
- \r
+\r
</td>\r
<td><dl>\r
<dt class="obj ref">blog</dt>\r
<dd><code>BLOG</code> オブジェクトへの参照</dd>\r
- </dl></td> \r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PreDeleteItem</td>\r
<td><dl>\r
<dt class="ro">itemid</dt>\r
<dd>削除されるアイテムID</dd>\r
- </dl></td> \r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PostDeleteItem</td>\r
<td><dl>\r
<dt class="ro">itemid</dt>\r
<dd>削除されたアイテムID</dd>\r
- </dl></td> \r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PreDeleteCategory</td>\r
<td><dl>\r
<dt class="ro">catid</dt>\r
<dd>削除されるカテゴリー ID</dd>\r
- </dl></td> \r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PostDeleteCategory</td>\r
<td><dl>\r
<dt class="ro">catid</dt>\r
<dd>削除されたカテゴリー ID</dd>\r
- </dl></td> \r
- </tr> \r
+ </dl></td>\r
+ </tr>\r
<tr>\r
<td>PreDeleteBlog</td>\r
<td>(v2.0) blogがデータベースから削除される直前</td>\r
<td><dl>\r
<dt class="ro">blogid</dt>\r
<dd>削除されるblogID</dd>\r
- </dl></td> \r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PostDeleteBlog</td>\r
<td><dl>\r
<dt class="ro">blogid</dt>\r
<dd>削除されたblogID</dd>\r
- </dl></td> \r
- </tr> \r
+ </dl></td>\r
+ </tr>\r
<tr>\r
<td>PreDeleteMember</td>\r
<td>(v2.0) メンバーがデータベースから削除される直前</td>\r
<td><dl>\r
<dt class="ref obj">member</dt>\r
<dd><code>削除されるメンバーに関するMEMBER</code> オブジェクトへの参照</dd>\r
- </dl></td> \r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PostDeleteMember</td>\r
<td><dl>\r
<dt class="ref obj">member</dt>\r
<dd><code>削除されるメンバーに関するMEMBER</code> オブジェクトへの参照</dd>\r
- </dl></td> \r
- </tr> \r
+ </dl></td>\r
+ </tr>\r
<tr>\r
<td>PreDeleteTeamMember</td>\r
<td>(v2.0) メンバーがweblogチームから削除される直前</td>\r
<dd><code>MEMBER</code> オブジェクトへの参照</dd>\r
<dt class="ro">blogid</dt>\r
<dd>blogID</dd>\r
- </dl></td> \r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PostDeleteTeamMember</td>\r
<dd><code>MEMBER</code> オブジェクトへの参照</dd>\r
<dt class="ro">blogid</dt>\r
<dd>blogID</dd>\r
- </dl></td> \r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PreDeleteComment</td>\r
<td><dl>\r
<dt class="ro">commentid</dt>\r
<dd>削除されるコメントID</dd>\r
- </dl></td> \r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PostDeleteComment</td>\r
<td><dl>\r
<dt class="ro">commentid</dt>\r
<dd>削除されたコメントID</dd>\r
- </dl></td> \r
- </tr> \r
+ </dl></td>\r
+ </tr>\r
<tr>\r
<td>ActionLogCleared</td>\r
<td>(v2.0) アクションログが消去された後</td>\r
- <td>なし</td> \r
+ <td>なし</td>\r
</tr>\r
<tr>\r
<td>PreDeleteTemplate</td>\r
<td><dl>\r
<dt class="ro">templateid</dt>\r
<dd>削除されるテンプレートID</dd>\r
- </dl></td> \r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PostDeleteTemplate</td>\r
<td><dl>\r
<dt class="ro">templateid</dt>\r
<dd>削除されたテンプレートID</dd>\r
- </dl></td> \r
- </tr> \r
+ </dl></td>\r
+ </tr>\r
<tr>\r
<td>PreDeleteSkin</td>\r
<td>(v2.0) スキンがデータベースから削除される直前</td>\r
<td><dl>\r
<dt class="ro">skinid</dt>\r
<dd>削除されるスキンID</dd>\r
- </dl></td> \r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PostDeleteSkin</td>\r
<td><dl>\r
<dt class="ro">skinid</dt>\r
<dd>削除されたスキンID</dd>\r
- </dl></td> \r
- </tr> \r
+ </dl></td>\r
+ </tr>\r
<tr>\r
<td>PreDeleteSkinPart</td>\r
<td>スペシャルスキンパーツがデータベースから削除される直前</td>\r
<dd>削除されるスペシャルスキンパーツが含まれるスキンのID</dd>\r
<dt class="ro">skintype</dt>\r
<dd>削除されるスペシャルスキンパーツの名前</dd>\r
- </dl></td> \r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PostDeleteSkin</td>\r
<dd>削除されたスペシャルスキンパーツが含まれるスキンのID</dd>\r
<dt class="ro">skintype</dt>\r
<dd>削除されたスペシャルスキンパーツの名前</dd>\r
- </dl></td> \r
- </tr> \r
+ </dl></td>\r
+ </tr>\r
<tr>\r
<td>PreDeletePlugin</td>\r
<td>(v2.0) プラグインがデータベースから削除される直前</td>\r
<td><dl>\r
<dt class="ro">plugid</dt>\r
<dd>削除されるプラグインID</dd>\r
- </dl></td> \r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PostDeletePlugin</td>\r
<td><dl>\r
<dt class="ro">plugid</dt>\r
<dd>削除されたプラグインID</dd>\r
- </dl></td> \r
- </tr> \r
+ </dl></td>\r
+ </tr>\r
<tr>\r
<td>PreDeleteBan</td>\r
<td>(v2.0) 禁止IPがデータベースから削除される直前</td>\r
<dt class="ro">blogid</dt>\r
<dd>禁止IPが削除されるblogのID</dd>\r
<dt class="ro">iprange</dt>\r
- <dd>禁止されたIPレンジ</dd> \r
- </dl></td> \r
+ <dd>禁止されたIPレンジ</dd>\r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PostDeleteBan</td>\r
<dt class="ro">blogid</dt>\r
<dd>禁止IPが削除されたblogのID</dd>\r
<dt class="ro">iprange</dt>\r
- <dd>禁止されたIPレンジ</dd> \r
- </dl></td> \r
- </tr> \r
+ <dd>禁止されたIPレンジ</dd>\r
+ </dl></td>\r
+ </tr>\r
<tr>\r
<td>PreAddCategory</td>\r
<td>(v2.0) 新しいカテゴリーがデータベースに生成される直前</td>\r
<dt class="ref obj">blog</dt>\r
<dd><code>BLOG</code> オブジェクトの参照</dd>\r
<dt class="ref">name</dt>\r
- <dd>新しいカテゴリー名</dd> \r
+ <dd>新しいカテゴリー名</dd>\r
<dt class="ref">description</dt>\r
<dd>新しいカテゴリーの説明</dd>\r
- </dl></td> \r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PostAddCategory</td>\r
<dt class="ref obj">blog</dt>\r
<dd><code>BLOG</code> オブジェクトへの参照</dd>\r
<dt class="ro">name</dt>\r
- <dd>新しいカテゴリー名</dd> \r
+ <dd>新しいカテゴリー名</dd>\r
<dt class="ro">description</dt>\r
<dd>新しいカテゴリーの説明</dd>\r
<dt class="ro">catid</dt>\r
- <dd>新しいカテゴリー ID</dd> \r
- </dl></td> \r
+ <dd>新しいカテゴリー ID</dd>\r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PreAddBlog</td>\r
<dd>新しい blogの説明</dd>\r
<dt class="ref">defaultskin</dt>\r
<dd>新しいblogのデフォルトスキンのID</dd>\r
- </dl></td> \r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PostAddBlog</td>\r
<td><dl>\r
<dt class="ref obj">blog</dt>\r
<dd>新しい<code>BLOG</code> オブジェクト</dd>\r
- </dl></td> \r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PreAddPlugin</td>\r
<td><dl>\r
<dt class="ref">file</dt>\r
<dd>新しいプラグインのファイル名</dd>\r
- </dl></td> \r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PostAddPlugin</td>\r
<td><dl>\r
<dt class="ref obj">plugin</dt>\r
<dd>新しく追加されたプラグインのオブジェクト</dd>\r
- </dl></td> \r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PreAddTeamMember</td>\r
<dd><code>MEMBER</code> オブジェクト</dd>\r
<dt class="ref">admin</dt>\r
<dd>新しく追加されたメンバーが管理権限を持っているかどうかを示すブール値</dd>\r
- </dl></td> \r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PostAddTeamMember</td>\r
<dd><code>MEMBER</code> オブジェクト</dd>\r
<dt class="ro">admin</dt>\r
<dd>新しく追加されたメンバーが管理権限を持っているかどうかを示すブール値</dd>\r
- </dl></td> \r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PreAddTemplate</td>\r
<dd>新しいテンプレート名</dd>\r
<dt class="ref">description</dt>\r
<dd>新しいテンプレートの説明</dd>\r
- </dl></td> \r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PostAddTemplate</td>\r
<dd>新しいテンプレートの説明</dd>\r
<dt class="ro">templateid</dt>\r
<dd>新しいテンプレートID</dd>\r
- </dl></td> \r
- </tr> \r
+ </dl></td>\r
+ </tr>\r
<tr>\r
<td>PreAddSkin</td>\r
<td>(v2.0) 新しいスキンが生成される直前(注:スキンが複製されたときも呼ばれる)</td>\r
<dd>新しいスキンのインクルードモード</dd>\r
<dt class="ref">includePrefix</dt>\r
<dd>新しいスキンのインクルードプレフィックス</dd>\r
- </dl></td> \r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PostAddSkin</td>\r
<dd>新しいスキンのインクルードプレフィックス</dd>\r
<dt class="ro">skinid</dt>\r
<dd>新しいスキンID</dd>\r
- </dl></td> \r
- </tr> \r
+ </dl></td>\r
+ </tr>\r
<tr>\r
<td>PreAddBan</td>\r
<td>(v2.0) 新しい禁止IPが追加される直前</td>\r
<dd>禁止されたIPレンジ</dd>\r
<dt class="ref">reason</dt>\r
<dd>禁止された理由を記述したテキストメッセージ</dd>\r
- </dl></td> \r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PostAddBan</td>\r
<dd>禁止されたIPレンジ</dd>\r
<dt class="ro">reason</dt>\r
<dd>禁止された理由を記述したテキストメッセージ</dd>\r
- </dl></td> \r
- </tr> \r
+ </dl></td>\r
+ </tr>\r
\r
<tr>\r
<td>PreMoveItem</td>\r
<dt class="ref">destblogid</dt>\r
<dd>移動先のblogID</dd>\r
<dt class="ref">destcatid</dt>\r
- <dd>移動先のカテゴリーID</dd> \r
- </dl></td> \r
+ <dd>移動先のカテゴリーID</dd>\r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PostMoveItem</td>\r
<dt class="ro">destblogid</dt>\r
<dd>新しいblogID</dd>\r
<dt class="ro">destcatid</dt>\r
- <dd>新しいカテゴリーID</dd> \r
- </dl></td> \r
+ <dd>新しいカテゴリーID</dd>\r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PreMoveCategory</td>\r
<dt class="ref obj">sourceblog</dt>\r
<dd>移動元の<code>BLOG</code> オブジェクト</dd>\r
<dt class="ref obj">destblog</dt>\r
- <dd>移動先の<code>BLOG</code> オブジェクト</dd> \r
- </dl></td> \r
+ <dd>移動先の<code>BLOG</code> オブジェクト</dd>\r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>PostMoveCategory</td>\r
<dt class="ref obj">sourceblog</dt>\r
<dd>移動元の<code>BLOG</code> オブジェクト</dd>\r
<dt class="ref obj">destblog</dt>\r
- <dd>移動先の<code>BLOG</code> オブジェクト</dd> \r
- </dl></td> \r
- </tr> \r
+ <dd>移動先の<code>BLOG</code> オブジェクト</dd>\r
+ </dl></td>\r
+ </tr>\r
<tr>\r
<td>MemberSettingsFormExtras</td>\r
- <td><span style="display:block;margin-bottom:1.5em;">(v2.0) メンバー設定ページにフォームを追加可能</span> \r
+ <td><span style="display:block;margin-bottom:1.5em;">(v2.0) メンバー設定ページにフォームを追加可能</span>\r
あまり多くのデータを追加しないこと。また以下のように<strong>正しいXHTML</strong>を生成してください。\r
<pre class="example"><code><h4>プラグイン名</h4>\r
<form method="post" action="..."><p>\r
追加フォームの内容\r
</p></form></code></pre>\r
このようにして、正しい構造を保ちつつ複数のプラグインがオプションを保持できます。またフィールド名の重複を避けるためにプレフィックスを用いてください(例 <code>plug_tb_url</code>)。\r
- \r
+\r
</td>\r
<td><dl>\r
<dt class="ref obj">member</dt>\r
<dd><code>MEMBER</code> オブジェクトへの参照</dd>\r
- </dl></td> \r
+ </dl></td>\r
</tr>\r
<tr>\r
<td>GeneralSettingsFormExtras</td>\r
追加フォームの内容\r
</p></form></code></pre>\r
このようにして、正しい構造を保ちつつ複数のプラグインがオプションを保持できます。またフィールド名の重複を避けるためにプレフィックスを用いてください(例 <code>plug_tb_url</code>)。\r
- \r
+\r
</td>\r
- <td>なし</td> \r
+ <td>なし</td>\r
</tr>\r
<tr>\r
<td>AdminPrePageHead</td>\r
</tr>\r
<tr>\r
<td>RegistrationFormExtraFields</td>\r
- <td>(v3.33) createaccount.php からビジターに表示されるアカウント作成フォームが表示され、FormExtra イベントが起きる前。プラグインはこのイベントによって、アカウント作成フォームに独自のフィールドを付け加える事が出来ます。PostRegister イベントに同時に登録すると、付け加えたフィールドの値を評価する事が出来る様になります。渡されるパラメータは、付け加えられたフィールドを、元々のフィールドと違和感無く表示させる為に使用されます。</td>\r
+ <td>(v3.40) createaccount.php からビジターに表示されるアカウント作成フォームが表示され、FormExtra イベントが起きる前。プラグインはこのイベントによって、アカウント作成フォームに独自のフィールドを付け加える事が出来ます。PostRegister イベントに同時に登録すると、付け加えたフィールドの値を評価する事が出来る様になります。渡されるパラメータは、付け加えられたフィールドを、元々のフィールドと違和感無く表示させる為に使用されます。このイベントの使用例はNP_Profileプラグインを参照してください。</td>\r
<td><dl>\r
<dt class="ro">type</dt>\r
<dd>アカウント作成フォームのタイプ。通常は <code>createaccount.php</code>。</dd>\r
<dd>設定しようとしているパスワードが妥当かどうかのフラグ。デフォルトは「真」。プラグインはこの値の妥当性を審査するべきです。</dd>\r
</dl></td>\r
</tr>\r
+ <tr>\r
+ <td>PostParseURL</td>\r
+ <td>(v3.60) URLが完全にパースされた後( globalfunctions の ParseURL による)。selector() が実行されたりpath関連のglobal変数に何かがセットされる前にglobal変数を調整するのに便利。</td>\r
+ <td><dl>\r
+ <dt class="ro">type</dt>\r
+ <dd>生成するURLのタイプ(item, blog, ...)</dd>\r
+ <dt class="ro">info</dt>\r
+ <dd>解決される前のURL(この名前は以前の変数名である<code>pathinfo</code>から来ています).</dd>).</dd>\r
+ </dl></td>\r
+ </tr>\r
+\r
+ <tr>\r
+ <td>MediaUploadFormExtras</td>\r
+ <td>(v3.60) Nucleusメディアマネージャのファイルアップロードページにフィールドを追加します。すべての出力が正しいXHTML 1.0 でなければなりません。PreMediaUpload イベントに同時に登録し、requestVar()を使って追加したフィールドから値を得ます。</td>\r
+ <td>データは渡されません。</td>\r
+ </tr>\r
<!--\r
<tr>\r
<td></td>\r
<ol>\r
<li><strong>グローバルオプション</strong>:管理エリアのプラグインセクションで編集可能</li>\r
<li><strong>blogオプション</strong>:blog設定ページで編集可能</li>\r
- <li><strong>カテゴリーオプション</strong>:blog設定ページ(のカテゴリー編集ページ)で編集可能</li> \r
+ <li><strong>カテゴリーオプション</strong>:blog設定ページ(のカテゴリー編集ページ)で編集可能</li>\r
<li><strong>メンバーオプション</strong>:メンバー編集ページで編集可能</li>\r
<li><strong>アイテムオプション</strong>:アイテムの追加、およびアイテムの編集ページで編集可能</li>\r
</ol>\r
<dt>textarea (v2.2)</dt>\r
<dd>複数行のテキストフィールド</dd>\r
<dt>select (v2.2)</dt>\r
- <dd>ドロップダウンメニュー。次のような形式の追加情報が必要です: Option 1|value1|Option 2|value2|Option 3|value3 \r
+ <dd>ドロップダウンメニュー。次のような形式の追加情報が必要です: Option 1|value1|Option 2|value2|Option 3|value3\r
</dd>\r
</dl>\r
\r
<table summary="setOption"><tr>\r
<th abbr="param">パラメータ</th>\r
<th abbr="value">値</th>\r
-</tr><tr> \r
+</tr><tr>\r
<td>$name</td>\r
<td>オプション名</td>\r
</tr><tr>\r
<table summary="getOption"><tr>\r
<th abbr="param">パラメータ</th>\r
<th abbr="value">値</th>\r
-</tr><tr> \r
+</tr><tr>\r
<td>$name</td>\r
<td>オプション名</td>\r
</tr></table>\r
<table summary="deleteOption"><tr>\r
<th abbr="param">パラメータ</th>\r
<th abbr="value">値</th>\r
-</tr><tr> \r
+</tr><tr>\r
<td>$name</td>\r
<td>オプション名</td>\r
</tr></table>\r
<p>いくつかの注意点</p>\r
<ul>\r
<li><code>nucleus_plug_<em>plugname</em></code> のように、他のプラグインと競合しないテーブル名を考えてください。カスタムプレフィックスに対応するため、テーブル名を<code>sql_table('plug_plugname')</code> で生成してください。</li>\r
- <li>自分自身でデータベース接続をする必要はありません。PHPコマンド <code>mysql_query()</code> を使ってSQL命令を実行できます。</li>\r
+ <li>è\87ªå\88\86è\87ªèº«ã\81§ã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹æ\8e¥ç¶\9aã\82\92ã\81\99ã\82\8bå¿\85è¦\81ã\81¯ã\81\82ã\82\8aã\81¾ã\81\9bã\82\93ã\80\82PHPã\82³ã\83\9eã\83³ã\83\89 <code>mysql_query()</code> ã\81®ã\83©ã\83\83ã\83\91ã\83¼ã\81§ã\81\82ã\82\8bNucleusé\96¢æ\95° <code>sql_query()</code> ã\82\92使ã\81£ã\81¦SQLå\91½ä»¤ã\82\92å®\9fè¡\8cã\81§ã\81\8dã\81¾ã\81\99ã\80\82</li>\r
<li>自分でデータベース接続をする場合、後でNucleusデータベースへの接続を復元するようにしてください。自前処理の後で <code>sql_connect()</code> を呼ぶことで可能です。頻繁な再接続を避けるために、コンストラクタでそれを行うのも良いです。<code>$this- >db</code>のリンクIDを保持でき、各クエリにそれを渡すことができます。</li>\r
<li>バックアップ機能を使う時は、独自テーブルもバックアップに含めるよう、<code>getTableList()</code> を再定義してください。</li>\r
<li>ユーザーがプラグインをアップデートする時や、何らかの理由で一時的にプラグインをアンインストールしなければならない時、やプラグイン独自のテーブルの内容が失われる事があります。そうならないように、テーブルを削除するか否かをプラグインオプションで設定できるようにしておくといいでしょう。テーブルの削除をオプションでコントロールするには、install()メソッドで次のようなオプションを作成します。\r
$data['options'],\r
array(\r
'title' => '<strong>プラグイン名</strong>',\r
- 'url' => $this-%gt;getAdminURL(),\r
+ 'url' => $this->getAdminURL(),\r
'tooltip' => '<strong>ツールチップテキスト</strong>'\r
)\r
);\r
\r
<pre class="example"><code> function init() {\r
// include language file for this plugin\r
- $language = ereg_replace( '[\\|/]', '', getLanguageName());\r
+ $language = preg_replace( '#\\\\|/#', '', getLanguageName());\r
if (file_exists($this->getDirectory().$language.'.php'))\r
include_once($this->getDirectory().$language.'.php');\r
else\r
<p>偉大なプラグインのいくつかは、様々なスキンや URL の生成において、必ずしもそのまま使用できるとはいえません。なぜなら、doSkinVar() メソッドによって出力されるものが、\r
ユーザーのニーズに十二分に合致するものであるとは言いがたいからです。Nucleus では、出力をここのユーザーによっておのおののニーズに沿ったものにする為に、いくつかのツールを用意しています。</p>\r
\r
-<h2>URLの出力</h2>\r
+<!--<h2>URLの出力</h2>-->\r
\r
<p>各ブログ・カテゴリー・アイテム・メンバー、それから action.php や管理エリア、または各プラグインの管理エリアなどの URL を出力する為に、Nucleus はコアの機能として\r
いくつかのファンクションとグローバル変数を用意しています。:</p>\r
</tr>\r
</table>\r
\r
-<h2>スキンへの出力にテンプレートを使う</h2>\r
+<!--<h2>スキンへの出力にテンプレートを使う</h2>-->\r
\r
<p>出力する文字列をテンプレートを使って整形出来るようにしましょう。あなたが順不同のリストで出力したいと考えていたとしても、別のユーザーは同じデータを\r
記号で区切ったり、特別な形で出力したいと考えるかもしれません。Nucleus にはテンプレートデータを作ったり定義したりする2種類の方法があります。\r
<li><strong>プラグインのオプションを使う方法。</strong>この方法は v3.2 以降で使用でき、次のように <code>install()</code> メソッド\r
に記述する事によって簡単に作成する事が出来ますが、アップグレードのためにプラグインを削除した時に、ユーザーは同時にカスタマイズした\r
テンプレートを失ってしまうという大きなデメリットがあります。\r
- <pre class="example"><code>$this->createOption('my_template', \r
- 'プラグインの出力の為のテンプレート', \r
- 'textarea', \r
+ <pre class="example"><code>$this->createOption('my_template',\r
+ 'プラグインの出力の為のテンプレート',\r
+ 'textarea',\r
'<li><%foo%> loves <%bar%></li>');</code></pre>\r
<code>doSkinVar()</code> メソッドで、<code>foo</code> と <code>bar</code> を次のように定義して、テンプレートを埋めます。\r
<pre class="example"><code>$mytemplate = $this->getOption('my_template');\r
<li>Sid loves Nancy</li>\r
<li>Mickey loves Minnie</li></code></pre>\r
</li>\r
- \r
+\r
<li><strong>Nucleus コアのテンプレートシステムを使う方法。</strong>この方法は v3.4以降で使用できます。この方法の利点は、他のテンプレートと\r
同じようにデータベースに格納され、配布用にテンプレートをエクスポートできるところにあります。この API を使用したプラグインのサンプルが、\r
フォーラムの<a href="http://japan.nucleuscms.org/bb/viewtopic.php?p=24401#24401" title="Sample">新API「TemplateExtraFields」を使ったプラグインの見本</a>に\r
にあります。細かな点は本家フォーラムの <a href="http://forum.nucleuscms.org/viewtopic.php?p=87672#87672" title="Sample">Skin specific values for Plugins</a> スレッド\r
を参照してください。ここでは要約のみ書いてあります。\r
まず、<code>install()</code> メソッド中でプラグインオプションを作成し、ここでテンプレートのデフォルトの内容を定義します。\r
- <pre class="example"><code>$this->createOption('my_template', \r
- 'Template used to format output of plugin.', \r
- 'textarea', \r
+ <pre class="example"><code>$this->createOption('my_template',\r
+ 'Template used to format output of plugin.',\r
+ 'textarea',\r
'<li><%foo%> loves <%bar%></li>');</code></pre>\r
次に割り込みをかけるイベントのリストに <code>TemplateExtraFields</code> を登録します。\r
<pre class="example"><code>function getEventList() { return array('TemplateExtraFields'); }</code></pre>\r
そして、<code>event_TemplateExtraFields</code> メソッドを作成します。\r
<pre class="example"><code>function event_TemplateExtraFields(&$data) {\r
- /* Add an element in the $data['fields'] array using your plugin name as the key \r
+ /* Add an element in the $data['fields'] array using your plugin name as the key\r
and an associative array containing the field name and field label*/\r
- /* note that your field names should be lowercase and include the name \r
+ /* note that your field names should be lowercase and include the name\r
of your template as shown below. This will ensure that all template field names are unique. */\r
$data['fields']['NP_TemplateTest'] = array(\r
'templatetest_body'=>'TemplateTest Body'\r
$template =& $manager->getTemplate($template);\r
if (trim($template['templatetest_body']) == '')\r
$template['templatetest_body'] = $this->getOption('my_template');\r
- \r
+\r
$couples = array(\r
array(\r
'foo'=>'Ricky',\r
);\r
foreach ($couples as $values) {\r
echo TEMPLATE::fill($template['templatetest_body'],$values);\r
- } \r
+ }\r
}</code></pre>\r
ユーザーは『テンプレート編集』画面で、「TemplateTest Body」フィールドに出力したい形式でテンプレートを編集します。\r
例えば「default/index」テンプレートを使って、こんな風にテンプレートを編集します。\r
<li>Sid loves Nancy!!!</li>\r
<li>Mickey loves Minnie!!!</li></code></pre>と表示されます。<br />\r
</li>\r
- \r
+\r
<li><strong>通常のテンプレートを使って書式化。</strong>この方法は v3.4 以降で、アイテムを出力するプラグインで使用できます。\r
- この方法にはコアのテンプレートシステムの既存の「アイテム」フィールドを使うというアドバンテージがあり、スキン変数の <code><%blog%></code> \r
- の様に使用します。スキン変数の引数として、一つ以上のアイテムの ID と使用するテンプレート名を、また、BLOG クラスの <code>readLogFromList()</code> \r
+ この方法にはコアのテンプレートシステムの既存の「アイテム」フィールドを使うというアドバンテージがあり、スキン変数の <code><%blog%></code>\r
+ の様に使用します。スキン変数の引数として、一つ以上のアイテムの ID と使用するテンプレート名を、また、BLOG クラスの <code>readLogFromList()</code>\r
メソッドを呼び出せることが条件です。テンプレート変数として使用したい場合は、<code>doTemplateVar()</code> メソッドで使用することも出来ます。\r
例として <code>doSkinVar()</code> メソッドでこのテクニックを使う方法を示しておきます。\r
4つのアイテムの ID を引数として受け取り、「default/index」テンプレートを使って出力します。\r
$item_array = array($item1,$item2,$item3,$item4);\r
$blog->readLogFromList($item_array, $template);\r
}</code></pre>\r
- \r
+\r
</li>\r
</ol>\r
\r
+<?xml version="1.0" encoding="UTF-8"?>\r
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja-JP" xml:lang="ja-JP">\r
<head>\r
<!--\r
Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)\r
- Copyright (C) 2002-2010 The Nucleus Group\r
+ Copyright (C) 2002-2011 The Nucleus Group\r
\r
This program is free software; you can redistribute it and/or\r
modify it under the terms of the GNU General Public License\r
(see nucleus/documentation/index.html#license for more info)\r
\r
@license http://nucleuscms.org/license.txt GNU General Public License\r
- @copyright Copyright (C) 2002-2010 The Nucleus Group\r
+ @copyright Copyright (C) 2002-2011 The Nucleus Group\r
-->\r
<!-- $Id$ -->\r
<!-- $NucleusJP: index.html,v 1.7 2007/01/31 10:02:57 kimitake Exp $ -->\r
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />\r
<title>Nucleus CMS マニュアル</title>\r
<link rel="stylesheet" type="text/css" href="styles/manual.css" />\r
<script src="http://www.google.com/jsapi"></script>\r
\r
<div class="heading">\r
Nucleus CMS マニュアル\r
- <i>(v3.4)</i>\r
+ <i>(v3.62)</i>\r
</div>\r
\r
<div class="note">\r
<li><a href="#comments">コメント受付時のルール</a></li>\r
<li><a href="#xmlrpc">XML-RPC インターフェイスについて</a></li>\r
<li><a href="#trouble">困った時は (FAQ)</a></li>\r
- <li><a href="tips.html">Tips & Suggestions</a> (別ファイル)</li>\r
+ <li><a href="tips.html">便利な使い方のヒント</a> (別ファイル)</li>\r
<li><a href="#known">現在指摘されている問題点</a></li>\r
<li><a href="history.html">履歴</a> (別ファイル)</li>\r
<li><a href="#credits">謝辞</a></li>\r
</p>\r
\r
<ul>\r
- <li><a href="http://jp.php.net/manual/ja/">PHP</a> (バージョン 4.0.6 以降)</li>\r
- <li><a href="http://dev.mysql.com/doc/mysql/ja/">MySQL</a> データベース (バージョン 3.23.38 以降)</li>\r
+ <li><a href="http://jp.php.net/manual/ja/">PHP</a> (バージョン 5.0.6 以降)</li>\r
+ <li><a href="http://dev.mysql.com/doc/mysql/ja/">MySQL</a> データベース (バージョン 4 以降)</li>\r
<li>デザインのカスタマイズをする場合は、<acronym title="Hypertext Markup Language">HTML</acronym> と <acronym title="Cascading Style Sheets">CSS</acronym> の基礎知識</li>\r
</ul>\r
\r
<p>\r
Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)\r
<br />\r
- Copyright (C) 2002-2007 The Nucleus Group\r
+ Copyright (C) 2002-2011 The Nucleus Group\r
</p>\r
\r
<p>このプログラムはフリーウェアです。\r
<tr>\r
<th>/*</th><td>(サイト表示用メインファイル)</td>\r
</tr><tr>\r
- <th>/nucleus/*</th><td>(サイト管理用ファイル)</td>\r
+ <th>/extra/*</th><td>(fancy URL用ファイルなど特殊なファイル)</td>\r
</tr><tr>\r
- <th>/nucleus/javascript/*</th><td>(javascripts スクリプト)</td>\r
+ <th>/install/*</th><td>(インストール用ファイル)</td>\r
</tr><tr>\r
- <th>/nucleus/libs/*</th><td>(Nucleus のコアライブラリ)</td>\r
+ <th>/media/*</th><td>(添付ファイル)</td>\r
</tr><tr>\r
- <th>/nucleus/language/*</th><td>(言語ファイル)</td>\r
- </tr><tr>\r
- <th>/nucleus/plugins/*</th><td>(プラグインファイル)</td>\r
- </tr><tr>\r
- <th>/nucleus/xmlrpc/*</th><td>(XML-RPC インターフェイス用ファイル)</td>\r
+ <th>/nucleus/*</th><td>(サイト管理用ファイル)</td>\r
</tr><tr>\r
<th>/nucleus/documentation/*</th><td>(説明書)</td>\r
</tr><tr>\r
- <th>/nucleus/styles/*</th><td>(管理エリア専用cssファイル)</td>\r
+ <th>/nucleus/forms/*</th><td>(入力フォーム部品ファイル)</td>\r
</tr><tr>\r
<th>/nucleus/images/*</th><td>(管理エリア専用画像ファイル)</td>\r
</tr><tr>\r
- <th>/nucleus/forms/*</th><td>(入力フォーム部品ファイル)</td>\r
+ <th>/nucleus/javascript/*</th><td>(javascripts スクリプト)</td>\r
</tr><tr>\r
- <th>/extra/*</th><td>(fancy URL用ファイルなど特殊なファイル)</td>\r
+ <th>/nucleus/language/*</th><td>(言語ファイル)</td>\r
</tr><tr>\r
- <th>/skins/*</th><td>(スキンファイル [読込み時にも使用])</td>\r
+ <th>/nucleus/libs/*</th><td>(Nucleus のコアライブラリ)</td>\r
+ </tr><tr>\r
+ <th>/nucleus/plugins/*</th><td>(プラグインファイル)</td>\r
</tr><tr>\r
- <th>/media/*</th><td>(添付ファイル [インストール時は空])</td>\r
+ <th>/nucleus/styles/*</th><td>(管理エリア専用cssファイル)</td>\r
+ </tr><tr>\r
+ <th>/nucleus/xmlrpc/*</th><td>(XML-RPC インターフェイス用ファイル)</td>\r
+ </tr><tr>\r
+ <th>/skins/*</th><td>(スキンファイル [読込み時にも使用])</td>\r
+\r
</tr>\r
</table>\r
\r
</ol>\r
\r
\r
- <h2>3. install.phpにアクセス</h2>\r
+ <h2>3. /install/ディレクトリにアクセス</h2>\r
\r
<p>\r
- ブラウザを開いてサーバに転送したinstall.phpにアクセスします。URLは下記のようになります。(<i>www.yoursite.com</i> と <i>yourpath</i>の部分は読み替えてください)\r
+ ブラウザを開いてサーバに転送した/install/ディレクトリにアクセスします。URLは下記のようになります。(<i>www.yoursite.com</i> と <i>yourpath</i>の部分は読み替えてください)\r
</p>\r
\r
- <pre> http://www.yoursite.com/yourpath/install.php</pre>\r
+ <pre> http://www.yoursite.com/yourpath/install/</pre>\r
\r
<p>\r
表示されたページに必要入力事項を入力します。あらかじめ自動検知して入力済の部分がありますが確認をお願いします。送信後に次に行う手順が表示されますのでそれに従って作業してください。(最後にいくつかのファイルを手動でサーバから削除する作業が必要ですのでお忘れなく。)\r
</p>\r
\r
<div class="note">\r
- <b>注意:</b> <i>install.php</i> にアクセスした際、「If you see this text in your browser...」というテキストが表示されたり、 install.phpのダウンロードが促されたりした場合は、そのサーバではphpスクリプトは動作しません。当然、残念ながらphpスクリプトであるNucleusを運用することができません。\r
+ <b>注意:</b> <i>/install/</i> ディレクトリにアクセスした際、「If you see this text in your browser...」というテキストが表示されたり、 install.phpのダウンロードが促されたりした場合は、そのサーバではphpスクリプトは動作しません。当然、残念ながらphpスクリプトであるNucleusを運用することができません。\r
</div>\r
\r
<h2>4. 完了</h2>\r
<h1>XML-RPC インターフェイス <a name="xmlrpc" href="#top" class="toplink"><img src="icon-up.gif" width="15" height="15" alt="back to top" /></a></h1>\r
\r
<div class="note">\r
- Nucleusã\81® XML-RPC ã\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\82¤ã\82¹ã\81«ã\81¤ã\81\8dã\81¾ã\81\97ã\81¦ã\81¯ä¸\8bè¨\98URLå\8f\82ç\85§:\r
+ Nucleusã\81® XML-RPC ã\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\82¤ã\82¹ã\81®URL:\r
<br />\r
<b>http://www.yourserver.com/yourpath/nucleus/xmlrpc/server.php</b>\r
</div>\r
</p>\r
\r
<p>\r
- 現在の所、<a href="http://plant.blogger.com/api/">Blogger API</a>、<a href="http://www.xmlrpc.com/metaWeblogApi">metaWeblog API</a>と<a href="http://www.movabletype.org/docs/mtmanual_programmatic.html#xmlrpc%20api">Movable Type API</a>の3つの規格を充足しています。この規格を使用した記事投稿ツールに興味のある方は、 <a href="http://www.cweblogs.com/wbeditor/">WB Editor</a> (Windows版:日本語対応) または <a href="http://www.kung-foo.tv/ecto/">Ecto</a> (MacOS版:日本語対応不明) を使ってみてください。\r
+ 現在の所、<a href="http://plant.blogger.com/api/">Blogger API</a>、<a href="http://www.xmlrpc.com/metaWeblogApi">metaWeblog API</a>と<a href="http://www.movabletype.org/docs/mtmanual_programmatic.html#xmlrpc%20api">Movable Type API</a>の3つの規格をサポートしています。この規格を使用した記事投稿ツールに興味のある方は、 <a href="http://www.cweblogs.com/wbeditor/">WB Editor</a> (Windows版:日本語対応) または <a href="http://www.kung-foo.tv/ecto/">Ecto</a> (MacOS版:日本語対応不明) を使ってみてください。\r
</p>\r
\r
<p>\r
\r
<h1>困った時は (FAQ) <a name="trouble" href="#top" class="toplink"><img src="icon-up.gif" width="15" height="15" alt="back to top" /></a></h1>\r
\r
- <p>Nuleusã\81«ã\81¤ã\81\84ã\81¦è\89¯ã\81\8fè\81\9eã\81\8bã\82\8cã\82\8b質å\95\8fã\82\92FAQã\81¨ã\81\97ã\81¦ã\81¾ã\81¨ã\82\81ã\81¾ã\81\97ã\81\9fã\80\82質å\95\8fã\81\95ã\82\8cã\82\8bå\89\8dã\81«ã\81\94ä¸\80èªä¸\8bã\81\95ã\81\84ã\80\82大æ¦\82のケースでは解決できるのではないでしょうか。\r
+ <p>Nuleusã\81«ã\81¤ã\81\84ã\81¦è\89¯ã\81\8fè\81\9eã\81\8bã\82\8cã\82\8b質å\95\8fã\82\92FAQã\81¨ã\81\97ã\81¦ã\81¾ã\81¨ã\82\81ã\81¾ã\81\97ã\81\9fã\80\82質å\95\8fã\81\95ã\82\8cã\82\8bå\89\8dã\81«ã\81\94ä¸\80èªä¸\8bã\81\95ã\81\84ã\80\82大æ\8aµのケースでは解決できるのではないでしょうか。\r
</p>\r
\r
<div class="faq">\r
<div class="question">このようなエラーが表示されるのですが: <q>Cannot send headers. Headers already sent...</q></div>\r
<div class="answer">\r
- <code>config.php</code>の冒頭と末尾に空白(スペース)が入っている場合によく起こります。<tt><?</tt> の前、あるいは <tt>?></tt>よりも後にスペースが挿入されていないかどうか確認してください。このスペースを削除するとエラーは解消されます。また、同様に言語ファイルやインストールしているプラグインのファイルについても同じ事が起きますので確認してみてください。\r
+ <code>config.php</code>の冒頭と末尾に空白(スペース)が入っている場合によく起こります。<tt><?</tt> の前、あるいは <tt>?></tt>よりも後にスペースが挿入されていないかどうか確認してください。このスペースを削除するとエラーは解消されます。また、同様に言語ファイルやインストールしているプラグインのファイルについても同じ事が起きますので確認してみてください。UTF-8で保存する場合はBOMを付けないでください。\r
</div>\r
</div>\r
\r
<div class="faq">\r
- <div class="question">インストール時にinstall.phpにアクセスするとダウンロードを促されるのですが。</div>\r
+ <div class="question">インストール時に/install/ディレクトリにアクセスするとダウンロードを促されるのですが。</div>\r
<div class="answer">そのサーバはPHPプログラムに対応していません。残念ながらそのサーバでNucleusを運用することはできません。</div>\r
</div>\r
\r
</p>\r
\r
<ul>\r
- <li>このリリース時点においては、Nucleus 3.0への公式なログ移行ツールはありません。今後のログ移行ツールの情報は<a href="http://nucleuscms.org/convert.php">ログ移行ツール情報(英語:最新情報)</a> (<a href="http://japan.nucleuscms.org/convert.php">ログ移行ツール情報(日本語)</a>)に掲載していきます。</li>\r
+ <li>このリリース時点においては、Nucleus 3.xへの公式なログ移行ツールがあります。ログ移行ツールのプログラムと、他のログ移行ツールの情報は<a href="http://nucleuscms.org/convert.php">ログ移行ツール情報(英語:最新情報)</a> (<a href="http://japan.nucleuscms.org/wiki/convert">ログ移行ツール情報(日本語)</a>)に掲載しています。ログ移行のポイントはNucleus Forum の <a href="http://forum.nucleuscms.org/viewforum.php?f=17">Import Questions (英語)</a> セクションを参照してください。すべてのブログシステムは異なる構造を持っているため、情報が欠落する可能性なしに別のシステムへ変換することはできません。スクリプト作者は、トラブルや情報の欠落を最小限にするよう努力しています。</li>\r
<li>Ctrl + Shift + A ショートカットキーは ICQ/Trillian と衝突します。</li>\r
<li>サーバのPHPの設定がセーフモードonの場合、添付ファイルの使用時に問題が生じます。(画像ファイルのサイズが自動判定できない、アップロードがうまくいかない、など) <br />*あらかじめmediaディレクトリに「1」、「2」など記事投稿者の数だけ数字のディレクトリを作成しておいて書き込み可能にしておくことで回避できます。</li>\r
<li>RSSの表示が乱れることがあります。(特殊文字変換が原因。&amp; が &amp;amp; となるなど)</li>\r
\r
<ul>\r
<li>NucleusのWebサイトにて<a href="http://nucleuscms.org/donators.php">寄付者のリスト</a>を掲示しております。</li>\r
- <li><a href="http://forum.nucleuscms.org/groupcp.php?g=3">フォーラムを取り仕切ってくださっている方々</a> や <a href="http://forum.nucleuscms.org/memberlist.php?mode=posts&order=DESC">フォーラムに来てくださっている方々</a>にも厚く御礼申し上げます。</li>\r
+ <li><a href="http://forum.nucleuscms.org/groupcp.php?g=3">フォーラムを取り仕切ってくださっている方々</a> <a href="http://japan.nucleuscms.org/bb/groupcp.php?g=871">(日本)</a> や <a href="http://forum.nucleuscms.org/memberlist.php?mode=posts&order=DESC">フォーラムに来てくださっている方々</a> <a href="http://japan.nucleuscms.org/bb/memberlist.php?mode=posts&order=DESC">(日本)</a>にも厚く御礼申し上げます。</li>\r
</ul>\r
\r
</div>\r