2010年02月23日

カテゴリ

今はブログの模様替えの最中なのだ。
とはいってももう3日ほどこれに費やしている。

それというのもカテゴリごとに昇順、降順の切り替えをしようと思っていたのに
それがデフォルトではできないらしいからなのだ。
なんでもバージョン4.1からはカスタムなんちゃらでできるようになったらしいんだが、
残念ながらこれは3.1とかなので全然だめなの。
バージョンアップするという選択肢はあんまり考えたくない。
何しろ前にそれをして大変な目にあって苦労して元に戻したので。

と言うわけなので面倒くさい条件分岐をするcompareというプラグインを入れて、
それでカテゴリの名前を本に分岐するという手はずを踏んだ上で
なんとかカテゴリ毎のエントリーの並び順の変更はできるようになった。
ついでにデザインも個々に設定できる様になったので気が向いたらさわやか君にしてみたい。

しかしさらにまだ問題は続いていて、今取り組んでいるのはカテゴリの順番を調整するやつなんだが
調べたところ category_priorities というものをなんとかしてpmファイルにした上で
extlibフォルダに入れれば順番指定ができるという話があったのだ。
しかしそれをしてみたところ全くよくわからない並びになってしまうのであります。

photo23.jpg
こういった感じ。

日本語のカテゴリだとうまくいかないとか、変数の返値がおかしいとか
そういう問題があるという話も調べたところ出てきたのでそれを直しながら何回か試している。
でもだめなんだよなぁ。
perlのこともよくわかってないので、一体なにをする関数なのかあやふやなのもいけないんだと思う。
いい加減疲れてきたので数字付きの方法にした方がいいんだろうか。

なんとか思い通りの順番にすることができた。
結局またもや問題は文字コードだった。

package CategorySort;
my %category_priorities = (
'GTAなど' => 10,
'その他の何か' => 20,
'パソコン関係' => 30,
'ファイル' => 40,
~略~,
'東北 09年03月' => 235,
);
sub cat_sort ($$) {
my ($a, $b) = @_;
my $a_pri = $category_priorities{$a->label} || 1000;
my $b_pri = $category_priorities{$b->label} || 1000;
unless ($a_pri == 1000 && $b_pri == 1000) {
return $a_pri <=> $b_pri;
}
return $a->label cmp $b->label;
}
これを CategorySort.pmとか言うファイル名にしてextlibにアップロードしてみるわけ。 あとテンプレートも多少いぢくる必要がある。

で、このコードなんだが文字コードをブログ自体が日本語EUCにしていたのに
ANSIとかなんとかで保存していて、それがまずい原因だったようでございます。
まぁ解決してよかったね。
これで次のステップに進むことができるようになった。

投稿者 kororial : 2010/02/23(火) 23:32 | ブログ関係 | 編集
カテゴリへのコメント
コメントする









名前、アドレスを登録しますか?