質問箱/5105

カテゴリデザイン・CSS・スキン
サマリMenuBarを増やせません
バージョン1.4.7_notb_utf8
投稿者tfujii?
状態完了
投稿日2012-09-07 (金) 17:41:36

質問

質問内容

質問箱/2021BugTrack/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. 設置後にアクセスすると画面が真っ白になって、エラーメッセージが何も表示されない -- 2012-09-07 (金) 21:18:41
  • それだけしか作業していないんだったらMENU_ENABLE_SUBMENU定数とMENU_SUBMENUBAR定数を2回定義しようとしちゃうような。plugin/menu2.inc.phpのほうをMENU2_ENABLE_SUBMENUとかPLUGIN_MENU2_ENABLE_SUBMENUとかのような被らない名前に両方とも置き換える必要がありそうかも -- 2012-09-07 (金) 21:25:22
  • すみません。自己解決しました。質問箱3/144を参考に下記のようにしてみたところ、(menu2.inc.phpを認識して)右メニューバーが表示されました。require_once(PLUGIN_DIR . '[プラグイン]')で呼び出せるのですね。 -- tfujii? 2012-09-07 (金) 21:42:30
    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? 2012-09-07 (金) 21:53:34
  • lib/plugin.php 内の function exist_plugin で require_once されています -- 2012-09-07 (金) 22:54:45
  • skin/pukiwiki.skin.php
    <?php if (arg_check('read') && exist_plugin_convert('menu')) { ?>  
    でmenuプラグインにブロック型があるかをチェックするためにファイルを呼んでます。 -- 2012-09-07 (金) 23:00:42
  • ありがとうございます。なるほど、plugin.php の exist_plugin_convert() から呼び出された exist_plugin() 内で require_once() されていますね。とすると一応、menu2.inc.php も require_once() ではなく exist_plugin_convert() を通して呼び出すべきですよね? -- tfujii? 2012-09-08 (土) 00:19:17
  • menu2.inc.php が読めなかった場合(アップ忘れなど)の保険として exist_plugin_convert() で予め確認するような仕組みが推奨されていますね -- 2012-09-08 (土) 13:13:05
  • わかりました、そのように記述するようにします。早いご回答ありがとうございましたm(__)m -- tfujii? 2012-09-08 (土) 18:19:52
  • 参考情報: dev:プラグイン/開発者向け -- 2012-09-08 (土) 23:47:35

結論

skin/pukiwiki.skin.php の、

do_plugin_convert('menu2')

より前に、

exist_plugin_convert('menu2')

を記述するべし。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-09-08 (土) 23:47:35
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.209 sec.

OSDN