「WordPressで学ぶPHP(2)データ構造(配列・オブジェクト)編」を発売しました。
本書は「WordPressで学ぶPHP(1)変数・制御構造編」の続編にあたり、PHPの「データ構造」(配列とオブジェクト)について解説します。
配列やオブジェクトは、頭の中で考えるだけでは、イメージがつかみにくいです。本書では図を多用して、配列やオブジェクトをなるべく分かりやすく解説することを心がけました。
Kindle本で、定価250円です。
カテゴリ一覧のアコーディオン表示
MTQに以下のような質問が上がっていました。
この質問に答えてみます。
カテゴリーの表示方法についてなのですが、jQueryのアコーディオンに組み込んで表示をしたいと思っているものの、上手くいきません。
使用しているjQueryはこちらです。
HTMLは以下のようになっており、「h2には親カテゴリ」を、「直下のdivにはその子カテゴリ」を組み込めば表示されると考えています。<div id="accordion"> <h2 class="current">First pane</h2> <div class="pane" style="display:block">... pane content ...</div> <h2>Second pane</h2> <div class="pane">... pane content ...</div> <h2>Third pane</h2> <div class="pane">... pane content ...</div> </div>
実際にテンプレートを書いてみると、以下のように結構複雑になりました。
解説は明日以降順を追って行います。
<script type="text/javascript" src="<$mt:StaticWebPath$>jquery/jquery.min.js"></script>
<script src="http://cdn.jquerytools.org/1.2.5/jquery.tools.min.js"></script>
<div id="accordion">
<mt:SetVar name="depth" value="0">
<mt:SetVar name="first_div" value="1">
<mt:TopLevelCategories>
<mt:SubCatIsFirst>
<mt:SetVar name="depth" op="++">
<mt:HasParentCategory>
<mt:If name="depth" eq="2">
<div class="pane" style="display:<mt:If name="first_div">block<mt:Else>none</mt:If>">
<mt:SetVar name="first_div" value="0">
</mt:If>
<ul>
</mt:HasParentCategory>
</mt:SubCatIsFirst>
<mt:HasParentCategory>
<li><a href="<$mt:CategoryArchiveLink$>"><$mt:CategoryLabel$></a>
<mt:Else>
<h2<mt:SubCatIsFirst> class="current"</mt:SubCatIsFirst>><a href="<$mt:CategoryArchiveLink$>"><$mt:CategoryLabel$></a></h2>
</mt:HasParentCategory>
<$mt:SubCatsRecurse$>
<mt:HasParentCategory>
</li>
</mt:HasParentCategory>
<mt:SubCatIsLast>
<mt:HasParentCategory>
</ul>
<mt:If name="depth" eq="2">
</div>
</mt:If>
</mt:HasParentCategory>
<mt:SetVar name="depth" op="--">
</mt:SubCatIsLast>
</mt:TopLevelCategories>
</div>
<script type="text/javascript">
jQuery('#accordion').tabs("#accordion div.pane", {tabs: 'h2', effect: 'slide', initialIndex: null});
</script>
