wa - NucleusやFlashなどなど

RSS

Home > スペシャルテンプレートパーツ

01.21 '08

スペシャルテンプレートパーツ

znSpecialTemplateParts プラグインに、独自テンプレートパーツを提供するプラグインです。
(基本的、自分用プラグインです。bunta

最新バージョン(ver0.0.5alpha)の解説です。

解説

プラグインに、独自テンプレートパーツを提供するプラグインです。

一般に、プラグイン独自のデータは、プラグインオプションで定義する場合が多いのですが、グローバルオプションでは1セット、ブログオプションでは1ブログに対し1セットしか定義できず、複数の用途で共通の値を使いまわさなければならないということがよくあります。
スペシャルテンプレートパーツを使用すると、各プラグインでは簡単に独自データの定義、呼び出しが可能になります。独自データの定義には、NP_znSpecialTemplatePartsが必要になりますが、呼び出しはNucleus標準の機能を使うため、このプラグインを介する必要はありません。データのインポート・エクスポートも可能です。(別環境へのデータ移行も楽になります。)

以下は、プラグイン開発者向けの説明です。NP_znSpecialTemplateParts必須の別プラグイン(NP_znCustomAdminなど)を使用するだけの場合、以下の内容を確認する必要はありません。


スペシャルテンプレートパーツの作成
独自テンプレートパーツを使用するプラグイン側で、以下のようにパーツを定義します。
  /**
   * テンプレートパーツ定義
   */

  function getTemplateParts()
  {
    return array(
      'SUBMIT' => 'メールタイトル'
      'BODY'   => 'メール本文'
    );
  }
必要な準備は以上です。
これで独自管理ページを作る必要もなくNucleus標準機能で独自パーツの管理ができるようになります。
管理画面のテンプレート作成画面に、「テンプレートの種類」として対象プラグインの名前が列挙されるようになります。
doc01
テンプレートを作成し、編集画面に入ると、プラグインで定義した独自テンプレートパーツが増えています。
doc2

スペシャルテンプレートパーツを使用する
各プラグインで、スペシャルテンプレートパーツを使用するために、NP_znSpecialTemplatePartsを介する必要はありません。Nucleus標準機能で、スペシャルテンプレートパーツを呼び出すことができます。(Nucleusの内部的には、作成された時点で「スペシャル」ではなく標準のパーツと同じ扱いになっています。)
  global $manager;
  $template = & $manager->getTemplate($templateName);
これだけで、複数のスペシャルテンプレートパーツがクエリ1発で取得できていますので、あとはもう煮るなり焼くなりどうにでもしちゃってください。

例えば、こんな感じ。(<%title%>と、<%itemid%>を使えるテンプレートパーツ)
  $submitvals   = array(
    'title'  => $item['title'], 
    'itemid' => $itemid
  );
  $mailto_title = TEMPLATE::fill($template['SUBMIT'], $submitvals);
上の例は、NP_NotifyCommentToAuthorっていう、コメントを著者に通知するプラグインの一部なんですが、スペシャルテンプレートパーツで通知メールの書式を定義するようにしています。

さて、
プラグインのデータをプラグインオプションで定義する場合は、デフォルト値を設定することができますよね。
スペシャルテンプレートパーツを、汎用的に使用するなら、デフォルト値の設定も欲しいところです。

スペシャルテンプレートパーツのデフォルト値を定義
独自テンプレートパーツを使用するプラグイン側で、以下のようにデフォルト値を定義します。(デフォルト値が必要ない場合、もちろん定義も必要ありません。
  /**
   * テンプレートパーツのデフォルト値定義
   */

  function getTemplatePartsDefaultValue()
  {
    return array(
      'SUBMIT' => 'デフォルトの値をここに書きます。。'
      'BODY'   => 'デフォルトの値をここにかきます。。'
    );
  }
これで、テンプレートを作成したときに、デフォルト値が入った状態になっています。

最後に、
注意点
作成したテンプレートデータを、NP_znSpecialTemplatePartsがインストールされていない状態で再編集してしまうと、独自パーツは消えてなくなってしまいます。Nucleus標準機能でエクスポートできるので、こまめにバックアップすることをオススメします。(自動バックアッププラグインなんてのもあります。)

ダウンロード

変更点

  • チケットタイムアウトして、パーツの編集が無効になった時、エラーが出るのを修正

バージョン経歴


VerUpdateDownload
最新
0.0.5alpha
  • チケットタイムアウトして、パーツの編集が無効になった時、エラーが出るのを修正
download0.0.5alpha.zip[126clicks]
download0.0.5alpha-utf8.zip (開発者向けコメント付ソースファイル)[99clicks]
0.0.4alpha
  • Nucleus標準のテンプレートパーツ名と衝突するパーツ名が定義されている場合、警告を出す機能を追加。
  • テンプレートパーツのデフォルト値を設定できるようになりました。
download0.0.4alpha.zip[69clicks]
download0.0.4alpha-utf8.zip (開発者向けコメント付ソースファイル)[58clicks]
:!!::arwtop:verをクリックすると、各verの解説に切り替わります。

プラグインのバージョンアップ情報をRSSで配信しています。バグ情報などもお届けいたしますので、拙作プラグインをお使いの際には、是非RSSリーダーにご登録ください。:!!:佐藤(な)作成・改造のプラグインバージョンアップ情報RSS

コメント

02.25 '08 10:43:44 みつば
はじめまして。みつばと申します。
NP_znCustomAdmin(ver0.6.4)、heliumをインストール後、管理画面のスキンをheliumに切り替えました。
その後、NP_znSpecialTemplateParts(ver0.0.5alpha)をインストールして、テンプレート編集画面からheliumを見たところ、「NP_znCustomAdmin」の項目には「管理画面のヘッダ」のタイトル部分しか現れません。入力欄は全く出ない状態です。
Nucleusはver3.3です。文字コードをEUCに変換して使用しています。
どうしたら良いでしょう? ヒントだけでも結構ですので、ご教授お願いします。
02.25 '08 10:52:36 佐藤(な)
みつばさん、こんにちは。
http://okamerin.com/nc/blog...
↑ひょっとしたら、こちらの現象かも。外してたらすみません。
02.27 '08 15:47:16 みつば
佐藤(な)さん、お忙しいところありがとうござます。
該当HPで紹介されているようにskinie.phpを修正し、heliumを再読み込みさせてみたのですが、
現象は変わりませんでした。

新しいテンプレートを作ったときに、「テンプレートの種類」で「NP_znCustomAdmin」を選んだときも、
やはり「NP_znCustomAdmin」の項目には「管理画面のヘッダ」のタイトル部分しか現れませんでした。
入力欄も全く出ない状態でした。
テンプレートの読み込みではなく、プラグイン関係でのトラブルなのでしょうか…?
02.28 '08 17:49:26 だいぼー
NP_znSpecialTemplateParts.phpの69行目、
“return”は“//return”ですよね?
そのままインストールすると言語ファイルが反映されませんでした。
03.01 '08 13:28:09 みつば
だいぼーさん、ありがとうございます。
69行目は確かに”return”となっていましたので、コメントアウトしてみました。
ですが、現象は変わりません。
依然として、「NP_znCustomAdmin」の項目には「管理画面のヘッダ」のタイトル部分しか現れず、
入力欄も全く表示されない状態です。

もう少し、こちらでも調べてみます。
何か分かりましたら、ご教示下さい。よろしくお願いします。
03.15 '08 20:10:22 みつば
質問の件ですが、解決いたしましたので一応ご報告します。

javascript内で使っている関数「my_unescape」が定義されていなかったために、
「テンプレートの編集」画面の表示がうまくできなくなっていたようです。
下記URLにソースが公開されていましたので、早速使ってみましたら、
正常に表示されました。
http://homepage3.nifty.com/...

勉強不足でお恥ずかしいです:cry:
お騒がせして申し訳ありませんでした。
09.06 '08 14:57:15 さいきゆみ
みつば様 私もまったく同じ症状なのですが、このjavascript をどういう風に入れたらいいんでしょうか?
java ですが、トップに  http://s-yawa.com/ にフラッシュを使っているので、そこに使ったjava がある程度で他にはないのですが。
どうして java とテンプレート編集画面が関係あるのでしょう?

もう少し具体的に解決策をご教授いただけたら幸いです。

私にはわからないので、skinbackup.xml を直接編集して若干の変更を加えましたが。

コメント追加



プレビュー

コメント追加通知RSS:
↑このフィードをRSSリーダーに登録しておくと、この記事へのコメント追加をチェックすることができます。
コメント追加後の、返事待ちなどにお使い下さい。
なお、コメントチェックの必要がなくなった際には、このRSSを削除して下さいね。
不要なトラフィックを避けるために、ご協力お願いいたします。

トラックバック

トラックバック
このエントリにトラックバックはありません
このトラックバックURLを使ってこの記事にトラックバックを送ることができます。 もしあなたのブログがトラックバック送信に対応していない場合にはこちらのフォームからトラックバックを送信することができます。.
トラックバックURL:
PluginGenerator znBackup znItemFieldEX znCustomAdmin znBackup znSmiley znShowDraft yuiCalendar znSpeedCubing znKeywordLink znCommentRSS znCCitation znItemParts znMCList znHatenaExist znQuestionnaire znFlash