Designer Content Pro フロントエンドAPI 邦訳
Posted by admin at 9:08 日時 2014/06/16
concrete5で繰り返し要素の入力ができるブロックを、管理画面からの簡単操作で生成できる便利なアドオン、Designer Content ProのフロントエンドAPIの抄訳です。フロントエンドAPIとは、このアドオンで生成できるブロックタイプのview.phpで使用することができる記法のことです。デザイナー・コンテント・プロ自体の使い方については、Designer Content Proアドオンの紹介を参考にしてください。
原文はこちら。
http://theblockery.com/designer-content-pro/
ファイルフィールド
ファイルへのダウンロードリンクを出力
ブラウザで直接見れるファイルであっても、ダウンロードさせます。リンクテキストは、ブロックの編集画面で入力した内容か、空白のままの場合はファイルのタイトル属性の値が使われます。
$item->my_file->display();
ファイルへの表示リンクを出力
ブラウザで直接見れるファイルの場合は、ブラウザで表示されます。
$item->my_file->display(false);
ファイルのタイトルを取得
$title = $item->my_file->getTitle();
エスケープ前のファイルのタイトルを取得
$raw_title $item->my_file->getTitle(false);
ファイルのダウンロードURLを取得
$download_url = echo $item->my_file->getHref();
ファイルの表示URLを取得
$view_url = $item->my_file->getHref(false);
ファイルオブジェクトを取得
->getDescription() や ->getAttribute() をコールできます。
$file = $item->my_file->getFileObj(); if ($file) { //do something }
注意:ファイルの権限はチェックされます。ファイルの表示権限がない場合はファイルが選択されていないのと同じ結果になります(display()は空の文字列、getFileObj()はnullが返る、など)。
画像フィールド
imgタグを画像のリサイズなしで表示
alt属性は、ブロックの編集画面で入力した内容か、空の場合はファイルの「説明」属性の値が使われます。
$item->photo->display(); //results in <img src="path/to/image.jpg" width="xxx" height="yyy" alt="alt text" />
引数でリサイズすることもできます。
$item->photo->display(200, 100); //最大幅200px、高さ100pxで比率を維持してリサイズ $item->photo->display(200); //最大幅200pxで比率を維持してリサイズ $item->photo->display(0, 100); //最大高さ100pxで比率を維持してリサイズ $item->photo->display(150, 150, true); //150pxの正方形に切り抜き
画像のaltテキストを取得
$alt = $item->photo->getAltText();
エスケープ前の画像のaltテキストを取得
$raw_alt = $item->photo->getAltText(false);
imageヘルパーのgetThumbnail()と同様の画像オブジェクトを取得
オリジナルサイズ
$img = $item->photo->getImageObj(); if ($img) { echo $img->src; //path to original (unresized) image file echo $img->width; //original image width echo $img->height; //original image height }
リサイズしたサムネイル
$img = $item->photo->getImageObj(200, 100); if ($img) { echo $img->src; //path to thumbnail echo $img->width; //width of resized image echo $img->height; //height of resized image }
切り抜いたサムネイル
$img = $item->photo->getImageObj(150, 150, true); if ($img) { echo $img->src; //path to cropped thumbnail echo $img->width; //width of cropped image echo $img->height; //height of cropped image }
画像が未指定の場合はnullが返ります。
Fileオブジェクトを取得
->getDescription(), ->getAttribute()などをコールできます。
$file = $item->photo->getFileObj(); if ($file) { //do something }
画像が未指定の場合はnullが返ります。
ファイルフィールドと同様にファイルの権限をチェックします。
WYSIWYGフィールド
表示
$item->content->display();
取得
$content = $item->content->getContent();
テキストボックスフィールド
表示
$item->title->display();
取得
$text = $item->title->getText();
エスケープ前のテキストを取得
$raw_text = $item->title->getText(false);
いずれも未入力の場合は空の文字列になります。
テキストエリアフィールド
表示
$item->description->display();
取得
$text = $item->description->getText();
エスケープ、および改行コードをbrに置換前のテキストを取得
$raw_text = $item->description->getText(false);
いずれも未入力の場合は空の文字列になります。
リンクフィールド
選択されたページ、またはURLへリンクした a タグを出力
$item->some_link->display(); //外部URLの場合は`target="_blank"`になります。 $item->some_link->display(true); //常に`target="_blank"`が付きます。 $item->some_link->display(false); //`target="_blank"`を付けません。
リンクテキストは、ブロック編集画面で入力した内容か、空の場合はページ名、または外部URLのURLが使われます。
リンクのhrefを取得
$href = $item->some_link->getHref();
未入力の場合は空の文字列を返します。
リンクテキストを取得
$text = $item->some_link->getText();
エスケープ前のリンクテキストを取得
$raw_text = $item->some_link->getText(false);
サイトマップから選択かURL入力かを判別
$is_page_link = $item->some_link->isPageLink(); if ($is_page_link) { //ページ選択でページを選択している場合 } else { //外部URLの場合、または未入力 }
Pageオブジェクトを取得
->getCollectionName(), ->getCollectionDatePublic(), ->getAttribute()などをコールできます。
$page = $item->some_link->getPageObj(); if ($page) { $some_attribute = $page->getAttribute('some_custom_attribute_handle'); //do something... }
外部URL、または未入力の場合はnullが返ります。
ページフィールド
選択されたページへの a タグを出力
$item->the_page->display();
未入力の場合は空の文字列を出力します。
Pageオブジェクトを取得
$page = $item->the_page->getPageObj(); if ($page) { $title = $page->getCollectionName(); $url = Loader::helper('navigation')->getLinkToCollection($page); $img_attr = $page->getAttribute('some_custom_attribute_handle'); $thumb = $img_attr ? Loader::helper('image')->getThumbnail($img_attr, 300, 200) : false; echo '<h2><a href="' . $url . '">' . $title . '</a></h2>'; if ($thumb) { echo '<img src="' . $thumb->src . '" width="' . $thumb->width . '" height="' . $thumb->height . '" alt="" />'; } }
未選択の場合はnullが返ります。
日付フィールド
concrete5のデフォルトの日付フォーマットで表示
$item->start_day->display();
日付フォーマットを指定して表示
$item->start_day->display('F jS, Y');
concrete5のデフォルトの日付フォーマットで取得
$start_date = $item->start_day->getDate();
日付フォーマットを指定して取得
$start_date = $item->start_day->getDate('F jS, Y');
未入力の場合いずれの場合も空の文字列になります。
チェックボックスフィールド
選択されている場合は’Yes!’そうでない場合は’NO.’を出力
$item->is_special->display('Yes!', 'No.');
選択されているかどうかで分岐
$is_checked = $item->is_special->isChecked(); if ($is_checked) { //do something... }
選択リストフィールド
選択リストは、ブロックの編集画面で以下のようにハンドルとラベルを指定します。この場合、1, 2, 3がハンドルで、文字がラベルになります。ラベルが実際に入力画面に表示されます。
1: 最初の選択肢 2: 2つめの選択肢 3: 3つめの選択肢
ハンドルは半角英数字(大文字不可)で指定してください。これらは正しいですが
first_choice: 最初の選択肢 2nd_choice: 2つめの選択肢 Third_Choice: 3つめの選択肢
こちらは不可です。
first choice: 最初の選択肢 second.choice: 2つめの選択肢 third_choice!: 3つめの選択肢
ハンドルを重複することはできません。
ヘッダーオプションを指定することも可能です。必須入力ではないプルダウンリストを作成するのに使えます。
: --選択してください-- first: 最初の選択肢 second: 2つめの選択肢 third: 3つめの選択肢
選択された選択肢のラベルを表示
複数選択の場合はカンマ区切りになります。
$item->your_choice->display();
特定のハンドルのオプションが選択されているかどうかで分岐
$first_choice_is_selected = $item->your_choice->isChecked('first_choice'); if ($first_choice_is_selected) { //do something... }
選択されたオプションのハンドルを取得
$selection = $item->your_choice->getSelectedHandle(); if ($selection == 'first_choice') { //do something... } else if ($selection == 'second_choice') { //do something else... } else { //etc. }
この機能はドロップダウンリスト用です。チェックボックスの場合に複数のオプションが選択されていても、最初の選択肢のみ取得されます。何も選択されていない場合は空の文字列が返ります。
全ての選択されたオプションのハンドルを取得
$selections = $item->your_choice->getSelectedHandles(); foreach ($selections as $selected_handles) { //do something... }
何も選択されていない場合は空の配列が返ります。
選択されたオプションのラベルを取得
$label = $item->your_choice->getSelectedLabel(); echo $label;
こちらもドロップダウンリスト用です。
全ての選択されたオプションのハンドルを取得
$labels = $item->your_choice->getSelectedLabels(); echo '<ul>'; foreach ($labels as $label) { echo '<li>' . $label . '</li>'; } echo '</ul>';
選択されたオプションのハンドルとラベルを配列で取得
$selections = $item->your_choice->getSelections(); echo '<ul>'; foreach ($selections as $handle => $label) { echo '<li>' . $handle . ': ' . $label . '</li>'; } echo '</ul>';
全てのオプションのハンドルとラベルを配列で取得
選択していないものも含まれます。
$all_options = $item->your_choice->getAllOptions(); echo '<ul>'; foreach ($all_options as $handle => $label) { echo '<li>' . $handle . ': ' . $label . '</li>'; } echo '</ul>';