Top > IT > CMS > Pukiwiki > Plugins > HowToMakePlugin > UsualFunctions
Last-modified: Sun, 06 Oct 2013 08:53:14 JST
Counter:1980 Today:5 Yesterday:4 Online:4
このエントリーをはてなブックマークに追加

良く使う変数・関数

About

Pluginの開発に当たって頻繁に利用すると思われる関数についてまとめておきます。私は普段PHPを触らないのですぐに忘れてしまいます。

PHP固有

引き数と指定行の取得

関数呼び出し時の引き数の受け取りと適用行の受け取るには "func_get_args 関数" および "array_pop 関数" を利用します。

function plugin_プラグイン名_convert()
{
	$args = func_get_args();
	$lines = array_pop($args);
}

文字列の置換

文字列の置換は str_replace 関数を利用します。ここでは改行を置換しています。

function plugin_プラグイン名_convert()
{
	$args = func_get_args();
	$lines = array_pop($args);
	$lines = str_replace("\r", "\n", $lines);
}

HTMLでは特殊記号として扱われる文字列を、HTMLでの表現形式(実体参照)に変更するには htmlspecialchars 関数を利用します。

function plugin_プラグイン名_convert()
{
	$page = htmlspecialchars($page);
}

Pukiwiki固有

ヘッダへの情報追加

プラグインの呼び出し時に、ヘッダにCSSやjavascriptを追加したいときは、グローバル変数 ''"head_tags"' を参照します。ふつう、ヘッダへの情報の追加は、プラグイン(関数)の呼び出しに対して1回で十分なので、"plugin_プラグイン名_init関数"で参照し、追加します。

function plugin_プラグイン名_init()
{
    //グローバル変数head_tagsの受け取り
    global $head_tags;
	
    //初回呼び出し時にCSSを読み込んでおく
    $head_tags[] = 
    '<link type="text/css" rel="stylesheet" href="
    '. 読み込むCSS.'" media="all"></link>';
}

Wikiテキストをhtmlへ変換

pukiwikiの記述形式で書かれたテキストをhtmlへ変換するには"convert_html 関数"を利用します。 ※ここではconvertプラグイン内で実行していますが、これに限りません。

function plugin_プラグイン名_convert()
{
	$args = func_get_args();
	$lines = array_pop($args);
	$lines = convert_html($lines);
}

既存のページの取得

ページをリスト化するようなプラグインを作るとき必要になります。"get_existpages 関数"を利用します。get_existpages 関数はauthクラスの静的メンバ関数として実行することができます。 ※ここではconvertプラグイン内で実行していますが、これに限りません。

function plugin_プラグイン名_convert()
{
	$pages = array();

	if ($prefix != '') 
	{
		foreach (auth::get_existpages() as $_page)
			if (strpos($_page, $prefix) === 0)
				$pages[] = $_page;
	}
	else 
	{
		$pages = auth::get_existpages();
	}

ページのURL取得

ページのURLの取得には get_page_uri 関数を利用します。※ここではconvertプラグイン内で実行していますが、これに限りません。

function plugin_プラグイン名_convert()
{
	$href   = get_page_uri($page);
}

ページの内容を取得

ページの内容の取得には get_source($page) を利用します。$page には内容を取得するページ名を指定します。ページ名はエンコード前のページ名を指定する必要があります。結果は配列で取得されます。

	$lines   = get_source($page);

現在のページ名の取得

ページ名の取得には $title 変数ないし $vars['page'] 変数を利用します。$title の場合には、例えば編集ページの時は、"(ページ名)~の編集"となります。一方で $vars[page] の場合には、編集ページの時にも取得する値は完全なページ名のみになります。

		echo '<p>' .$title. '</p>';
		echo '<p>' .$vars['page']. '</p>';

また例えば "ABC/DEFG" といったような階層からなるページの、現在のページ(ここでは"DEFG")の名前だけを取得するときは、一度完全なページ名を取得した後、PHP の関数を利用して、上位階層の文字列を削除します。

	$pagename = $vars['page'];
	$pagename = preg_replace("/(.*)\//",'',$pagename);

サイト名の取得

サイト名の取得には、$page_title 変数を利用します。

$page_title;

サイト管理者の URL

サイト管理者の URL の取得には、$modifierlink 変数を利用します。pukiwiki.ini.php で設定した URL を取得することになります。

$modifierlink;