データベーステンプレート

提供:MoodleDocs
移動先:案内検索

データベース活動モジュールのテンプレートを使用すると、データベースエントリを一覧表示、表示、編集する際に、情報の視覚的なレイアウトを制御することができます。これは、Open Office WriterやMicrosoft Wordなどのワープロソフトで文字を メールマージ するのに使われる手法に似ています。

タグの使用

データベース用に作成した各フィールドの内容や、いくつかの特殊なタグ(以下に列挙)を、タグの使用により出力テンプレートに挿入することができます。

フィールドは[[フィールドネーム]]という書式で、それ以外のタグは##タグ##という書式で記述します。

ページ左のボックス内のタグを使用するには、まずクリックしてエディタを無効にし、目的の編集のテキストエリアにカーソルを置いて、配置したいタグをクリックします。終了したら、クリックしてテンプレートを保存します。また、##コチラ##[[コチラ]]のような必要な記号の中に、それぞれ適切な名前を入力するだけでもかまいません。

  • ##edit## 現在のエントリを編集するためのクリック可能なアイコンリンクを作成します(編集する権限を持っている場合のみ表示されます)。
  • ##delete## 現在のエントリを削除するためのリンクを作成します(削除する権限を持っている場合のみ表示されます)。
  • ##approve## 現在のデータベースエントリを承認するためのリンクを作成します(承認する権限を持っている場合のみ表示されます)。
  • ##disapprove## 現在のデータベースエントリの承認を取り消すためのリンクを作成します(この操作を行う権限を持っている場合にのみ表示されます)。
  • ##more## より詳細な情報を含むシングルビューへのリンクを作成します。
  • ##moreurl## 上記のリンクのURLだけを作成するので、独自のリンクを作成するのに便利です。リンクアイコンをクリックして、URLフィールドに ##moreurl##を入力するか、ソースビューで
    <a href="##moreurl##">[[フィールドネーム]]</a>
    を入力することができます。
  • ##comments## コメント閲覧/編集ページへのリンクを作成します。リンクテキストは現在のコメント数です (コメントがオンの場合のみ表示されます)。
  • ##user## エントリを投稿したユーザのページへのリンクを作成します。リンクテキストはユーザの名前です。
  • ##timeadded##
  • ##timemodified##
  • ##userpicture## リストビューにユーザ画像を表示します。
  • ##approvalstatus## インラインCSSとして挿入され、未承認のエントリのハイライトを提供します。
  • ##tags## タグを表示します(サイト管理のタグの管理でデフォルトで有効になっています)。 - new in 3.4
##userpicture## タグの例

一覧表示のテンプレート

このテンプレートを使用すると、複数のエントリを一度に表示する際(検索結果など)に使用するフィールドとそのレイアウトを制御することができます。このビューは、単に概要を提供し、エントリをクリックしてそのエントリのシングルビューにアクセスすることで、より詳細な情報を利用できる可能性があります。

リストテンプレートテーブルの作成方法については、Moodleデータベース活動でリストビューをデザインするをご覧ください。

リストテンプレートは、CSVファイルとしてエクスポートする方法としても使用できます。

個別表示のテンプレート

これは、一度に1つのエントリを表示するために使用されるため、表示スペースが広く、例えば、画像の拡大版を使用したり、オプションとしてリストビューで表示されるよりも多くの情報を提供することができます。

Databasesingletemplate.png

詳細検索のテンプレート

詳細検索のテンプレートは、詳細検索で使用するインターフェースフォームを作成するためのものです。

追加のテンプレート

このテンプレートは、データベースのエントリを追加または編集するときに使用されるインターフェースフォームを作成します。

RSSテンプレート

データベースエントリのRSSフィードの内容を制御することができます。

CSSテンプレート

あなたの他のテンプレート内のHTMLが視覚的なスタイルを提供するためにCSSを必要とする場合、ここでそれを指定することができます。

Javascriptテンプレート

javascriptを使用すると、リスト、単一、追加の各テンプレートで要素の表示方法を操作することができます。基本的には、操作したい部分を何らかの名前の付いたhtml要素で囲む必要があります。この名前は、操作する要素を特定するために重要です。

例えば、データベースに人の名前を保存するフィールドがあり、リストビューに名前を表示する際に、名前がある基準に一致する回数をカウントし、その結果を表示したいとします。

データベースには、"name" と呼ぶフィールドが含まれます。リストテンプレートでは、情報を表示したい場所で [[name]] 構造体を使用することによって、そのフィールドの内容を表示することができるようになります。例えば、リストテンプレートの 繰り返し入力 では、次のようになります。

 <table>
   <tr>
     <td>Name: [[name]]</td>
   </tr>
 <table>  

ここで、操作したい部分が名前付き要素であることを確認するために、このエントリを修正する必要があります。

 <table>
   <tr>
     <td name="named">Name: [[name]]</td>
   </tr>
 <table>  

リストビューのフッタには、結果を表示するための別の名前付き要素を含めることができます。

  <div name="result"></div>

javascriptのテンプレートは、以下のようになります。

 var cnt = 0;
 var re = /foo|Foo/;
 
 function init(){
   var namedElements = document.getElementsByName("named");
   for (i=0; i < namedElements.length; i++) {
       if(re.test(namedElements[i].innerHTML)) cnt++;
     }
   var namedResult = document.getElementsByName("result");
   namedResult[0].innerHTML = cnt;
   }
 
 window.onload = init;

これで、リストビューで通常通り名前の表が表示されます。今度は一番下に、fooまたはFooにマッチした名前のカウントも表示されます。

window.onloadは、YUIコードへの依存を処理しないので、init() コードで必要なYUIモジュールがロードされず、コードが失敗する可能性があることに注意しましょう。

この場合、onloadの代わりに使用します:

YUI().use('node', 'other', 'dependencies', function(Y) {

  // Your code here.

  // This function is a closure so the Y object you define in the function definition is yours and nothing else on the page should be able to break it.

});

テンプレートのリセットボタン

最初にデータベースを作成するとき、テンプレートにはあらかじめ適切なHTMLが入力されています。後でフィールドを追加する場合は、テンプレートのリセット ボタンを押せば、同じように新しいフィールドのHTMLが追加されます。その間にテンプレートを編集していた場合、その変更は失われます。テンプレートコードを変更する前に、データベースフィールドを確定することをお勧めします。

関連項目

Moodleのフォーラムディスカッションの利用: