にへるつおるぐ | src | ブログ | コンタクト | 統計 | 御串 | 小束 | 裏ミク | つ痛 | 顔本 |

10年ぶりに部屋に入るとコウモリや猫の巣窟だった

Nucleus CMS

2009-01-28 17:57:44 JST-9 | akebia | Nucleus | コメント | トラックバック | 履歴

インストールすると、通常、カテゴリに対して動作する機能が、テンプレートのアイテムの本体で動作するようになるかもしれないプラグインです。

NP_ItemCatID.php

<?php
class NP_ItemCatID extends NucleusPlugin{
  function getName()       {return 'Item Cat ID';}
  function getAuthor()     {return 'akebia';}
  function getURL()        {return 'http://nyan.co.uk/akebia/item/291';}
  function getVersion()    {return '1.0';}
  function getDescription(){return '';}
  function supportsFeature($w){return ($w == 'SqlTablePrefix') ? 1 : 0;}
  function getEventList()
    {return array('PreSkinParse', 'PreItem', 'PostItem');}
  function event_PreSkinParse(){$this->org_catid = $GLOBALS['catid'];}
  function event_PreItem($data){
    $GLOBALS['catid'] = quickQuery('SELECT icat as result FROM ' .
      sql_table('item') . ' WHERE inumber=' . $data['item']->itemid);
  }
  function event_PostItem(){$GLOBALS['catid'] = $this->org_catid;}
}
?>

NP_znItemCacheと併用する時には、NP_znItemCacheのオプションの「常に動作させるプラグイン」に「NP_ItemCatID」を加えて下さい。

NP_ItemCatIDは、アイテム毎のテンプレートが処理される直前に、Nucleusのグローバル変数「catid」にアイテムに関連付けられたカテゴリのIDを格納します。アイテム毎のテンプレートの処理が終了すると、Nucleusのグローバル変数「catid」をスキンが処理される直前の状態に戻します。こうすると、Nucleusのグローバル変数「catid」が真の時に動作するタイプの機能をアイテム毎に動作させることができます。

あけび猫は、これを、NP_ExtraSkinJPの部品タイプが「blogとcategory」の部品をアイテムの本体に挿入するのに使っています。ちょっと、使ってみている所では、問題なく動作しているようですが、今後、どのような不具合に気が付くかは謎です。

NP_ItemCatIDをインストールすると、アイテムの本体において、Nucleusのグローバル変数「catid」は、クエリ文字列等に関わらず常に当該アイテムに関連付けられたカテゴリのIDになるので、アイテムの本体において、catidがクエリ文字列等で指定されたカテゴリIDになることを前提としたテンプレートで不具合が出るかもしれません。また、アイテムの処理後にcatidがスキンの処理前の状態に戻されるので、スキンの処理中にcatidが変更される事を前提としたシステムで不具合が出るかもしれません。

MyMiniCity 人気ブログランキングへ

  1. nucleus カテゴリID 変更 (2)

Comments

No comments yet

Add Comment

Trackback

このトラックバックURL(右クリックして、リンクのURLをコピー)を使ってこの記事にトラックバックを送ることができます。もしあなたのブログがトラックバック送信に対応していない場合にはこちらのフォームからトラックバックを送信することができます。トラックバックの手動送信に失敗したり、拒否された場合には、あけび猫が入力しますので、こちらまでご連絡下さい。重複したトラックバックは、自動的に1つにまとめられるようなので、気軽に色々試してみて下さい。


http://2hz.org/akebia/