お蔵入り

カテゴリ毎にアーカイブのレイアウトを変えたい



上のサイトに書かれている「カテゴリーの記事一覧」をあるカテゴリ(cat1)に対してのみ適用し、それ以外のカテゴリ(cat2-5)についてはデフォルトのままとしたい場合、どの様に行えばよろしいのでしょうか。

カテゴリアーカイブページ内でjavascriptを用いて、カテゴリ名のタグ
<$CategoryName ESCAPE$>
がcat1と一致したか否かで
<CategorizedArticlesLoop>~</CategorizedArticlesLoop>内の記述を分岐させる、といった風にすれば良いのかな。。。と考えているのですが、どうもうまくいきません。

どうかご助言宜しくお願いいたします。

2007-01-15 02:33の質問
この質問は、30日間解決しなかったために自動的に質問が一旦閉じられました。
Ads By Google

回答

まだ回答がありません

コメント(7)

2007-01-16 03:42:20

方針はいいと思いますが、どの辺りがうまくいかないのでしょうか?

#2.  imq
2007-01-16 17:15:20

そうですね。
あと、どのようにデザインを変えたいのかも教えてください。

#3.  hachi
2007-01-26 01:43:53

コメントいただきながら返信が遅れ申し訳ございません。
以下、補足です。

■ アーカイブのデザイン
カテゴリ1:日付とタイトルを一覧表示、クリックで詳細記事へ
カテゴリ2:デフォルトのまま

■ デザインの変え方
アーカイブのHTMLテンプレートにて以下の関数を呼び出し、
<CategorizedArticlesLoop>~</CategorizedArticlesLoop> 内のデザインを変更する

<SCRIPT Language="JavaScript">
function chgHTML(){

 var name = "<$CategoryName ESCAPE$>";
 var tmp;
 if(name != "カテゴリ1"){
   tmp = '<CategorizedArticlesLoop><$ArticleTitle ESCAPE$><$ArticleBody$></CategorizedArticlesLoop>';
 } else {
   tmp = '<CategorizedArticlesLoop><$ArticleDate$><a href="<$ArticlePermalink$>" target="_parent"><$ArticleTitle ESCAPE$></CategorizedArticlesLoop>';
 }
   AAAA.innerHTML = tmp;
}
</SCRIPT>

#4.  hachi
2007-01-26 01:44:26

■ うまくいかない点
<script>~</script>内に書かれた <$ArticleBody$> などが空白になってしまう

■ 暫定策
<script>~</script> の外で無理矢理に

 <div id="tmp2" name = '<CategorizedArticlesLoop>~</CategorizedArticlesLoop>'>
とし、(この場合は<$ArticleBody$>内が空白にならない)
関数chgHTML内で
 if(name != "カテゴリ1"){
   tmp = tmp2.name;
 } else {
 	:
 	:
としている

暫定策は、IEでは期待通りに表示はされるのですが、当然(?)ながらブラウザによっては全く表示されません。
私自身javascriptに明るくないため、根本から勘違いしている可能性もあるのですが。。。

今更な返信にてまことに恐縮ですが、ご助言/ご指摘などいただければ幸いです。
宜しくお願いいたします。

#5.  hachi
2007-01-30 01:01:10

申し訳ございません。単に私の勉強不足だった様です。。。
IE以外のブラウザでは getElementById と innerHTML を組み合わせる必要がありました。

■ chgHTML内
if(name != "カテゴリ1"){

  tmp = document.getElementById("tmp2").innerHTML;
} else {
	:
}
document.getElementById("AAAA").innerHTML = tmp;

■ HTML内
<div id="AAAA">
</div>

<div id="tmp2" style="visibility:hidden;">
 <CategorizedArticlesLoop>
:
 </CategorizedArticlesLoop>
</div>

これで、id:AAAA のdivタグ内に<CategorizedArticlesLoop>~</CategorizedArticlesLoop>のテキストが表示されました。
(もしかしたらまだ問題が残っているかもしれませんが。。。)

次回からはもう少し勉強してからお伺いします。
失礼いたしました。

2007-02-03 06:41:39

解決されたのならいいのですが。。。
全容が見えないのでアレなのですが、必要なものはidつきで全部divに書き出して、display/visibilityを書き換える方がトラブルは少ないような気がします。これだとたぶんシングルクォートとかあるとアレだったりしますよね。いえ、まぁ、現状でいいとは思います。。。

#7.  hachi
2007-02-06 01:52:07

アドバイスいただき有難うございました。
シングルクォートによる文字化け/誤動作はテストした限りでは見つかりませんでしたが、display:noneの方がレイアウトの崩れもない様ですし、ご指摘いただいた方法でも試してみます。
拙い知識のため聊か呆れさせてしまったかもしれませんが、今後習熟を重ね、独力にて解決出来る様に尽力いたします。

重ねて、ご回答いただき有難うございました。

トラックバック

トラックバックURL: