Nucleusを新バージョンにして久しいのだけれど、プラグインの改造をしようしようと思っていてやって無いネタを。
Nucleusの3.3以降では、プラグインに「doif」関数を追加することで、本体側のif文の条件分岐にプラグインでの判定を追加することができる。
うちのサイトの場合、アイテムのURLにはカテゴリとサブカテゴリのIDを付けないようにしているので、アイテムページを表示するときに、カテゴリやサブカテゴリによる分岐をさせることができない。
カテゴリごとの前後の記事のリンクについては、自作のプラグイン「NP_ItemPrevNext」を使用しているのだけれど、これにdoif関数をもうければ、分岐させることができるかなと。
とはいえ、いまいち資料が少ない。doifに対応しているプラグインでは、「NP_MultipleCategories」の0.38jなんてのがあるので、そのdoif関数を抽出。
function doIf($name='', $value = '')
{
global $subcatid;
if ($name == 'subcategory' || ($value == ''))
return $this->isValidSubCategory($subcatid);
if ($name == 'subcatname') {
//Even as for "subcategory" with same "parent", the name is not unique either.
$scatname = $this->_getScatNameFromID($subcatid);
if ($value == $scatname)
return $this->isValidSubCategory($subcatid);
}
if (($name == 'subcatid') && ($value == $subcatid))
return $this->isValidSubCategory($subcatid);
return false;
}
これは、if文で指定した場合に、サブカテゴリ,サブカテゴリidを返すことができる関数だろう。同じようなコードを追加して、itemが所属するカテゴリ,サブカテゴリを返すようにすれば良いのかな。
マルチの場合、複数ある場合があるので、一番初めに登録されている数値を返すようにするか、どれかの引数が、登録されているカテゴリorサブカテゴリの数値に一致すれば正となるなどの条件を入れれば良いのかな。
そんなことを考えていたら、めんどくさくなったので寝ることにする。
コメント