スマートフォン(Android/iPhone)対応スキン †
CamelCase文字列の自動リンクを止める †
デフォルトではCamelCaseがwikiページへの自動リンクになるが、ページが存在しないと「CamelCase?」のようになって不便な時がある。
Google Search Console対応 †
lftpを使ったバックアップ †
iframeを含むページをプレビューした時に「ERR_BLOCKED_BY_XSS_AUDITOR」が出る †
シェアボタン †
https、複数サービス対応したものが良い。
AddThis
登録必要。複数サービス対応。
シェアボタンのアクセス解析が出来る
robots.txt †
Google Search Consoleで、「cmd=edit」等がクロールエラーになる。
CGI版PHP環境でユーザ認証を使う †
pukiwikiユーザ認証はPHP mod_php版のみで、CGI版では使えない。
以下のように.htaccessに追加する事で実際に使用できた。
デフォルトではsearchプラグインのGETメソッドが無効になっているので、有効に変更
pukiwiki/plugin/search.inc.php を編集
define ( 'PLUGIN_SEARCH_DISABLE_GET_ACCESS' , 0 ) ; // 1, 0
MenuBar に検索窓を追加
#lookup(検索,検索)
InterWikiName にlookupに指定した「検索」が無い場合、以下を追加。2重に設定した場合、最後の行が使われるので注意。
-[./?cmd=search&word=$1&type=AND 検索]
検索フォームの長さは 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 プラグインでソーシャルリンクボタンを付ける †
httpsのページに埋め込むと「このサイトへの接続は完全には保護されていません」と表示されるため非推奨
2011年作成のため、Twitterボタンが表示されない
pukiwikiに組み込んだ場合、日本語ページでtwitterボタンがうまく動作しないため「url:document.URL」オプション必須。指定しないと"%"がurlencodeされ、"%25"がURLに余分につくため正常にリンクされない。
v1.7.3 でfacebook_likeに「url:document.URL」オプションを付けると、URLに「%」が含まれている場合にボタンが消える。
良く使う外部プラグイン †
使用しているpukiwiki EUC版、UTF-8版に合わせて、プラグインの文字コードも変更する必要がある。文字コードを変更できるテキストエディタ(例:サクラエディタ , Terapad )で開いて保存し直す。
ページ名と内容の変更 †
renameプラグインでページ名変更
?plugin=rename
regexp.inc.php でページ中のページ名を変更
?plugin=regexp
一応ページリンクを更新
?plugin=links
yetlistプラグインで未作成のページの確認
?plugin=yetlist
renameプラグインで正規表現を使う †
ページ名をリネームしたい時、「index.php?plugin=rename」を使うが、正規表現を入力してもエスケープされてしまい、思った通りの事ができない。正規表現を使えるように変更。
パッチ(v1.4.7)
--- plugin/rename.inc.php
+++ plugin/rename.inc.php
@@ -19,7 +19,7 @@
$src = plugin_rename_getvar( 'src') ;
if ( $src == '') return plugin_rename_phase1( ) ;
- $src_pattern = '/' . preg_quote( $src, '/') . '/';
+ $src_pattern = '/' . $src . '/';
$arr0 = preg_grep( $src_pattern, get_existpages( ) ) ;
if ( ! is_array( $arr0) || empty( $arr0) )
return plugin_rename_phase1( 'nomatch') ;
「Memo/○○メモ」ページを「Memo/○○」に変更
From:
Memo\/(\w+)メモ
To:
Memo/$1
geshi: シンタックスカラーリング †
GeSHi 1.0.8.13 をダウンロードして展開。1.0.9はエラーが出た。
以下のように配置
plugin/geshi/geshi.php
plugin/geshi/geshi/*.php
pukiwiki-plugin/plugin at master · sonots/pukiwiki-plugin · GitHub からcloneやダウンロード
plugin/geshi.inc.php
plugin/gechi_config/*.php
cache/geshi/
権限変更
chmod 777 cache/geshi
#geshi(言語,オプション)
カッコの数は2個以上でも良い。#geshi(){{{ ... }}} 等
オプション
<?php
echo 'test' ;
いつのバージョンからか「geshi(,number=off)」が表示されないため、「geshi(text)」へ置換した方が良い
特定wikiページをバックアップする †
Pukiwiki v1.4.3をPHP5で動くようにする †
環境 OS:CentOS5.4, PHP:5.1.6
プラグインは動かないけど、PHPエラーは出なくなった。
新規ページ作成フォームを作る †
#newpwageプラグインを使う。階層ページの場合、初期値にパスを指定しておけばよさそう。
#newpage(デフォルト階層1/デフォルト階層2/)
全頁の編集にパスワードを必須とさせる †
編集リンククリック時にベーシック認証がかかります。
管理者のみ編集可能とする事ができます。
一度認証すれば、ブラウザを閉じるまで有効なため、編集が楽に行えます。
pukiwiki/pukiwiki.ini.php を編集
デザインテンプレート(スキン) †
添付ファイルを展開して、skin/ディレクトリに放り込む。
上部のナビ領域を活用する †
デフォルトのCSSでナビ領域が定義されているらしいので、以下のように<ul>タグを利用して、配置できるようです。
高さを指定する場合は以下のようにulタグに高さを指定する。
ul.navi {
height:22px;
}
PDF化 †
lftpでのミラーリング †
ftp上のpukiwikiディレクトリを全て、ローカルにコピーする場合。cronに設定すれば便利
backup.cron
#!/bin/bash
#
# $ chmod 755 backup.cron
# $ crontab -e
# ----
# 0 3 * * * /path/to/backup.cron > /dev/null 2>&1
# ----
#
ABSPATH=$(cd $(dirname $0);pwd)
LFTP=/usr/bin/lftp
$LFTP -f $ABSPATH/backup.lftp
backup.lftp
open -u user,password host
mirror -X /ad/ -X .svn/ --delete --only-newer /public_html/pukiwiki /path/to/public_html/pukiwiki
close
quit
subversionでの無視設定 †
高速化 †
改行をそのまま反映する †
デフォルトではhtmlと同じく改行を意味するタグ
&br;
#br
~
を打ちますが、設定変更することで、改行をそのまま反映させる事もできます。
文書の途中からON/OFFする事もできます。
以降の文章で段落内の改行を改行とみなします
#setlinebreak(on)
以降の文章で改行を無視します
#setlinebreak(off)
詳細 setlinebreak
バックアップに編集者名を表示させる †
Basic認証したユーザがページを編集した場合に、バックアップにそのユーザ名を表示するようにしたパッチです。
IPアドレスはページの編集権限を持つユーザがバックアップを閲覧した場合のみ表示されます。
バックアップ一覧
MenuBar のバックアップを削除
1 (2007-09-16 (日) 15:16:26) - DEX (IP: 192.168.0.1) [ 差分 | 現在との差分 | ソース ]
backup_auth_r41.zip
r41 同一ページ内のIP, USERを最終更新者で書き換えてしまう不具合を修正
バックアップファイルを直接書き換えるため、既存のバックアップファイルとの互換性はなくなります。
古いPukiwikiの添付ファイル名がindex.phpになってしまうときは? †
希に添付したファイルをダウンロードすると、ファイル名が「index.php」になってしまう時があります。
文字コードの認識に失敗しているようです。最新の1.4.7では解消されています。
なので最新のpukiwikiにアップグレードするか、以下のようにmb_detect_order()で文字コードの認識順を指定すると直ります。
1.4.4 (EUC版の場合はEUCを先に、UTF-8版はUTF-8を先に記述する)
pukiwiki/lib/init.php
mb_detect_order('ASCII, EUC-JP, SJIS, JIS, UTF-8');
pukiwiki/plugin/attach.inc.php
$filename = htmlspecialchars(mb_convert_encoding($this->file,'SJIS',mb_detect_encoding($this->file)));
古いPukiwikiでヘッダにRSSを追加する †
Opera, Firefox等のRSSリーダ標準搭載ブラウザで、アドレスバーの部分にRSSアイコンが表示され、簡単にRSS登録できるようになります。
Pukiwiki 1.4.7では以下の書き換えを行う必要はありません。
整形済みテキストが長い場合での、横スクロールバー防止 †
標準のskinでは、整形済みテキストの1行が長い場合、ブラウザに横スクロールバーが出ます。
それを、整形済みテキストの枠内でだけ横スクロールバーを出すように変更可能です。
ブラウザ対応状況
OK Internet Explorer 9.0 NG Internet Explorer 6.0 SP2 OK Firefox 18 OK Chrome 23 OK Opera 12.12
画像出力cgiにリンクするには †
リンク切れの検出&更新時刻の取得 †
外部リンクの場合にアイコン表示&新しいウインドウで開く †
ダウンロードランキング †
PyukiWiki はPukiWiki と同じフェイスマークを持っていますが、参照文字形式(&xxxx;)で
フェイスマークを出すことができません。
以下の変更で使用可能になります。
なおinsTagプラグイン も使えるようになります。
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);
+ }
// ブロックプラグインをフィールドに置換
tracker.inc.php v1.28パッチ済み
※tracker_plus_list.inc.php でも同じ変更で対処できるようです。-> v2.4で取り込まれたようです。
先頭がコロンのページのみ閲覧に認証をかける †
:config等先頭がコロンのページに認証をかけます
:hogehoge等管理者専用ページを作る事もできます。
pukiwiki/pukiwiki.ini.php を編集
全頁の編集に認証をかける †
編集リンククリック時にベーシック認証がかかります。
管理者のみ編集可能とする事ができます。
一度認証すれば、ブラウザを閉じるまで有効なため、編集が楽に行えます。
pukiwiki/pukiwiki.ini.php を編集
blogtimesを表示させる。 †
pukiwikitimes 要gd extension、フォント(さざなみフォント等)
BlogTimes Flash製。汎用RSS対応。
余計なExtensionは入れたくないので、BlogTimesを利用してみました。
上記サイトから、「blogtime-v5.zip」をダウンロードし、中の「blogtime-v5.swf」適当なディレクトリに配置します。
(/pukiwiki/flash/blogtime-v5.swf)に置いてみました。
skin/pukiwiki.skin.ja.php の110行目「<?php echo $hr ?>」の次あたりに以下を追加。
<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"
WIDTH="150" HEIGHT="28" id="rsstest" ALIGN="">
<PARAM NAME="movie" VALUE="flash/blogtime-v5.swf">
<PARAM NAME="quality" VALUE="high">
<PARAM NAME="wmode" VALUE="transparent">
<PARAM NAME="bgcolor" VALUE="#FFFFFF">
<PARAM NAME="FlashVars"
VALUE="bgcolor=0x000000&barcolor=0xffffcf&rssurl=index.php?cmd=rss10&dummy=a" >
<EMBED src="flash/blogtime-v5.swf" quality="high" wmode="transparent"bgcolor="#FFFFFF"
WIDTH="150" HEIGHT="28" NAME="rsstest" ALIGN=""
TYPE="application/x-shockwave-flash"
PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"
FlashVars="bgcolor=0x000000&barcolor=0xffffcf&rssurl=index.php?cmd=rss10&dummy=a">
</EMBED>
</OBJECT>
画面上部にパンくずナビを常に表示させる †
指定wikiページをhtml化する †
snapshot プラグインを使う。
snapshot.inc.phpをダウンロードし、pluginフォルダにコピーする。
ページ「aaa」をhtml化したい場合は以下のようにする。
LAN内のファイルやフォルダにリンクを張る †
プラグインを作成しました。
Software/wiki自作プラグイン/lan.inc.php
1.4.5の場合
wiki/skin/pukiwiki.css.php を編集する。
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 } ?>
}
1.4.4の場合
skin/default.ja.css にwidth:属性を追加する
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); // 表示上の画像サイズを指定する場合
php7.x環境では「Fatal error: Uncaught Error: Call to undefined function split()」が発生する
split()関数が廃止されたので、explode()に置き換える