Re: タブメニューについて

2012年4月23日 at 1:46

うまくいかない理由は色々思い当たるのですが、先ずどううまく行かないのか、を書きましょう!
とりあえずブロックの中にJavascriptを入れるのはやめたほうがいいと思います。
理由1: テーマにid="box-tub"、ブロックに$('#box-tub ul').tabs();と書くのは何か違和感…。片方だけあっても動かないし。
理由2: concrete5はデフォルトでjQuery UIを使っています。ログイン中は</body>の直前で読み込まれていると思います。ブロックに入ってるjQuery UIは<head>に入ります。2回読み込まれることになるのでエラーになります。Javascriptは読み込まれるとすぐ実行されるので読みこむ順番もシビアです。

というわけでおすすめは、タブのJavascriptはテーマに直接書く。そしてログイン中はタブのJavascriptが出ないようにする。

<?php $u = new User();
if ($u->isRegistered()) : ?>
<script src="<?php echo $this->getThemePath(); ?>/js/ui.core.js"></script>
<script src="<?php echo $this->getThemePath(); ?>/js/ui.tabs.js"></script>
<script src="<?php echo $this->getThemePath(); ?>/js/tabs1.js"></script>
<?php endif; ?>


アドオンもあります。
http://www.concrete5.org/marketplace/addons/easy-tabs/

タグ: