この記事の概要
プラグイン制作に関するTips?
プラグインが多機能になっていくほど、スキンやテンプレートに記述するパラメータの数が増えて、見た目わけわかんなくなっていきます。
それを解消するために「パラメータの名前と値を対で記述する」形式にするという話。
NP_Relatedなんかの例がそうですが、スキンに記述できるパラメータが多くなっていくと、どんどんわかりづらくなっていきます。
<%Related(local,,,,and)%>
<%Related(google,8,true)%>
一つめは、ローカル記事の関連検索にAND検索を行う、というスキン記述なのですが、パラメータの順序が決まっているため、カンマ送りの数をまちがえると失敗しますし、テンプレート記述の場合はカンマの数をひとつ減らさないといけません(経緯上そうなってしまった・・)。
二つめでは、"8"や"true"という指定が何を指してるか、一見わかりづらい。これに限らず、パラメータに数値を取るものが多いと、どこで何を指定してるかがぱっと見、わかりづらかったりします。
そこで、「パラメータの名前と値を対で記述する」方式にするのはどうかな、と。メリットは2つあります。
- パラメータの対応関係がわかりやすい
- 順序を気にする必要がない
たとえばこんな感じ。
<%Related(mode:local,searchcond:and)%>
<%Related(mode:google,amount:8,snippet:true)%>
パラメータの処理方法は、まず $params = func_get_args(); でごっそり配列で受け取って、それぞれを ':' でsplitして名前と値に分離して、値が複数の可能性があれば '/' とか '|' でさらにsplitという感じですね。
あとはswitch文で名前ごとに変数に値を格納、と。
じつは自家用に改造して使ってるプラグインには、こういう方式を前に試しているのがあるのですが、けっこう使い勝手はいいかも(NP_ShowBlogsとか。僕のはまだ最新版に追いついてないのがイタイですが)。
<%ShowBlogs(tpl:tmpname1,tpl-sticky:tmpname2,blog:current/3/5,amount:5,sticky:32/55)%>
これのデメリットは記述法ががらりと変わってしまうこと。
・・・なんですが、NP_Relatedのほうは次回のバージョンアップでこれを取り入れてみたいなあとひそかに思っています。
必須(またはメジャー)なパラメータはそのまま受け取って、補助的なものは上記の書き方、みたいな折衷案でもいいかもしれない。
<%Related(local,5,name:value,name:value...)%>
まみお:
:で区切らずにprefixとして書かせるようにしてますが(limit5みたいに)。
ま、区切り文字を使わないとしたらテンプレート名の指定が困っちゃいますけどね。