左側のMenubarに置いた検索バーが出ない問題†
- ページ: BugTrack2
- 投稿者: 鷺梁津
- 優先順位: 低
- 状態: 完了
- カテゴリー: プラグイン
- 投稿日: 2016-05-06 (金) 13:48:07
- バージョン: 1.5.1
メッセージ†
始めまして、折紙戦士wikiを運営している鷺梁津と申します。
ウィキーを新しいバージョンの1.5.1にアップデートしましたが、前バージョンでは問題なく使えた検索バーがこんなメッセージーを出し、バーが使えなくなりました。
#search(): You already view a search box
自ら改造して使ってたスキンにsearch関数を二回以上入れちゃったか確認したら、ナビバー以外search関数が重なっている所は見つかりませんでした。ナビから検索リンクを消しえもあのメッセージはそのままです。
Menubarページに直接入ってメニューの状態を確認したら検索バーが問題なく出ます。バージョンアップの途中できたバグではないかと思って、ここに質問します。
- here? origamiwiki.xyz --
- search プラグイン本体や呼び出し方法に問題が無いなら、commit:e4915ebaad7ccebc25007bf05afcd5c18cb97835 で変数名が変更されたdo_plugin_init() の static $done を plugin_search_convert() の static $done が見てしまっている可能性を疑う必要があるのだろうか? --
- はい、正しいURLはそれです。リンク間違いましたね。plugin_search_convert()の因数は更に$doneではない新しい名前を付けてみました。しかし問題の原因ではなさそうです。 -- 鷺梁津
- まずはsearchプラグイン呼出が重なっている場合、検索バーの代わりに警告メッセージを出すコードを削除する方法を使って問題を解きました。もっといい方法が見つかったらこちらにもう一度報告します。 -- 鷺梁津
- 内部で何回呼び出されているか興味ある。BugTrack2/348じゃないけど、
static $done = 0;
if (++$done >= 3) {
return '#search(): You already view a search box<br />' . "\n";
のような、実行回数を比較する形式に変更で原因のヒントわかったりしないかな?(あれ?もともとのstatic $done; って、isset()で初期化済み扱いになるんでしたっけ??) --
- 理由を見つけました。まず、純正エンジンであれば起こらない問題です。
折紙戦士ウィキーでは色んなファイルたちを少し変えたカスタムエンジンを使ってますし、基本スキン編集ファイル(pukiwiki.skin.php)もその一つです。純正ファイルにはメニューを呼び出す命令が、
<td class="menubar">
<div id="menubar"><?php echo $menu ?></div>
このように書いています。しかし自体カスタムエンジンでは、
<td class="menubar">
<div id="menubar"><?php echo do_plugin_convert('menu') ?></div>
に変わってますので、do_plugin_convert命令が$doneをTRUEに認識しちゃったため、検索バーがちゃんと出れなかったことだと思います。あとスキンを作る場合、ご注意が要りますね。 -- 鷺梁津
- なるほどそういうことでしたか。do_plusin_convert('menu') はv1.5.0のときは表示するHTMLの中で実行していましたが、v1.5.1で、skinの先頭部分で実行するように変わっています。 osdn.jp:projects/pukiwiki/scm/git/pukiwiki/blobs/c02b67db174092b8170c671914f86404040b8c73/skin/pukiwiki.skin.php 他にもこういうケースはありそうです -- umorigu