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です。細かいプラグインの動作は、用途に合わせて改変してください。

