livearchive_list カテゴリ別ページ
Friday 21 January 2005 at 09:43 am
1.20で実装されたライブエントリを使用すると、livearchive_list テンプレートタグでカテゴリ別のページが生成されるようになりました。例えば、
<div class="block">
<h3>カテゴリ</h3>
<p>[[livearchive_list]]</p>
</div>
とテンプレートに追加することで、カテゴリ毎のリンクを作成してくれます。ただし、登録されているすべてのカテゴリリンクが作成されてしまいます。複数のウェブログを作成している場合は不便かもしれません。
更に重大な問題があります。カテゴリ名を $_GET を使用して受け渡すため、日本語のカテゴリでブラウザが IE であると、変な感じに文字化けすることがあります。対策としては、Firefox に乗り換える
function snippet_livearchive_list ($filename="", $format="", $weblog="", $template="") {
global $Weblogs, $Current_weblog, $Cfg, $Paths, $allcats;
if ($filename == "") { $filename = $Paths['pivot_url']."archive.php"; }
if ($format == "") {
// 2005/01/21 Changed by Davilin
$format = "<a href='%file%?c=%cat_encode%&w=%weblog%&t=%template%'>%cat%</a><br />";
}
$allcats = cfg_cats();
if ($weblog == "current") {
// get cats from current weblog..
$cats = array();
foreach($Weblogs[$Current_weblog]['sub_weblog'] as $subweblog) {
$cats = array_merge($cats, $subweblog['categories']);
}
} else if ( ($weblog != "") && (isset($Weblogs[$weblog])) ) {
// get cats from a specific weblog..
$cats = array();
foreach($Weblogs[$weblog]['sub_weblog'] as $subweblog) {
$cats = array_merge($cats, $subweblog['categories']);
}
} else {
// get all cats..
$cats = explode("|", $Cfg['cats']);
}
usort($cats, "category_simplesort");
foreach ($cats as $cat) {
// skip cats if it's 'not-public'.
if ($allcats[$cat]['hidden'] == 1) { continue; }
// skip if name is empty
if ($cat == "") { continue; }
$my_output = $format;
$my_output = str_replace('%file%', $filename, $my_output);
$my_output = str_replace('%cat%', $cat, $my_output);
// 2005/01/21 Changed by Davilin
$my_output = str_replace('%cat_encode%', urlencode($cat), $my_output);
$my_output = str_replace('%weblog%', $weblog, $my_output);
$my_output = str_replace('%template%', $template, $my_output);
$output .= $my_output;
}
return $output;
}



















