rusica.net

雑記帳 : 200ページ目

カテゴリ一覧でアクティブなカテゴリをハイライト表示させる

カスタム分類一覧を表示したいときのお話。いや、カスタム分類に限った話じゃなくて、通常のカテゴリにも当てはまる話なんだけどね。

以下、カスタム投稿「products」にカスタム分類「productcat」が設定されているものとして話を進める。

とりあえずこんな感じにsidebar.phpに記述すると

<ul>
<?php wp_list_categories( 'taxonomy=productcat&title_li='); ?>
</ul>

カスタム分類「productcat」の一覧が順不同リストとして表示される。

で、困るのが記事なりページなりが所属するカテゴリをハイライト表示させたいとき。

カスタム分類のアーカイブページでは該当するカテゴリのli要素に「current-cat」というclass属性値が自動的に振られるから、CSS書けば簡単にアクティブなカテゴリの表示を変更できる。

ところが個別の記事ページでは「current-cat」ってclassが振られないので、どうしようこれ、みたいになって困る。というか困った。

そこでだ。以下のようにして何とかした。

<ul>
<?php
if(is_singular('products') ) :
    $catinfos = get_the_terms($post->ID, 'productcat');
    foreach ( $catinfos as $catinfo ) :
        $mycat = $catinfo;
        break;
    endforeach;
    wp_list_categories( 'taxonomy=productcat&title_li=&current_category='.$mycat->term_id);
else:
    wp_list_categories( 'taxonomy=productcat&title_li=');
endif;
?>
</ul>

まずif(is_singular('products') ) :~else:と書いて、カスタム投稿「products」の個別記事ページとそれ以外で処理内容を分岐。

「products」の個別記事ページ以外では普通に「productcat」一覧を出力させる。

問題は「products」の個別記事ページの方で、どうしようか悩んでたらCodexに都合のよさそうなパラメータが。「current_category」にカテゴリIDを記述することで、「現在表示されてるページのカテゴリは○○だ」と強制できるらしい。

これを利用したのがif(is_singular('products') ) :内の記述部分で、まずはget_the_terms関数で現在の記事が属する「productcat」情報を取得。配列でごちゃごちゃなってるのでforeach関数使って、記事が属する「productcat」の最初の1つだけを使う。必要な情報はカテゴリID(整数)なので当該連想配列の中の「term_id」を持ってくればOK。あとはwp_list_categories関数にパラメータとして記述すればいいだけなので、あんな感じに書けば終了。

上の書き方の欠点は複数のカスタム分類に所属している記事については、(たぶん)IDの若い方の情報しか得られないので、複数カテゴリに所属していても複数のリンクをハイライト表示できないところにある。パラメータ「current_category」には整数しか渡せないっぽいので、所属カテゴリすべてにclass「current-cat」をつけたいときはどうしたらいいんだろうか、と思ったり。

どうでもいい雑記その911

まー、仕事で忙しいと書くことなくて、更新間隔があくわけだ。

とりあえず売ってたので購入。ホントは360版が良かったんだけどそっちは売り切れてたから妥協した。

PSPo2の自キャラがレベル200に到達したし、新しいゲーム始めるには丁度いいかな、と。今日はたぶんキャラメイクやって終わりだろうな。土日にがっつり遊ぼう。

どうでもいい雑記その910

iTunesでシャッフル再生しながらPSPo2で作業してたらFLEETの曲が流れてきて、今何やってんだろと思ったら、いつの間にかソロプロジェクトになってて、26日に新譜がでるらしい。

いい曲だ。

ボカロ曲投稿してたんだ、知らんかった。

曲がダメとかじゃなくて、プロがニコ動にどうこうとかいちゃもんつけてるバカは何なんだろうか。

あくまで個人的に、だけど。ボカロの曲ってボーカルが耳障りな曲が多くて、あんま好きじゃない。この曲はそういうのがなくていいな。ところでこの曲、佐藤さんが自分で歌ってくれたりしないのかな。

どうでもいい雑記その909

新しい体制、なんて言うと聞こえがいいけど、要するに身売りか。どうなるのかねー、Movable Type。Six Apartの製品は最近全く触ってないから、動向とか機能とかその辺が全く分からん。

CMSとしてMovable Type推しな人もちょくちょく見かけるけど、未だに触る気が起きない。ぶっちゃけどうなのよ、Movable Type 5。

仕事で手がける中小レベルの企業のサイトだと、WPで十分事足りてるんだけど、どの辺が便利なんだろうか、MT。分業しやすいとか? 私が勤めてる会社だと分業もへったくれもないからなー。そもそもPerlってのが好きになれない。言語として優れているか否かについてはプログラマーじゃないから分からんけど、お手軽感がないんだよね、Perl。

私は、aratako0さんと同様にもう、WPでいいじゃんと思ってるし。カスタム投稿タイプとカスタム分類をうまく使えば結構どうにでもなる。自分で関数書いてどうにかできそうもない=自分じゃ分からんときはプラグインに頼ればいいし。

カスタム投稿タイプとカスタム分類のおかげで、WordPressも以前と比べるとCMS的に使うのが大分楽になったと思う。それらに関する日本語ドキュメントがWeb上に少ないってのはまぁネックだな。「使ってみよう」的な軽い記事は結構見かけるけど、メタボックスの追加等の管理画面のカスタマイズを含めたわりと突っ込んだ記事ってほとんどない気がする。WordPress 3 サイト構築スタイルブックにもメタボックスの追加についての記述は皆無だし。

「CMS的な」といえば、kzさんがフォーラムに書いてた「普通は他の記事は独立していて、その記事へのリンクのために1ページに集めてますけど 他の記事を1つのページ内の1ブロックのコンテンツとして扱えば」ってのはすごく興味深かった。その発想はなかった的な意味で。カスタム投稿ってそういう使い方もあるのかー、とすごく感心してしまった。今度やってみようと思う。

ちなみに、私が最後に触ったMTは3.3。ISO-HTML仕様のテンプレートを作るとかいう奇特なことをやっていた。WordPressに完全移行したのが2008年。書籍とかも充実してきたしそろそろ乗り換えるか、的な感じで本を一冊買ってきて移行。移行理由としてはMTでの再構築が鬱陶しかったってのが唯一の理由。

どうでもいい雑記その908

相変わらずPSPo2をやってる。

土日に関しては、髪が鬱陶しいので、美容院に行こうかなー、と。あとは寒いし、引き篭もってゲームするしかないな。

っていうか、仕事しかしてないから書くことないんだよね。

何だこの生活。

私にとって仕事は金銭獲得手段に過ぎない *1ので、仕事しかしてないとか生きてる意味がない。今の状態は全くもって無意味。早くだらけた生活に戻したいところ。

  1. WordPress弄ったりするのは好きだけど、仕事はあくまで仕事。趣味で好き勝手やるのと仕事で弄るのじゃやっぱ違うよ。[]