web関連tips備忘録

Category
<前 | 次>
NP_MultipleCategoriesをカスタマイズ

画面の上、左右等、それぞれのメニューで違う形式でカテゴリーを表示できるようにカスタマイズに挑戦。
カテゴリーリスト表示パラメーターを下記のように3つ追加。
<%MultipleCategories(1,categorylist,selectid,display,cattags)%> 追加したパラメーターの説明
  1. selectid:あるカテゴリーだけを表示したい場合に、ここにカテゴリーidを書きます。複数指定したい場合は”/”区切りで指定します。 空白の場合は記事のある全てのカテゴリーを表示します。
  2. display:ここに”1”を記入すると記事の無い(サブ)カテゴリーも表示するようになります。デフォルトは空白です。
  3. cattags:画面のヘッドラインにカテゴリーを横並びで表示させるためのパラメータです。 ここに”1”を記入する、NP_MultipleCategoriesの管理エリアに書かれた<ul></ul><li></li>タグを<span></span>に変換します。 デフォルトは0です。

使用例:ヘッドラインにカテゴリーid28を記事の無いサブカテゴリーも含めて表示させたい場合は、
<%MultipleCategories(1,categorylist,28,1,1)%>
と、書きます。

追加・変更箇所
function doSKinVar()内、525行目当たり、
case 'categorylist':
$this->showCategoryList();

case 'categorylist':
$this->showCategoryList($params[3],$params[4],$params[5]);

768行目当たり、
function showCategoryList() {

function showCategoryList($selectid="", $display="", $cattags="") {
で、適当な場所に
if($selectid !=""){
$selectid = " and ( c.catid=".str_replace("/"," or c.catid=",$selectid)." ) ";
}

を挿入。

function showCategoryList内、807行目当たり、
echo TEMPLATE::fill($this->getOption('catheader'),
array(
'blogid' => $blogid,
'blogurl' => $blogurl,
'self' => $CONF['Self']
));
$query = 'SELECT c.catid, c.cdesc as catdesc, c.cname as catname FROM '.sql_table('category').' as c WHERE c.cblog=' . $blogid . ' GROUP BY c.cname ORDER BY c.cname ASC';

$cateheader = TEMPLATE::fill($this->getOption('catheader'),
array(
'blogid' => $blogid,
'blogurl' => $blogurl,
'self' => $CONF['Self']
));

echo $cateheader;

$query = 'SELECT c.catid, c.cdesc as catdesc, c.cname as catname FROM '.sql_table('category').' as c WHERE c.cblog=' . $blogid . htmlspecialchars($selectid). ' GROUP BY c.cname ORDER BY c.cname ASC';

同じく、861行目当たり
if (intval($data['catamount']) < 1) {
  continue;
}

if (intval($data['catamount']) < 1 && $display !=1) {
//記事がゼロのカテゴリーは表示しない
  continue;
}
882行目当たり、
if ($sdata['subamount'] > 0 ) {

if ($sdata['subamount'] > 0 || $display ==1) {

同じく、908行目当たり
echo TEMPLATE::fill($tp['catlist'],$data);
を下記に置き換える。
$catelist = TEMPLATE::fill($tp['catlist'],$data);
if($cattags=="0"){
$searche = array("<ul","</ul>","<li","</li>");
$replace = array("<span","</span>","<span","</span>");
  $catelist = str_replace($searche,$replace,$catelist );
}
echo $catelist;

*各行は、デバッグコードを含めた行ですのでオリジナル版には当てはまりません。
暫く動作検証してから公開する予定です。

2006-06-15 10:42:14 by kei - NuCleus

このアイテムは閲覧専用です。コメントの投稿、投票はできません。
<前 | 次>