Table of Contents
PukiWiki内の更新日時が新しいページのリンクを並べて表示するプラグインです。通常の更新履歴とは別に、ページの一部に最近更新したページの一覧を組み込みたい場合のためのプラグインです。
実際の使用例は以下のようになります(「最近の更新された用語」というラベルはプラグインとは別に作成されたものです)。
プラグインのPHPスクリプト
プラグインの全スクリプトです。recent.inc.php を元としています。
<?php // $Id: recent.inc.php,v 1.27 2011/01/25 15:01:01 henoheno Exp $ // Copyright (C) // 2002-2007 PukiWiki Developers Team // 2002 Y.MASUI http://masui.net/pukiwiki/ masui@masui.net // License: GPL version 2 // 2016-2017 JoyPlot // プラグインの使い方 define('PLUGIN_RECENT_USAGE', '#recent_in_page(number-to-show)'); // 最近の更新を記録したファイル define('PLUGIN_RECENT_CACHE', CACHE_DIR . 'recent.dat'); function plugin_recent_in_page_convert() { // 各リンクにつける右側の余白 $rightMarginOfItem = 16; // デフォルトの表示件数 $showLineCount = 10; if (func_num_args()) { $args = func_get_args(); if (!is_numeric($args[0]) || isset($args[1])) { // 呼び出し方が正しくない時は正しい使い方を表示する return PLUGIN_RECENT_USAGE . '<br>'; } else { // 第一引数から表示件数を読み込む $showLineCount = $args[0]; } } if (!file_exists(PLUGIN_RECENT_CACHE)) { put_lastmodified(); if (!file_exists(PLUGIN_RECENT_CACHE)) { return '#recent(): Cache file of RecentChanges not found' . '<br>'; } } // Get latest N changes $lines = file_head(PLUGIN_RECENT_CACHE, $showLineCount); if ($lines == FALSE) { return '#recent(): File can not open' . '<br>' . "\n"; } $baseURL = get_script_uri(); $stylesheet = 'display: inline-block; margin-right: ' . $rightMarginOfItem . 'px;'; $output = '<div class="recentList">'; foreach ($lines as $line) { $data = explode("\t", rtrim($line)); if (count($data) != 2) { continue; } $page = $data[1]; $s_page = htmlsc($page); $r_page = pagename_urlencode($page); $output .= '<span style="' . $stylesheet . '"><a href="' . $baseURL . '?' . $r_page . '">' . $s_page . '</a></span>'; } $output .= '</div>'; return $output; }
プラグインの使用方法
上記のスクリプトを recent_in_page.inc.php という名前で plugin ディレクトリ内に保存してください。
その後、使用したいページに以下のように記述します。
#recent_in_page(表示するページリンクの数);
引数を省略した場合のデフォルトの表示リンク数は10です。細かいプラグインの動作は、用途に合わせて改変してください。