Table of Contents
PukiWikiで登録されているページの中からランダムにリンクを生成するプラグインです。ありそうですが見当たらなかったので作ってみました。
オープンソースの Wiki である PukiWiki については下記のサイトをご覧ください。
プラグインの動作サンプル
このように存在するページへのリンクをランダムに生成して横に並べます。
実際に使っているページはこちら。
プラグインの全コード
<?php // Copyright (C) PukiWiki Developers Team // License: GPL version 2 // 2016-2017 JoyPlot // 第1引数: ランダムに表示するリンクの数 // 第2引数: 各リンクの右側に付く余白 define('USAGE', 'USAGE: #randomlist(numberOfShowingItem, rightMarginOfItem)'); function plugin_randomlist_convert() { // 各リンクにつける右側の余白(デフォルト値) $rightMarginOfItem = 16; // 表示する用語の数 $showCount = 5; if (func_num_args()) { $args = func_get_args(); if (is_numeric($args[0])) { // 第一引数から表示件数を読み込む $showCount = $args[0]; if (is_numeric($args[1])) { // 第二引数から項目の余白を取得 $rightMarginOfItem = $args[1]; } } else { return USAGE . '<br>'; } } // クエリを除いたページURL $baseURL = get_script_uri(); // すべてのページのリストを取得 $allPages = get_existpages(); // 隠しページを取り除いた全ページを格納する配列 $pages = array(); // 隠しページを取り除く foreach ($allPages as $page) { if (check_non_list($page)) { continue; } $pages[] = $page; } // 全ページ数 $allPageNum = count($pages); // DOMの作成 $stylesheet = 'display: inline-block; margin-right: ' . $rightMarginOfItem . 'px;'; // 同じページへのリンクを生成しないように管理するための配列 $alreadyAddedItem = array(); $output = '<div class="randomList">'; for ($i = 0; $i < $showCount; $i++) { $target = rand(0, $allPageNum - 1); // 同じリンクを生成しようとしたらやり直し $retry = false; foreach ($alreadyAddedItem as $addedNum) { if ($target === $addedNum) { $retry = true; break; } } if ($retry) { $i--; continue; } // 作ったリンクを登録 $alreadyAddedItem[] = $target; $targetPageName = current(array_slice($pages, $target, 1, true)); $r_page = pagename_urlencode($targetPageName); $output .= '<span style="' . $stylesheet . '"><a href="' . $baseURL . '?' . $r_page . '">' . $targetPageName . '</a></span>'; } $output .= '</div>'; return $output; }
プラグインの使い方
ファイル名を randomlist.inc.php として pluginディレクトリ に保存してください。
表示したい部分で以下のように書きます。
#randomlist(表示するリンクの数, 各リンクの右側の余白);
第二引数は任意です。入力がなかった場合、デフォルト値である 16px が使用されます。
pukiwiki.ini.php で設定されている $non_list の正規表現に一致する隠しページ(デフォルトでは : から始めるページ)は表示されないようになっています。
以上、PukiWikiでランダムにページのリンクを生成するプラグインのソースコードでした。
はじめまして
使おうとしましたが使えません
#randomlist(5,1)としてプラグインを使おうとしましたが、動きません
randomlist.ini.php はpluguinフォルダに入れてあります
誤字しました
pluginフォルダに入れてあります
#randomlist(5,1)として使用しようとしても何も反応せず
#randomlist(5,1)がそのまま表示されます
不具合のご報告をいただきありがとうございます。
見直してみたところ、記事中に誤りがございました。
ソースを保存するファイル名の部分が randomlist.ini.php となっていましたが、正しくは randomlist.inc.php でした。ini ではなく inc です。現在は記事中の誤りも修正されています。
また、ソースコードも第二引数が省略可能なように修正を行いました。お手数ですが、最新のソースコードをコピーしていただければと思います。
お手数をお掛けしてしまい、申し訳ございません。
お早い回答ありがとうございました
おかげさまでランダム表示をすることができるようになりました
本当にありがとうございました。プラグインを活用させていただきます