• 締切済み

PukiWikiでAccordionが動かない。

お世話になります。 pukiwiki 1.4.7を利用しており、メニューバーの項目が多くなってきたため、 綺麗に表示させたいと思い、jqueryを利用したAccordion機能を実装しようと試みています。 そこで、下記サイトをお手本に色々と編集してみました。 ■質問箱/349 http://pukiwiki.cafelounge.net/plus/?%E8%B3%AA%E5%95%8F%E7%AE%B1%2F349 cssは正常に反映出来ているようなのですが、 いざpukiwikiを開くと、メニューバーの隠れている部分が全て表示されており、 動くはずの部分をクリックするも、スライドせず考えている動作をしない状況です。 恐らく、jsが正常に読み込まれていないのではないか?と感じているのですが、 正直お手上げ状態です。 お手数ではございますが、ご教示頂けないでしょうか。 大変困っています。 (それともpukiwiki plus!でしか動かないのでしょうか。) ■実画面 http://www.tenmusu.org/pso3/index.php?FrontPage

みんなの回答

  • agunuz
  • ベストアンサー率65% (288/438)
回答No.5

Pukiwikiでメニューを表示させるときは文字列$body_menuに内容を入れるのが『作法』のようですね。 http://www.tantin.jp/pukiwiki/%E3%82%B9%E3%82%AD%E3%83%B3%E4%BD%9C%E3%82%8A%E5%9F%BA%E7%A4%8E.html #スキン製作まではやらないので知りませんでしたが(汗 条件によって $body_menu にセットしたりしなかったり(あるいは内容を変えたり)という手法が採れるようにとの配慮でしょう。 質問者さんは$body_menuを使わずに(内容が null なので)直書きで表示させていると推測されます。なので $body_menu のチェックをしても意味がありません。チェックを外すべきだと思います。

  • agunuz
  • ベストアンサー率65% (288/438)
回答No.4

>上記で合っている認識で反映させて見たところNULLがTOPページ上部に表示されました。 ということは ><?php if (!empty($body_menu)) { ?> を書いていると出力されないのが当然ですね。この if 文を書かれた理由はなんでしょうか($body_menu に何が入っている予定だったのでしょうか)。「毎回必ず出力する」なら、if 文で括る必要もないと思います。

tenmusu423
質問者

お礼

ありがとうございます。 >を書いていると出力されないのが当然ですね。この if 文を書かれた理由はなんでしょうか($body_menu に何が入っている予定だったのでしょうか)。「毎回必ず出力する」なら、if 文で括る必要もないと思います。 参照したWebには必ず記載するようにとございましたため、記載した次第です。 結局のところ、先に記載させて頂いたソースではAccordion機能は実装することは出来ないのでしょうか。 htmlはわかるのですが、phpは正直触れた事がないので感覚で操作してみている状況です。書かれている通りに記述すれば出来ると思っていたのですが…。 >■質問箱/349 >http://pukiwiki.cafelounge.net/plus/?%E8%B3%AA%E5%95%8F%E7%AE%B1%2F349 この記事自体も2010年が最終投稿日のようでして、上げたとしてもレスが返ってこないような気がして、こちらで質問させて頂いた次第です。 (念のため、質問箱の方でも伺ってみます。)

  • agunuz
  • ベストアンサー率65% (288/438)
回答No.3

><?php if (!empty($body_menu)) { ?> ということは、$body_menu がempty なのでは?var_dump($vody_manu)で確認してください。

tenmusu423
質問者

お礼

ありがとうございます。 <?php if (!empty($body_menu)) { ?> の記載を、<?php if (var_dump($body_manu)) { ?>に変更してみるということでよろしいでしょうか。 上記で合っている認識で反映させて見たところNULLがTOPページ上部に表示されました。

  • agunuz
  • ベストアンサー率65% (288/438)
回答No.2

>下記の記述を、sukin/pukiwiki.skin.php中の<head>タグの直後に記載しているだけです。 #skin/pukiwiki.skin.phpですよね 記載している内容がサイトのhtmlに反映されていません(動作がどうこうではなく、ブラウザに返ってきているhtmlソースで判断)。 Pukiwikiはこのあたりの内容をキャッシュしたりはしないハズです(自分のPukiwikiで確認しましたが、記載した内容はすぐに反映されました)ので、編集するファイルを間違えているか、キチンとアップロード出来ていないかくらいしか思い当たりません。

tenmusu423
質問者

補足

コメントありがとうございます。 わかりやすく記載させて頂きますと、下記コードをskin/pukiwiki.skin.phpに入力しております。 当該ファイルの保存時刻や、サーバ上のファイルを見る限り、ソースとしては反映はされているのですが…。 何が行けないのか、皆目検討がつきません。 <head> <?php global $body_menu,$body_side; ?> <?php if (!empty($body_menu)) { ?> <td class="ltable" valign="top"> <script type="text/javascript" src="<?php echo SKIN_URI ?>jquery/jquery.min.js"></script> <script type="text/javascript" src="<?php echo SKIN_URI ?>jquery/ddaccordion.js"></script> <script type="text/javascript"> ddaccordion.init({ headerclass: "submenuheader", //Shared CSS class name of headers group contentclass: "submenu", //Shared CSS class name of contents group revealtype: "click", //Reveal content when user clicks or onmouseover the header? Valid value: "click", "clickgo", or "mouseover" mouseoverdelay: 200, //if revealtype="mouseover", set delay in milliseconds before header expands onMouseover collapseprev: true, //Collapse previous content (so only one open at any time)? true/false defaultexpanded: [], //index of content(s) open by default [index1, index2, etc] [] denotes no content onemustopen: false, //Specify whether at least one header should be open always (so never all headers closed) animatedefault: false, //Should contents open by default be animated into view? persiststate: true, //persist state of opened contents within browser session? toggleclass: ["", ""], //Two CSS classes to be applied to the header when it's collapsed and expanded, respectively ["class1", "class2"] togglehtml: ["suffix", "<img src='<?php echo SKIN_URI ?>jquery/plus.gif' class='statusicon' />", "<img src='<?php echo SKIN_URI ?>jquery/minus.gif' class='statusicon' />"], //Additional HTML added to the header when it's collapsed and expanded, respectively ["position", "html1", "html2"] (see docs) animatespeed: "fast", //speed of animation: integer in milliseconds (ie: 200), or keywords "fast", "normal", or "slow" oninit:function(headers, expandedindices){ //custom code to run when headers have initalized //do nothing }, onopenclose:function(header, index, state, isuseractivated){ //custom code to run whenever a header is opened or closed //do nothing } }) </script> <div id="menubar"><?php echo $body_menu; ?></div></td> <?php } ?> <?php echo $meta_content_type ?> <meta http-equiv="content-style-type" content="text/css" /> <?php if ($nofollow || ! $is_read) { ?> <meta name="robots" content="NOINDEX,NOFOLLOW" /><?php } ?> <?php if (PKWK_ALLOW_JAVASCRIPT && isset($javascript)) { ?> <meta http-equiv="Content-Script-Type" content="text/javascript" /><?php } ?> <title><?php echo $title ?> - <?php echo $page_title ?></title>

  • agunuz
  • ベストアンサー率65% (288/438)
回答No.1

>恐らく、jsが正常に読み込まれていないのではないか?と感じているのですが、 htmlソースを見た限りでは、jsファイルの読み込み記述が存在していません。skin/pukiwiki.skin.phpをどのように編集したのでしょうか?

tenmusu423
質問者

お礼

コメントありがとうございます。 追加補足ですが、 <script type="text/javascript" src="<?php echo SKIN_URI ?>jquery/jquery.min.js"></script> jquery.min.jsについては、<?php echo SKIN_URI ?>jquery/の階層に保存してあります。 外部接続なしのイントラ内で使用することを想定しているためです。

tenmusu423
質問者

補足

下記の記述を、sukin/pukiwiki.skin.php中の<head>タグの直後に記載しているだけです。 menu生成直後に読み込ませる必要があるとのことだったため、<head>直後に書き込みをしました。 <?php global $body_menu,$body_side; ?> <?php if (!empty($body_menu)) { ?> <td class="ltable" valign="top"> <script type="text/javascript" src="<?php echo SKIN_URI ?>jquery/jquery.min.js"></script> <script type="text/javascript" src="<?php echo SKIN_URI ?>jquery/ddaccordion.js"></script> <script type="text/javascript"> ddaccordion.init({ headerclass: "submenuheader", //Shared CSS class name of headers group contentclass: "submenu", //Shared CSS class name of contents group revealtype: "click", //Reveal content when user clicks or onmouseover the header? Valid value: "click", "clickgo", or "mouseover" mouseoverdelay: 200, //if revealtype="mouseover", set delay in milliseconds before header expands onMouseover collapseprev: true, //Collapse previous content (so only one open at any time)? true/false defaultexpanded: [], //index of content(s) open by default [index1, index2, etc] [] denotes no content onemustopen: false, //Specify whether at least one header should be open always (so never all headers closed) animatedefault: false, //Should contents open by default be animated into view? persiststate: true, //persist state of opened contents within browser session? toggleclass: ["", ""], //Two CSS classes to be applied to the header when it's collapsed and expanded, respectively ["class1", "class2"] togglehtml: ["suffix", "<img src='<?php echo SKIN_URI ?>jquery/plus.gif' class='statusicon' />", "<img src='<?php echo SKIN_URI ?>jquery/minus.gif' class='statusicon' />"], //Additional HTML added to the header when it's collapsed and expanded, respectively ["position", "html1", "html2"] (see docs) animatespeed: "fast", //speed of animation: integer in milliseconds (ie: 200), or keywords "fast", "normal", or "slow" oninit:function(headers, expandedindices){ //custom code to run when headers have initalized //do nothing }, onopenclose:function(header, index, state, isuseractivated){ //custom code to run whenever a header is opened or closed //do nothing } }) </script> <div id="menubar"><?php echo $body_menu; ?></div></td> <?php } ?>

関連するQ&A