PukiWiki


EUC-JP版からUTF-8版へ移行


スマートフォン(Android/iPhone)対応スキン


CamelCase文字列の自動リンクを止める

デフォルトではCamelCaseがwikiページへの自動リンクになるが、ページが存在しないと「CamelCase?」のようになって不便な時がある。


Google Search Console対応


lftpを使ったバックアップ


iframeを含むページをプレビューした時に「ERR_BLOCKED_BY_XSS_AUDITOR」が出る


シェアボタン

https、複数サービス対応したものが良い。


robots.txt

Google Search Consoleで、「cmd=edit」等がクロールエラーになる。


CGI版PHP環境でユーザ認証を使う

pukiwikiユーザ認証はPHP mod_php版のみで、CGI版では使えない。
以下のように.htaccessに追加する事で実際に使用できた。


MenuBarに検索フォームを追加

  1. デフォルトではsearchプラグインのGETメソッドが無効になっているので、有効に変更
  2. pukiwiki/plugin/search.inc.php を編集
    define('PLUGIN_SEARCH_DISABLE_GET_ACCESS', 0); // 1, 0
  3. MenuBar に検索窓を追加
     #lookup(検索,検索)
  4. InterWikiNameにlookupに指定した「検索」が無い場合、以下を追加。2重に設定した場合、最後の行が使われるので注意。
     -[./?cmd=search&word=$1&type=AND 検索]
  5. 検索フォームの長さは pukiwiki/plugin/lookup.inc.php を直接編集。MenuBarの1列に収まるようにするには、ラベルを隠し、sizeを調整する。
    <!-- mod
      <label for="_p_lookup_$id">$interwiki:</label>
     /mod -->
      <input type="text" name="page" id="_p_lookup_$id" size="13" value="$default" />

wiki形式変換


日本語URLへのリンクがうまく張れない

ひとまず一度Firefoxで表示させれば勝手にURLエンコード/デコードしてくれるので、そのURLを貼り付ければ大概リンクが張れる
もしくは、Software/wiki自作プラグイン/url.inc.php を利用するとURLエンコードしてくれる。

見出し毎に編集

ページが長くなってきた場合に編集が大変なので、見出し毎に編集するパッチ


jQuery.socialbutton プラグインでソーシャルリンクボタンを付ける


よく使う外部プラグイン


ページ名と内容の変更

  1. renameプラグインでページ名変更
    ?plugin=rename
  2. regexp.inc.php でページ中のページ名を変更
    ?plugin=regexp
    • Filter Pages: ^Memo
    • Regexp: check
    • Search:
      1回目:(Memo/.+)メモ
      2回目:(\w+)メモ
    • Replace:
      1回目:\1
      2回目:\1
  3. 一応ページリンクを更新
    ?plugin=links
  4. yetlistプラグインで未作成のページの確認
    ?plugin=yetlist

renameプラグインで正規表現を使う

ページ名をリネームしたい時、「index.php?plugin=rename」を使うが、正規表現を入力してもエスケープされてしまい、思った通りの事ができない。正規表現を使えるように変更。


geshi: シンタックスカラーリング

  1. GeSHi 1.0.8.13をダウンロードして展開。1.0.9はエラーが出た。
  2. 以下のように配置
    plugin/geshi/geshi.php
    plugin/geshi/geshi/*.php
  3. pukiwiki-plugin/plugin at master · sonots/pukiwiki-plugin · GitHub からcloneやダウンロード
    plugin/geshi.inc.php
    plugin/gechi_config/*.php
    cache/geshi/
  4. 権限変更
    chmod 777 cache/geshi
  5. pukiwiki.ini.php の設定を変更
    define('PKWKEXP_DISABLE_MULTILINE_PLUGIN_HACK', 0);
  1. <?php
  2. echo 'test';

特定wikiページをバックアップする


Pukiwiki v1.4.3をPHP5で動くようにする


新規ページ作成フォームを作る

#newpage(デフォルト階層1/デフォルト階層2/)

全頁の編集にパスワードを必須とさせる

  1. pukiwiki/pukiwiki.ini.php を編集
    • Pukiwiki1.4.5
      $auth_users = array(
      	'編集可能とするユーザー名'	=> 'パスワード',
      );
      $auth_method_type = 'contents';
      $edit_auth = 1;
      $edit_auth_pages = array(
      	'#.*#'	=> '編集可能とするユーザー名',
      );

デザインテンプレート(スキン)

添付ファイルを展開して、skin/ディレクトリに放り込む。


上部のナビ領域を活用する

デフォルトのCSSでナビ領域が定義されているらしいので、以下のように<ul>タグを利用して、配置できるようです。

高さを指定する場合は以下のようにulタグに高さを指定する。

ul.navi {
	height:22px;
}

PDF化


lftpでのミラーリング


subversionでの無視設定


高速化


改行をそのまま反映する

バックアップに編集者名を表示させる

Basic認証したユーザがページを編集した場合に、バックアップにそのユーザ名を表示するようにしたパッチです。
IPアドレスはページの編集権限を持つユーザがバックアップを閲覧した場合のみ表示されます。

バックアップ一覧 
MenuBar のバックアップを削除
1 (2007-09-16 (日) 15:16:26) - DEX (IP: 192.168.0.1) [ 差分 | 現在との差分 | ソース ]

古いPukiwikiの添付ファイル名がindex.phpになってしまうときは?

希に添付したファイルをダウンロードすると、ファイル名が「index.php」になってしまう時があります。
文字コードの認識に失敗しているようです。最新の1.4.7では解消されています。
なので最新のpukiwikiにアップグレードするか、以下のようにmb_detect_order()で文字コードの認識順を指定すると直ります。

古いPukiwikiでヘッダにRSSを追加する

Opera, Firefox等のRSSリーダ標準搭載ブラウザで、アドレスバーの部分にRSSアイコンが表示され、簡単にRSS登録できるようになります。
Pukiwiki 1.4.7では以下の書き換えを行う必要はありません。


整形済みテキストが長い場合での、横スクロールバー防止

標準のskinでは、整形済みテキストの1行が長い場合、ブラウザに横スクロールバーが出ます。
それを、整形済みテキストの枠内でだけ横スクロールバーを出すように変更可能です。


画像出力cgiにリンクするには

リンク切れの検出&更新時刻の取得

外部リンクの場合にアイコン表示&新しいウインドウで開く

ダウンロードランキング

PyukiWikiでもPukiWikiと同じフェイスマーク参照文字列を使用可能にする

PyukiWikiPukiWikiと同じフェイスマークを持っていますが、参照文字形式(&xxxx;)で フェイスマークを出すことができません。
以下の変更で使用可能になります。
なおinsTagプラグインも使えるようになります。 [smile]

index.cgi 455行

	if ($::usefacemark == 1) {
		$line =~ s!\s(\:\)|\(\^\^\))|&(smile);! <img src="$::image_dir/face/smile.png" alt="$1$2" />!g;
		$line =~ s!\s(\:D|\(\^-\^\))|&(bigsmile);! <img src="$::image_dir/face/bigsmile.png" alt="$1$2" />!g;
		$line =~ s!\s(\:p|\:d)|&(huh);! <img src="$::image_dir/face/huh.png" alt="$1$2" />!g;
		$line =~ s!\s(XD|X\(|\(\.\.;)|&(oh);! <img src="$::image_dir/face/oh.png" alt="$1$2" />!g;
		$line =~ s!\s(;\)|\(\^_-\))|&(wink);! <img src="$::image_dir/face/wink.png" alt="$1$2" />!g;
		$line =~ s!\s(;\(|\:\(|\(--;\))|&(sad);! <img src="$::image_dir/face/sad.png" alt="$1$2" />!g;
		$line =~ s!&(heart);!<img src="$::image_dir/face/heart.png" alt="$1" />!g;
		$line =~ s!\s(\(\^\^;\)|\(\^\^;)|&(worried);! <img src="$::image_dir/face/worried.png" alt="$1$2" />!g;
	}

trackerプラグインで「/page」の内容が長すぎると#tracker_listの表示に失敗する

tracker_listを使用していて、タグが取得できない事があります。

正常:lan.inc.php LAN内リンクプラグイン 1.4.4
異常:[_name] [summary] [version] 

「/page」の内容が長すぎると、preg_match()が失敗するようです。*1
(tracker_listの項目置換が正しく行われない。- しろくろのへや)

暫定対応として trackerのテンプレートページ「/page」を作成する場合、最後のタグの次行に「//////////」を書けば そこまでをマッチング対象とするパッチを作成してみました。

tracker.inc.php v1.28

$pattern = join('',plugin_tracker_get_source($config->page.'/page'));

+               // "/page"の内容が長すぎるとpreg_match()が失敗するバグ(?)があるので
+               // "//////////"までをマッチ対象とさせる
+               $pattern_endpos = strpos($pattern, "//////////");
+               if($pattern_endpos > 0){
+                       $pattern = substr($pattern, 0, $pattern_endpos);
+               }
 
// ブロックプラグインをフィールドに置換

filetracker.inc.php v1.28パッチ済み
tracker_plus_list.inc.phpでも同じ変更で対処できるようです。-> v2.4で取り込まれたようです。

先頭がコロンのページのみ閲覧に認証をかける

  1. pukiwiki/pukiwiki.ini.php を編集
    • Pukiwiki1.4.5
      $auth_users = array(
      	'編集可能とするユーザー名'	=> 'パスワード',
      );
      $auth_method_type = 'pagename';
      $read_auth = 1;
      $read_auth_pages = array(
        '#^:.*#'	=> '編集可能とするユーザー名',
      );
      

全頁の編集に認証をかける

  1. pukiwiki/pukiwiki.ini.php を編集
    • Pukiwiki1.4.5
      $auth_users = array(
      	'編集可能とするユーザー名'	=> 'パスワード',
      );
      $auth_method_type = 'pagename';
      $edit_auth = 1;
      $edit_auth_pages = array(
      	'#.*#'	=> '編集可能とするユーザー名',
      );

blogtimesを表示させる。

画面上部にパンくずナビを常に表示させる

指定wikiページをhtml化する

snapshotプラグインを使う。

  1. snapshot.inc.phpをダウンロードし、pluginフォルダにコピーする。
  2. ページ「aaa」をhtml化したい場合は以下のようにする。
    • aaaページを編集し、以下の命令を追加すると、snapshotボタンが表示される。
      #snapshot
      #snapshot(./skin/default.ja.css)
    • get形式で指定する場合
      http://localhost/pukiwiki/index.php?cmd=snapshot&page=aaa&css=./skin/default.ja.css

LAN内のファイルやフォルダにリンクを張る

プラグインを作成しました。
Software/wiki自作プラグイン/lan.inc.php

MenuBarの幅を変更するには

div#menubar {
<?php   if ($media == 'print') { ?>
       display:none;
<?php   } else { ?>
/*      width:9em;*/
       min-width:200px; /* 追加 */
       width:220px;     /* 追加 */
       max-width:240px; /* 追加 */
       padding:0px;
       margin:4px;
       word-break:break-all;
       font-size:90%;
       overflow:hidden;
<?php   } ?>
}
div#menubar
{
	min-width:200px;
	width:220px;
	max-width:240px;
}

URLを相対パスで指定するには

InterWikiNameで、「[http://絶対パス/ サーバー名] 名前」の用に指定する
例:localhostにアクセスする場合

[http://localhost/ localhost] raw

URLを指定する時は

[[ローカルのファイル>localhost:ディレクトリ名/ファイル名]]

画像(その他ファイル)を添付するには

自作プラグイン/attachref.inc.php - PukiWiki-officialを使うと便利。
表示したい場所に、以下のコマンドを入れて更新すると、ファイル入力欄がでるのでファイルを指定し、アップロードすると自動的にリンクが張られる

&attachref;
&attachref(,,別名);        // 別名を付ける場合
&attachref(,zoom,320x240); // 表示上の画像サイズを指定する場合

*1 正確には項目を抽出する正規表現が長くなると失敗する

添付ファイル: filejQuery.socialbutton.txt 1668件 [詳細] filetrac2pukiwiki.php 3228件 [詳細] fileexlink.js 2688件 [詳細] filepukiwiki_backup.php 4048件 [詳細] filepukiwiki@nothing_skin.zip 2490件 [詳細] filepukiwiki_org_skin.zip 3932件 [詳細] filelan.inc.zip 2549件 [詳細] filepukiwiki-1.4.3-php5-compat.patch 3013件 [詳細] filebackup_auth_r41.zip 4506件 [詳細] fileexlink.inc.php 4619件 [詳細] filedlrank.inc.php 4667件 [詳細] filetracker.inc.php 5586件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2022-12-06 (火) 10:28:38