便利な事は便利な 「追記折り畳み」 ですが、気になる事もあります。 前記事で触れた問題もそうですが、何より「個別参照モード」の意義が薄れる、というのがあるんじゃないかと。
「普通頁で全文読めるなら個別頁は comment&trackback_area だけでイイじゃん」
て考えも浮かんでおかしくない。 いや、comment_list があるから個別頁はTB専用?
・・・というのはちょっと寂しいじゃありませんか。( 特に個別参照頁重視の当店としては )
そこで 今回 Asgard_fold に採用した 「シーソー折り畳み」 。
文字通り前文( topentry_body )と追記( topentry_more ) を交互に切替表示するというもの。
お急ぎの方にもロード待ちやスクロールの手間なく「それなりに」記事を読んで貰えますし、お時間のある方には個別頁でじっくり通読していただこう(ついでにコメントとかもして貰えるんじゃないか)という寸法です。
【 設置法 】 記事領域の本体(文章)部分*を以下のようにします。
( * <div class="entry_body"> 等の内部 )
<!--more_link--><div id="A<%topentry_no>"><!--/more_link-->
<%topentry_body>
<!--more--><br id="More"><!--/more-->
<!--more_link--></div><div class="m" id="B<%topentry_no>"><!--/more_link-->
<%topentry_more>
<!--more_link-->
</div><a href="<%topentry_link>#More" class="mlk" id="C<%topentry_no>">▼</a>
<!--/more_link-->
クラス名やID接頭文字、リンク文言 等は一例です。お好みで設定されて下さいテンプレート末尾( </body> タグの手前)に以下のタグ(スクリプト)を貼ります。
<!--not_permanent_area--><script type="text/javascript"><!--
function mFold(){
if(document.getElementsByTagName){
var A=document.getElementsByTagName('A');
for(i=0;i<A.length;i++){ if(A[i].className=="mlk") {
var N=A[i].href.split('entry-')[1].split('.')[0];
A[i].href="javascript:msw("+N+")";A[i].title="OPEN"
} } } }
mFold();
function msw(N){
var A=document.getElementById("A"+N);
var B=document.getElementById("B"+N);
var C=document.getElementById("C"+N);
if(C.title=="OPEN"){
A.style.display="none"; B.style.display="block"; C.innerHTML="▲"; C.title="CLOSE";
} else {
A.style.display="block"; B.style.display="none"; C.innerHTML="▼"; C.title="OPEN";
} }
//--></script><!--/not_permanent_area-->
CSSに以下を追加します
.m {display:none}
【 解 説 】 前記事のスクリプトを拡張し、追記表示時に前文を隠すようにしました。
( 追記収納時は前文を再表示します )
追記があると個別表示頁以外で more_link により topentry_body をID付きDIVで囲む以外殆ど同じです。
( 前記事のスクリプトの特徴もそのまま受け継がれています )
実際に Asgard_fold に実装したスクリプトとはこれと異なります( Asgard はモード別にソースが分かれてますので)が、後から考えたこちらの方がスッキリしてるような感じもして複雑な気分。