Jun
20
2005
先日のNew THEME: LuvRed2でも書いたように、今回のこのTHEMEでは5つのsidebarを使っています。
- Home用: sidebar.php
- Daily Life用: sidebar-2.php
- Web用: sidebar-3.php
- Languages用: sidebar-4.php
- House用: sidebar-5.php
本当は1つだけでもいけるとは思いましたが、1つのファイルの容量が大きくなってしまうし、ややこしいので分けました。またこれら5つはメインカテゴリで、その下に幾つかのサブカテゴリが付随しますが、サブカテゴリはメインカテゴリで使用しているsidebarを使う設定にしています。search.php、404.phpはHome用のsidebar.phpを使うようにしています。
sidebarを呼び出すコードを記入するのは、私のTHEMEの場合、home.php、index.php、category.php、category-x.php、single.php、search.php、404.php、page.php、archive.phpです。
New THEME: LuvRed2で書いたとおり、上の5つのメインカテゴリではそれぞれcategory-x.phpを作っているので、その場合はsidebarを呼び出すコードは単純に一行だけです。home.phpはsidebar.phpを呼び出すので<?php get_sidebar(); ?>
になります。他のそれぞれのcategory-x.phpファイルでは少し違って、例えばsidebar-2.phpを呼び出すDaily Life用のcategory-x.phpだと<?php include (TEMPLATEPATH . '/sidebar-2.php'); ?>
となります。sidebar-3.php、sidebar-4.php、sidebar-5.phpもこの例と同じようにすればいいだけです。
サブカテゴリにはcategory-x.phpファイルはそれぞれ作っていないので、表示されるときはcategory.phpを使って表示されます。この場合、sidebarを呼び出すコードをこのcategory.phpに書き込まなければなりません。複数の指定をするのですが、実際のカテゴリ数を使うと多いので、ここでは仮にカテゴリIDが1から3のものはsidebar-2.php、4から6のものはsidebar-3.php、7から9のものはsidebar-4.php、10から12のものはcategory-5.php、それ以外はsidebar.phpを呼び出すと仮定します。コードはこんな感じです。<?php if(is_category('1') || is_category('2') || is_category('3')){ ?>
<?php include (TEMPLATEPATH . ‘/sidebar-2.php’); ?>
<?php } elseif(is_category(’4′) || is_category(’5′) || is_category(’6′)){ ?>
<?php include (TEMPLATEPATH . ‘/sidebar-3.php’); ?>
<?php } elseif(is_category(’7′) || is_category(’8′) || is_category(’9′)){ ?>
<?php include (TEMPLATEPATH . ‘/sidebar-4.php’); ?>
<?php } elseif(is_category(’10′) || is_category(’11′) || is_category(’12′)){ ?>
<?php include (TEMPLATEPATH . ‘/sidebar-5.php’); ?>
<?php } else{ ?>
<?php get_sidebar(); ?>
<?php } ?>
single.phpでは、このis_categoryの部分をin_categoryに変更したらいけます。
このphp ifはとっても便利。いろんな所で活躍してくれます。この「||」を使ってカテゴリを複数指定する方法はカテゴリを複数指定するのコメントでKairaさんに教えていただきました。当初はサポートフォーラムにも載ってませんでしたが、最近みたらこの方法を書いてる方がおられました。
<?php if(指定したいis_機能かin_機能) { ?>
上で指定したところだけに表示したい文章やコード
<?php } elseif(上のとはまた別の指定したいis_機能かin_機能){ ?>
上で指定したところだけに表示したい文章やコード
<?php } else{ ?>
上の2つ以外の部分で表示したい文章やコード
<?php } ?>(php ifの文章を閉じるコード)
私はよく最後の<?php } ?>を忘れたりでエラーがでますが
、PHPの場合なぜエラーがでるのかメッセージが出るので冷静に読んでみたら解決することもしばしばです。私の場合は変な場所に「”」や「}」が入っていたり、逆に忘れていたりが多いです。もし上の例で、表示したい物が何もない時は、すぐに次のコードにいけばいいし、elseifの部分をなくしてelseだけ指定することも出来ます。is_機能ではカテゴリIDや名前、Slugなどで細かく指定することもできます。詳しくはCodexのConditional Tagsを参照してください。
それぞれのsidebarで何が違うのかというと、現在見ているメインカテゴリがハイライトされ、その下にサブカテゴリのリストがでてきます。ゆくゆくはその下に、そのカテゴリにちなんだPageへのリンクも入れるつもりです。あとは表示する項目も少し変更していこうかなって思います。
Pages: 1 2
Trackback URI: http://www.hyperpup.com/main/archives/177/trackback/



この記事を参考に四苦八苦して2時間、カテゴリーごとにそれぞれのサイドバーをつけることができました!感謝!サイドバーが長くなるのがいやで、かといってカテゴリつくることを制限すると記事がまとめにくくなるし・・・と悩んでいましたが、おかげで解決しそうです
まだまだ時間かかりそうですが、ブログ!という感じのブログ脱出できるよう、がんばります。WordPressのテンプレートいじりは楽しいですね~。
Elle
Mon, July 25, 2005 @ 15:09
わぁ
お役に立てて嬉しいです。カテゴリーリストがにょ~んと伸びるのは結構悩みですよね。でも確かにテンプレートいじりかなり楽しいです
PHPわからなくてもできるところが嬉しい 
Mayu
Tue, July 26, 2005 @ 1:11