NP_znMCListのHTML出力を自由にしたい

「1ブログに複数、例えばカテゴリがABCの3種あったとして、Bのカテゴリに属するサブカテゴリのみをリスト表示したい」というのが、今回の私の希望です。

そして、サブカテゴリをリスト表示する3大プラグインは次のみっつで良かったと思います。
- NP_ContentsList
- NP_BlogMenu
- NP_znMCList

けれど、このいずれも私の希望をかなえる機能は持ち合わせていません。全てのカテゴリを展開してしまいます。

となると、後は自分でどげんかせんといかん訳です。どぎゃんかせにゃならんのは判っとうばってん、わたしがそぎゃん能力ば持っとう訳、無かじゃなかねっ。

あ~う~。

上段2つは、リスト表示する際のHTMLを自身でカスタマイズできる処が魅力です。けれど、ソースを眺めている内に私のキャパシティを軽くオーバーしてしまいました。Functionが複数phpファイルにまたがってるぅ(>_<);;

ま、機能が多いのだから、ソースが多くなるのも当然ですね。
そこで、比較的コード量の少なめな「NP_znMCList」を利用させて戴く事にしたのでした。

またPHPとNucleusのお勉強タイムです。

続きを読む

2009年11月07日:H_プラグイン::ephemera

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

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

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

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

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

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

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

続きを読む

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

プラグインの作り方を調べる-001

「実践マスターPHP+MySQL - PHP4/PHP5対応」という本を読んで少しPHPを勉強した上で、Nucleusプラグインを書いてみます。
プラグインは、PHPで言うところの Class を用いて機能を提供するみたいです。

--------------------

引用元 : プラグイン API 「はじめてプラグインを書いてみる」

解読の為の参照 : Nucleusプラグインメソッド リファレンス

--------------------

<?php

// プラグイン変数として使われる名前は、
// class の後に続く NP_HelloWorld から NP_ を除いた文字。
// この例では HellowWorld が <%HellowWorld%> として使われる。

class NP_HelloWorld extends NucleusPlugin
{

// 以下、管理画面「プラグインの管理」で表記される内容

    // プラグインの名前
    function getName()
    {
        return 'Hello World';
    }

    // プラグインの作者
    function getAuthor()
    {
        return 'Wouter Demuynck';
    }

    // プラグインのサイトURL
    // mailto:foo@bar.com の形式も可
    function getURL()
    {
        return 'http://nucleuscms.org/';
    }

    // プラグインのバージョン
    function getVersion()
    {
        return '1.0';
    }

    // 説明文
    function getDescription()
    {
        return 'Just a sample plugin.';
    }

// 以下、おまじない。

    function supportsFeature ($what)
    {
        switch ($what)
        {
            case 'SqlTablePrefix':
                return 1;
            default:
                return 0;
        }
    }

// 以下、スキン上に書いた変数から呼び出される処理

    function doSkinVar($skinType)
    {
    // 「Hellow World!」と出力
        echo 'Hello World!';
    }
}
?>

このプラグインは、スキンに<%HelloWorld%>と入力した場所に「Hello World!」という文字を表示します。

        echo 'Hello World!';

        echo 'Nucleusのプラグインを書いてみる';

と変えると、スキンに<%HelloWorld%>と入力した場所に「Nucleusのプラグインを書いてみる」という文字を表示します。

以上から判ったのは、「 function doSkinVar () に書いたコードが、プラグインとしての機能を提供する」事でした。

--------------------

ちなみに、

    function doSkinVar($skinType , $param1)

とパラメータ「$param1」をひとつ増やして、

        echo "Nucleusの$param1プラグインを書いてみる";

と、ダブルクォーテーションに包んだ文の中に「$param1」を加えます。

すると、スキン上で<%HelloWorld(おもしろい)%>と入力する事で、「Nucleusのおもしろいプラグインを書いてみる」という文字を表示できます。

2008年09月25日:J_プラグインの作り方::ephemera

アイテムを期限付きで表示したい

アイテムを期限付きで表示したいと考えています。
アイテムの日付と今の日付を比較して、

と、こんな感じのプラグインが作れればいいのだけど。

 「スキンかテンプレートか?」となると、この変数はスキンで使う事になりそうです。けれど、スキン変数の作り方がまだ良く判ってません。テンプレート変数の作り方は先日まとめたNP_BlogInfoでなんとなく判ってきたけど。
 アイテムから日付を読み出して、これを現在の日付"DATE()"と比較したいのだけど、どうやってアイテムの日時を読み出せばよいのやら。

 記事の投稿日に関わるプラグインには「NP_NewItem」「NP_New」「NP_Countdown」あたりが関係ありそうかなと思って、これらのソースが流用できないか、あるいはコードを組み立てるヒントにならないか眺めてみました。が、Nucleus独自のClassや「=&」の意味が判らず、SQL文に恐れをなして先に進まず、玉砕しました・・。

続きを読む

2008年09月07日:F_~したい::ephemera

NP_BlogInfo - <%blogsetting%>をテンプレートでも使う

このサイトは、複数blogでひとつのサイトを構成しています。その為随所に、これに対応する為の手直しをしています。RSSもそのひとつ。「えふぇめらクロニクル」トップページRSSは、Nucleusのスキン内でNP_ShowBlogsを使って呼び出すblogを選択し表示しています。

但し、このままではタイトルが並ぶのみで日記なのかゲームレポートなのかの判別がつかないので、blog情報をタイトルに添付しようと考えました。スキン内ならば、この機能を提供する便利な変数<%blogsetting%>が存在します。けれどもテンプレートでは使えないので別途プラグインを利用する事にします。

使えそうなのは、NP_BlogInfoとNP_BlogSetting。

残念な事にBlogInfoは、blogid=1のブログの中にblogid=2や3のitemを表示していた場合、テンプレート内で<%BlogInfo()%>と記述すると、2や3ではなく全て1として扱われました。コード内で「global $blogid」によるblog指定をしている為、常に親blogのidである1が代入されている模様。NP_BlogSettingの様に、アイテムから毎回blogidを探す「getBlogIDFromItemID($item->itemid)」を使わなければならないみたい。

最近PHPの解説本を買って勉強したから、ソースコードの造りが何となく判ってきました。勉強がてら、NP_BlogInfoとNP_BlogSettingを改良してみる事にしました。その上でRSSのテンプレート内でこれを使用します。

続きを読む

2008年08月27日:H_プラグイン::ephemera