« ビバ!アバンダン | メイン | 続々:カテゴリー別に »
2005年08月24日
これはMT関係の記事であります。IEで見るとソースコード部のスクロールバーが変だったのに対処してみました。直った、のかな?続:カテゴリー毎にスタイルを
むかーし作った個別エントリーページのスタイルをカテゴリー毎に変えてみるという奴、エントリーに副カテゴリーを設定していると各カテゴリーのスタイルシートが全部付いてくるという問題が有りました。今まで副カテゴリーを設定しているエントリーは無かったので無視してきたけれど、やっぱり気分が悪いので修正。まずは前回いじった個別エントリーのアーカイブを更に修正してこんな感じに(太字部分)。無駄なブロックが無くなってすっきりしたな。
<link rel="stylesheet" href="<$MTBlogURL$>styles-site.css" type="text/css" /> <link rel="stylesheet" href="<$MTBlogURL$>styles-cat_<$MTCategoryID$>.css" type="text/css" />
MTEntryCategoryIDというのが今回勝手に追加したタグであります。ここはphpにしてるんで実装にはsmartyな関数を作成。
php/lib/function.MTEntryCategory.phpをコピーしてfunction.MTEntryCategoryID.phpというのを作成、置き場はphp/plugins/あたりが適当でしょうかね。中身の編集は
<?php
function smarty_function_MTEntryCategoryID($args, &$ctx) {
$entry = $ctx->stash('entry');
if ($entry['placement_category_id']) {
$cat = $ctx->mt->db->fetch_category($entry['placement_category_id']);
if ($cat) {
return $cat['category_id'];
}
}
return '';
}
?>
と関数名を変更したのと、返す値をcategory_labelからcategory_idに変えただけ。こういう使いそうな機能がどうして最初っから入っていないのかは非常に不思議。
非PHP版についてはそのうち考えよう。
…考えた、はじめてのplugin作成にとーさんドキドキ。
お作法どおりのplugins/ディレクトリにEntryCategoryID.plとかいう名前のファイルを作成、中身はこんなかんじ。
use MT::Template::Context;
MT::Template::Context->add_tag(EntryCategoryID => sub {
my $ctx = shift;
my $entry = $ctx->stash('entry');
unless ($entry->{__my_categoryID}) {
use MT::Placement;
my @p = MT::Placement->load({ blog_id => $entry->blog_id,
entry_id => $entry->id,
is_primary => 1 });
for my $p (@p) {
$entry->{__my_categoryID} = $p->category_id
if $p->is_primary;
}
}
$entry->{__my_categoryID};
}
);
1;
意外とあっさり動いた、しかし使って何か問題が起きても私は責任を取らない。
Updated: 2005-08-25 11:45:06 php用の内容に不備があったので全面書き換え。
Updated: 2005-08-25 14:10:19 static用を作成。
投稿者 kade : 2005年08月24日 13:34 | CSSとかHTMLとか , MT , 情報処理
トラックバック
このエントリーのトラックバックURL:
http://www.kadesoft.com/cgi-bin/mt3/mt-tb.cgi/105
トラックバックしてくれた方々:
» 続々:カテゴリー別に from OreBlog
まだまだ続くカテゴリーIDでアレコレするシリーズ、今度は条件分岐タグを作ってみま... [続きを読む]
トラックバック時刻: 2005年10月08日 16:20
» MTEntryCategoryID from 予定は未定であって決定ではない
なんちゅーか、MTってなんかいまいち気が効かないんだよねー。テンプレートタグなん... [続きを読む]
トラックバック時刻: 2006年06月22日 20:26