カテゴリ | デザイン・CSS・スキン |
サマリ | MenuBarを増やせません |
バージョン | 1.4.7_notb_utf8 |
投稿者 | tfujii |
状態 | 完了 |
投稿日 | |
- 質問内容
質問箱/2021やBugTrack/430に従ったのですが、どうしてもできませんでした。3カラムにはなるのですがMenuBar2の内容が全く反映されません。真っ白です。。
menu2.inc.php がエラーになるようなこと(「"」などを挿入する)をしてみてもエラーメッセージが表示されなかったことから、do_plugin_convert('menu2') が効いていないためだと考えています。どうしたら plugin/menu2.inc.php を読み込めるのでしょうか。
行った作業も記載しましたので何か抜けている点がありましたら教えて下さい。
- PKWK使用環境
Apache/2.2.22 (Win32) PHP/5.3.14
- 行った作業
- ※デフォルトからやってみてもダメでした。
1. skin/pukiwiki.skin.php を次のように変更
<tr>
<td class="menubar">
<div id="menubar"><?php echo do_plugin_convert('menu') ?></div>
</td>
<td valign="top">
<div id="body"><?php echo $body ?></div>
</td>
</tr>
↓
<tr>
<td class="menubar">
<div id="menubar"><?php echo do_plugin_convert('menu') ?></div>
</td>
<td valign="top">
<div id="body"><?php echo $body ?></div>
</td>
<td class="menubar2">
<div id="menubar2"><?php echo do_plugin_convert('menu2') ?></div>
</td>
</tr>
2. skin/pukiwiki.css.php に下記を追加
td.menubar2 {
<?php if ($media == 'print') { ?>
display:none;
<?php } else { ?>
width:9em;
vertical-align:top;
<?php } ?>
}
div#menubar2 {
<?php if ($media == 'print') { ?>
display:none;
<?php } else { ?>
width:9em;
padding:0px;
margin:4px;
word-break:break-all;
font-size:90%;
overflow:hidden;
<?php } ?>
}
div#menubar2 ul {
margin:0px 0px 0px .5em;
padding:0px 0px 0px .5em;
}
div#menubar2 ul li { line-height:110%; }
div#menubar2 h4 { font-size:110%; }
3. pukiwiki.ini.php の「// Default page name」に下記を追加
$menubar2 = 'MenuBar2'; // Menu2
4. plugin/menu.inc.php を複製し「menu2.inc.php」というファイル名にする
5. plugin/menu2.inc.php の「function plugin_menu_convert()」を「function plugin_menu2_convert()」に、「$menubar」を「$menubar2」に変更
6.「MenuBar2」というページを作成
- とりあえず、Q. 設置後にアクセスすると画面が真っ白になって、エラーメッセージが何も表示されない --
- それだけしか作業していないんだったらMENU_ENABLE_SUBMENU定数とMENU_SUBMENUBAR定数を2回定義しようとしちゃうような。plugin/menu2.inc.phpのほうをMENU2_ENABLE_SUBMENUとかPLUGIN_MENU2_ENABLE_SUBMENUとかのような被らない名前に両方とも置き換える必要がありそうかも --
- すみません。自己解決しました。質問箱3/144を参考に下記のようにしてみたところ、(menu2.inc.phpを認識して)右メニューバーが表示されました。require_once(PLUGIN_DIR . '[プラグイン]')で呼び出せるのですね。 -- tfujii
pukiwiki.skin.php
<div id="menubar2"><?php echo do_plugin_convert('menu2') ?></div>
↓
<div id="menubar2"><?php require_once(PLUGIN_DIR . 'menu2.inc.php'); echo do_plugin_convert('menu2') ?></div>
- ところでmenu.inc.phpはどこでrequire_once()されているんでしょうか?pukiwiki.skin.php内を検索しても見当たらないのですが。そこまで分かったら本件を完了にしたいと思います。 -- tfujii
- lib/plugin.php 内の function exist_plugin で require_once されています --
- skin/pukiwiki.skin.php
<?php if (arg_check('read') && exist_plugin_convert('menu')) { ?>
でmenuプラグインにブロック型があるかをチェックするためにファイルを呼んでます。 --
- ありがとうございます。なるほど、plugin.php の exist_plugin_convert() から呼び出された exist_plugin() 内で require_once() されていますね。とすると一応、menu2.inc.php も require_once() ではなく exist_plugin_convert() を通して呼び出すべきですよね? -- tfujii
- menu2.inc.php が読めなかった場合(アップ忘れなど)の保険として exist_plugin_convert() で予め確認するような仕組みが推奨されていますね --
- わかりました、そのように記述するようにします。早いご回答ありがとうございましたm(__)m -- tfujii
- 参考情報: dev:プラグイン/開発者向け --
skin/pukiwiki.skin.php の、
do_plugin_convert('menu2')
より前に、
exist_plugin_convert('menu2')
を記述するべし。