Nucleus

Jeans & Development 電子ブロック工房 三日坊主 フロントページ

NP_ProtectByMD5 アップデート [Nucleus]

2007年6月6日

新しい機能を盛り込んだベータ版をフォーラムにアップ

新機能は以下のとおり。

1)メンバーからの投稿に対して、スパムチェックを行わないような設定が可能に。
2)コメントスパム対策の場合、スキンに記述しなくても対応できるようになった(プラグインオプションの設定が必要)。
3)スパムのログが取れるようになった。
4)携帯電話からのアクセスや一部のIPアドレスからのアクセスに対して、スパムチェックを行わないような設定が可能になった。

Nucleus::subSilver への対応も多少意識した。メンバーに対してスパムチェックをしないような設定に出来るようにしたのが、それ。

オブジェクト指向ブログ [Nucleus]

2007年6月5日

ネットサーフィンしていて、ふと目に留まった言葉:『オブジェクト指向ブログ』。面白いかも。

NP_msgbox [Nucleus]

2007年6月4日

NP_if [Nucleus]

2007年6月4日

テンプレート(アイテム・コメント)で、if, else, endif, ifnot, elseif, elseifnot を使えるようにするプラグインを書いてみた。

コアの改造は、不必要。ただし、処理の重いテンプレート変数での表示を条件分岐するには向いていない。というのは、条件が false の場合でも<%if%>と<%endif%>の間のパースを行ってしまうため(表示はされない)。

このプラグインの最新情報は、公式Wikiに。

NP_or, NP_and [Nucleus]

2007年5月29日

<%if%>構文で、or や and が使えるようになるプラグインを作成。詳しくは、wiki を参照

global $blog を乗っ取る [Nucleus]

2007年5月23日

また別のプラグインで同じようなことをするかもしれないから、忘れないようにメモ。

ここの例では、BLOG::getSqlSearch() 関数に、
array_merge($searchclass->blogs,array(1,2,3));
と、一行追加するように、BLOG オブジェクトを入れ替える。

NP_nestedinclude [Nucleus]

2007年5月15日

前の記事の続き。

NP_nestedinclude は、スキン変数の入れ子構造に対応したスキンパースを行う。<%parsedinclude%>と置き換えて使用。

スキンとテンプレートの両方で使用できる。テンプレートは、アイテム本体と、コメント本体でのみ使用可能。

スキン変数の入れ子構造 [Nucleus]

2007年5月15日

Nucleus のスキン変数・テンプレート変数は、入れ子で使えない。また、タグの始まりは『<%』で終わりは『%>』というルールになっているが、どちらの表記をどちらに用いても、エラーにならない。つまり、

<%blog(default/index,10)%>
%>blog(default/index,10)%>
<%blog(default/index,10)<%
%>blog(default/index,10)<%

はどれも、エラーなく同じように機能する。

なので、入れ子構造のスキンを例えば次のように表記すると

<%blog(default/index,<%blogsetting(id)%>)%>

これは思ったように機能しない。このコードは、次のコードと等価であるからだ。

<%blog(default/index,%>blogsetting(id)<%)%>

『blogsetting(id)』はタグの外なのでそのまま表示され、『<%)%>』というタグは存在しなため、『<%)()%>』が表示される。

NP_UnsetManagerCache [Nucleus]

2007年5月11日

前のNP_UnsetItemObjectがまったく意味のないコードだったので、別のプラグインを書いてみた。

<?php 
class NP_UnsetManagerCache extends NucleusPlugin { 
    function getName() { return preg_replace('/\.php$/','',basename(__FILE__)); }
    function getMinNucleusVersion() { return 220; }
    function getAuthor()  { return 'Katsumi'; }
    function getVersion() { return '0.1'; }
    function getURL() {return 'http://www.rad51.net/nucleus/index.php?itemid=313';}
    function getDescription() { return $this->getName().' plugin'; } 
    function supportsFeature($what) { return (int)($what=='SqlTablePrefix'); }
    function doSkinVar($skinType,$type) {
        global $manager;
        switch ($type){
        case 'cachedInfo': exit;
        default: if (@is_array($manager->$type)) $manager->$type=array();
        }
    }
}
?>

$manager->getItem()を多用しているプラグインのテンプレート変数・スキン変数の直後に

<%UnsetManagerCache(items)%>

と書けばよい。

NP_UnsetItemObject [Nucleus]

2007年5月7日

方々で、Nucleusはメモリ食いだと議論されている様子。$manager->getItem() がやり玉にあがっている。もし、MANAGERオブジェクトにITEMオブジェクトが蓄積されていくのがその原因なのであれば、次のようなプラグインでそれが解消できるかもしれない。このプラグインは無効のため、別のプラグインを書いてみた。

削除しました。

PostItemイベントを捕まえて、一つ前のitemオブジェクトを廃棄する仕様。テンプレート呼び出しで多数のアイテムが呼び出される場合には、効果的かもしれない。私が管理しているサイトで、700個以上のitemオブジェクトが作成されるものがあるから、それにインストールして様子を見てみる。

(追記)ver 0.1 は、意味のないコードだったので、若干修正。ver 0.1.1とした。

(追記)このコードの効果を確認するためのテストを行った。

(追記)このコードは、意味がなかった…。もっとよく考えてみることにしよう。

<<前の記事   後の記事>>