表現
Omeka S API(ほぼ全てのデータが対象で、Omeka S に保存されているデータも含まれます)からのデータは、"representation" オブジェクトを介して内部的にアクセスされます。これらは、API へのコールから受け取るものであり、モジュールやテーマでデータにアクセスして使用するためのものです。
一般的な表現メソッド
ある機能はあらゆる表現に共通することがよくあります。これらは通常、表現されているリソースへの URL やリンクの取得といった基本的な操作に関連しています。
URL
メソッド url
、adminUrl
、および siteUrl
はそれぞれ、Omeka S ウェブインターフェイスで表現されるリソースへの URL を返します。 adminUrl
は常に管理インターフェイスへのリンクを返し、siteUrl
は公開インターフェイスへのリンク(リソースに公開 URL がない場合は null
を返します)を返し、url
は現在のコンテキスト(管理またはサイトなど)に適したリンクを返します。
通常、url
を使用します。adminUrl
と siteUrl
は一般に、管理サイドと公開サイドの間、またはサイト間を移動するための URL を作成する際にのみ使用されます。
url
と adminUrl
は第 1 引数としてリンクする "action" を取ります。省略された場合や明示的に null
に設定された場合は、通常はリソースを単純に表示する "default" アクションへの URL になります。siteUrl
は常にデフォルトアクションへのリンクを返し、代わりにリンク先のサイトのスラッグを第 1 引数としてオプションで取ります(省略された場合や null
に設定された場合は現在のサイトが使用されます)。
これら 3 つのメソッドは、返される URL が絶対 URL であるかサーバー相対 URL であるかという第 2 引数を共有します。サーバー相対 URL がデフォルトですが、代わりに絶対 URL を返すためにはこの第 2 引数に true
を渡す必要があります。
$item->url(); // アイテムのデフォルト "show" ページへのURL
$item->adminUrl('edit'); // 公開サイトで呼び出されても、管理インターフェイス上のアイテムの "edit" ページへのURL
$item->siteUrl('example', true); // "example" サイト上のアイテムの "show" ページへの絶対URL
REST API のリソースへの URL を取得するための apiUrl
メソッドもあります。これは引数を取りません。
リンク
上記で示した URL を取得するメソッドを基にして、表現では HTML リンクを作成するためのいくつかの便利なメソッドもあります。
link
は指定されたテキストコンテンツを含む <a>
タグを返します。テキストコンテンツは第 1 引数で必須です。オプションとして、リンクするアクション(url
に渡す)を第 2 引数として指定し、<a>
タグに設定する属性を第 3 引数の配列として指定できます。テキストコンテンツは自動的に HTML エスケープされます(つまり、テキスト内の HTML タグなどはユーザーに対して文字通り表示され、実際のタグとして解釈されません)。
linkRaw
は link
とまったく同様に動作し、同じ引数を取りますが、コンテンツは自動的にエスケープされません。これにより、リンクに画像や他の HTML を含めることができますが、データベースに保存されたデータを含む、ユーザーからの任意のデータをフィルタリングまたはエスケープする責任があります。自体が「安全」な出力を生成する他のメソッドをこの関数の入力に使用することが通常は良いアイデアです。
echo $item->link('View Item'); // $item へのリンクを出力
echo $item->link('Edit Item', 'edit'); // $item の編集フォームへのリンクを出力
echo $item->link('View Item', null, ['title' => '興味深くない例で、申し訳ありません']); // 指定された title 属性を持つ $item へのリンクを出力
echo $item->linkRaw($this->thumbnail($item, 'medium')); // $item のサムネイルを出力し、そのサムネイルはアイテムのページにリンクします
追加のメソッド、linkPretty
はリソースタイプの表現(アイテム、アイテムセット、およびメディア)にのみ利用可能です。そのメソッドに関する情報は下記をご覧ください。
プライマリメディア
Omeka S 内のさまざまなタイプのリソースは「プライマリ」メディアを持てます。Omeka S がリソースのサムネイルを表示する際に使用されるメディアです。アイテムは最初のメディアを返し、メディアは自分自身を返し、アイテムセットは最初のアイテムのプライマリメディアを返します。
primaryMedia
メソッドは引数を取らず、プライマリメディアそのものの表現を返します。リソースにプライマリメディアがない場合は null
を返します。
その他
他にも多くの共通メソッドがあります。リソースの ID を取得する id
、Omeka S API の JSON-LD を出力する jsonSerialize
、HTML ページにその JSON-LD を埋め込むための script
タグを取得する embeddedJsonLD
などです。これらは一般的に内部的な興味と使用に関連していますが、行っていることによっては関連するかもしれません。
リソース表現
最も一般的に使用される表現は "Resource" タイプです:アイテム、アイテムセット、そしてメディアです。これらはプロパティの値をすべて保持するオブジェクトであり、それに応じて、そのデータへのアクセスと印刷のための多くの機能を共有しています。
リンク(再度)
リソース表現は、上に記述された任意のリソースが持っている基本的なリンクメソッドを共有しますが、それらにはもう 1 つアクセスできます。
linkPretty
メソッドは、リソースのタイトルと共にサムネイルを含むリソースへのリンクを返します。これは Omeka S 全体で、そして多くのテーマで非常に一般的なパターンなので、私たちはただの便利のためにメソッドを用意しています。
linkPretty
のすべての引数はオプションです:
- 最初の引数は、使用するサムネイルのタイプです。デフォルトは
square
です。 - 2 番目の引数は、リソースにタイトルがない場合に使用する「デフォルト」のテキストです。省略された場合、標準の
"[無題]"
テキストが使用されます。 - 3 番目の引数はリンクするアクションです。これは通常のリンクと URL メソッドでの動作とまったく同じです:省略された場合はデフォルトアクションが使用されます。通常はショーページです。
- 最終的な引数は設定する属性の配列です。
resource-link
は、ここで一つを設定した場合でも、常にclass
属を属性に追加されます。
メタデータ値の表示
タイトルと説明
タイトルと説明はインターフェースとテーマで一般的に使用されるため、それらを印刷し、欠けている場合にデフォルトを提供するための特別なメソッドがあります。
displayTitle
はリソースの最初の dcterms:title
値を返します。そのようなタイトルがない場合は、代わりにデフォルト値が表示されます。「デフォルトのデフォルト」は現在のローケールに翻訳されたテキスト "[無題]"
です。(メディアは代わりに「ソース」名にフォールバックされます。)このメソッドに異なるデフォルトまたはフォールバック値を提供したい場合は、その唯一の引数として提供できます。
displayDescription
は displayTitle
と同様の動作をしますが、dcterms:description
を対象とします。わずかな違い:このメソッドの「デフォルトのデフォルト」は単に null
です。したがって、独自のフォールバック値を渡さない場合は、displayDescription
を印刷すると何も表示されません。
任意のプロパティ
タイトルと説明以外の特定のメタデータ値を取得するためには、value
メソッドを使用します。
value
は 1 つの必須引数、取得する値のプロパティ用語、および 1 つのオプションの引数、オプションの配列を取ります。
用語はコロンで区切られた文字列で、取得したいプロパティの語彙の名前空間のプレフィックスとローカル部分から構成されます。例えば dcterms:subject
や foaf:name
です。
オプションの配列は、異なるオプションのための複数の可能なキーを持つ連想配列です:
'type'
: 値の種類を制限するためにここに'literal'
、'uri'
、または'resource'
を渡します。デフォルトでは値の種類に制限はありません。'all'
: 結果のすべての値を配列として返すためにここにtrue
を渡します。デフォルトでは最初の値のみが直接返されます。'default'
: ここに渡される値は、結果がない場合に返されます。'lang'
: ここに言語コードを渡して、その言語に対応する値のみを限定します。デフォルトでは値の言語に制限はありません。
このメソッドによって返される値は、実際には ValueRepresentation オブジェクトです(または'all'
オプションが使用された場合は、それらのオブジェクトの配列)。それらをページに表示するための最も単純なオプションは、asHtml()
メソッドを使用することです。これにより、テキストを正しくエスケープし、リンクやモジュールによって追加されたデータタイプなどの複雑な値を表示する処理が行われます。
echo $item->value('dcterms:subject'); // $item の最初のダブリンコア主題を印刷します
// スペイン語でマークされたすべての主題値を印刷します
$values = $item->value('dcterms:subject', ['all' => true, 'lang' => 'es']);
foreach ($values as $value) { echo $value->asHtml(); }
"resource" タイプの値(他の Omeka S リソースへのリンク)の場合、asHtml()
はリソースへのリンクを生成します。デフォルトのリンクを作成する以上のことをしたい場合、valueResource()
メソッドは値がリンクするリソースを返します。それから、他のアイテム、セット、またはメディア表現のようにその結果を使用できます。valueResource()
は、他の種類の値の場合やリンクされたリソースが見つからない場合は null
を返します。
// ダブリンコアリレーションプロパティを介してリンクされたリソースの作成者を印刷します
$relatedResource = $item->value('dcterms:relation')->valueResource();
if ($relatedResource) {
echo $relatedResource->value('dcterms:creator');
}
すべてのプロパティ
リソースの「ショー」ページ上では、プロパティに関係なくすべての値を表示したいことがよくあります。displayValues
メソッドはこの機能を提供します。
displayValues
の唯一の引数としてオプションのオプションの配列を取ることができます。現在 1 つのオプションがあります:
'viewName'
: デフォルト以外の別の部分を使用するための名前
displayValues
によって返された出力はテーマ化されています:部分は common/resource-values.phtml
です。
その他のリソースデータ
値を超