NP_MultipleCategories(スキン変数使用時)のソート

スキン変数<%MultipleCategories(テンプレート)%>という使い方で用いる際、昇順で並べる必要性が生じました。

ところが、NP_MultipleCategoriesの解説には昇冪(しょうべき)順・降冪(こうべき)順の並び替えに関する記述がありません。

適当にパラメータを増やして、<%MultipleCategories(テンプレート,10,ASC)%>等と記述してみましたが、うまく動く訳も無く・・。

仕方がないので、一か八か、ソースを覗いて手を加える事にしました。「"DESC"とか記述があれば、そこを変えればいいだろ~」なんてお気楽な考えです。

──で、発見。修正したら出来ちゃいました(笑)。

次にその修正内容を、冗長性を持たせた修正も加えて記載します。


■プラグイン名及びバージョン : NP_MultipleCategories_v0.5.1j

■修正内容その壱 :
- DESC又はASCを格納する変数「$sort_」の作成
- ソート指示を格納するパラメータ「$param[5]」の追加

720行目あたりから
if (isset($params[2])) {
list($amountEntries, $offset) = sscanf($params[2], '%d(%d)');
if ($offset) {
$startpos += $offset;
}
}
if (isset($params[3]) && $params[3])
$mycatid = getCatIDFromName($params[3]);
if (isset($params[4]) && $params[4])
$mysubcatid = $this->_getScatIDFromName($params[4]);
// ---------- Ephemera Add Start ----------
$sort_ = "DESC";
if (isset($params[5]) && $params[5]="ASC")
$sort_ = "ASC";
// ---------- Ephemera Add End------------

■修正内容その弐 :
- SQL文「ORDER BY i.itime DESC」を修正

770行目あたり
if ($mycatid) {
$query .= ' and ((i.inumber=p.item_id and (p.categories REGEXP "(^|,)'.$mycatid.'(,|$)" or i.icat='.$mycatid.')) or (i.icat='.$mycatid.' and p.item_id IS NULL))';
}
if ($mysubcatid) {
$query .= ' and p.subcategories REGEXP "(^|,)'.$mysubcatid.'(,|$)"';
}

// ---------- Ephemera Modified Start ----------
// $query .= ' ORDER BY i.itime DESC';
$query .= ' ORDER BY i.itime ' . $sort_;
// ---------- Ephemera Modified End ------------

■修正後の使い方 :
- スキン関数<%MultipleCategories(テンプレート,表示件数,,,ASC)%> で、昇順表示。

2009年08月21日:H_プラグインephemera

Comments

コメント (0)

Add coments

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