OneThird CMS

Lightweight CMS for Small website, Web application framework.

Download Document

english

ToDoアプリを作成する(3):フォーム登録に連動してページタイトルを変更する

前回までのチュートリアルで、ToDoフォームの登録まで行いました

登録フォームは、フォルダプラグインとembedプラグインの組み合わせで行い

phpプログラムは使用していません

ここでは、phpプログラムを追加し、ToDoフォームの変更タイミングに同時にページタイトルが変更されるようにします


まず、embedプラグインが修正するタイミングを捕まえる必要があります

これは事前に、embedプラグイン側でフックが準備されています

embedプラグインの変更直前に発生するフックは以下のコードで実装できます


$plugin_ar[ EMBED_ID ]['onbefore_modified'] = 'my_hook';

function my_hook (&$page_ar) {

   フック処理

}

グローバル変数の$plugin_arを直接変更します

フック関数の引数 $page_ar には ページ配列はそのまま渡されます

embedの場合、フックした処理を正常ルートに戻す場合はそのまま終了

そうでない場合は、falseを明示的に戻してください

具体的には次の通り

global $plugin_ar;
$plugin_ar[ EMBED_ID ]['onbefore_modified'] = 'my_hook';

function my_hook (&$page_ar) {
	if (isset($page_ar['meta']['plugin_embed']['title']) && $page_ar['title'] != $page_ar['meta']['plugin_embed']['title']) {
		$page_ar['title'] = $page_ar['meta']['plugin_embed']['title'];
		if (!mod_data_items($page_ar)) {
			return false;
		}
	}
}
   

ページ配列に指定してあるタイトルと、embedプラグインの収納先の name:title 配列の値が一致しなかったら書き換える処理です

なお、page_arには、全て更新された状態で呼び出されますので、mod_data_items で修正し終了しても構いません


次に、phpプログラムを何処に書くかですが、これにはテンプレートモジュールを使用します

先ほどのコードに、以下のヘッダをつけ、my_todo.phpという名前で保存します

<?php
/* name : myTodo
*/

global $plugin_ar;
$plugin_ar[ EMBED_ID ]['onbefore_modified'] = 'my_hook';

function my_hook (&$page_ar) {
	if (isset($page_ar['meta']['plugin_embed']['title']) && $page_ar['title'] != $page_ar['meta']['plugin_embed']['title']) {
		$page_ar['title'] = $page_ar['meta']['plugin_embed']['title'];
		if (!mod_data_items($page_ar)) {
			return false;
		}
	}
}      


できたファイルを、files/1/plugin フォルダまたは、 files/1/data フォルダのいずれかに設置します


後は、todoURLを開き

ページプロパティでlwr template で編集アイコンをクリック、myTodoを選択すればOkです


これで、次から追加されたTodoでは自動的にタイトルとタイトルフィールドが連動するようになります


次は、Todoの一覧表を作ります