concrete5の各属性タイプの情報を表示するコード集
Posted by admin at 18:14 日時 2014/07/01
<?php foreach ($pages as $page): ?> <?php /* この記事のサンプルコードはページリストブロックの foreach 文の間に記載することを想定しています */ ?> <?php endforeach; ?>
ページリストブロックではなく、テーマなどで現在のページの情報を表示したい場合は、先に次のコードを記載しておくことで同じように書けます。
<?php $page = Page::getCurrentPage(); ?>
<?php /* * テキストタイプ属性 */ $text = $page->getAttribute('text'); // getAttributeの引数には、属性のハンドルを指定します。 // そのまま出力可能 echo h($text); /* * テキストエリアタイプ属性 */ $textarea = $page->getAttribute('textarea'); // そのまま出力可能 echo h($textarea); // 改行をbrタグに変換 echo nl2br(h($textarea)); /* * チェックボックスタイプ属性 */ $checkbox = $page->getAttribute('checkbox'); // そのまま出力可能 echo h($checkbox); // 1 or 0 if ($checkbox) { echo 'チェックされている時'; } else { echo 'チェックされていない時'; } /* * 日付/時刻タイプ属性 */ $date_time = $page->getAttribute('date_time'); // そのまま出力可能 echo h($date_time); // 2014-07-01 17:30:00 // 書式を指定 $dh = Loader::helper('date'); echo $dh->date('Y年n月j日', strtotime($date_time)); /* * 画像/ファイルタイプ属性 * 画像をimgタグで表示 */ $image = $page->getAttribute('image'); // 画像はechoが使えません // echo $image; // 画像ヘルパーの読み込み $ih = Loader::helper('image'); // サムネイルの取得。引数はファイルオブジェクト、横幅、高さ、切り抜くかどうか $thumbnail = $ih->getThumbnail($image, 400, 300, false); if ($thumbnail) { ?> <img src="<?php echo $thumbnail->src ?>" width="<?php echo $thumbnail->width ?>" height="<?php echo $thumbnail->height ?>" alt="" /> <?php } else { echo '画像が選択されていません。'; } /* * 画像/ファイルタイプ属性 * ファイルダウンロードリンクを表示 */ $file = $page->getAttribute('file'); // ファイルはechoが使えません // echo $file; // Fileオブジェクトかどうか検査 if ($file instanceof File) { // ファイルの閲覧権限のチェック $fp = new Permissions($file); if ($fp->canViewFile()) { // 通常ダウンロードリンク(ブラウザで表示できるファイルはブラウザで表示) ?> <a href="<?php echo View::url('/download_file', $file->getFileID(), $c->getCollectionID()) ?>"><?php echo h($file->getTitle()) ?></a> <?php // 強制ダウンロードリンク(ブラウザで表示できるファイルでも表示しない) ?> <a href="<?php echo View::url('/download_file', 'force', $file->getFileID(), $c->getCollectionID()) ?>"><?php echo h($file->getTitle()) ?></a> <?php } else { echo 'ファイルの閲覧権限がありません。'; } } else { echo 'ファイルが選択されていません。'; } /* * 数字タイプ属性 */ $number = $page->getAttribute('number'); // そのまま出力可能 echo h($number); /* * 評価タイプ属性 */ $rating = $page->getAttribute('rating'); // そのまま出力すると、100点満点の数字で表示される echo h($rating); // 星マークで表示(例:★★★☆☆) $rh = Loader::helper('rating'); echo $rh->outputDisplay($rating); /* * 選択タイプ属性 */ $select = $page->getAttribute('select'); // そのまま出力も可能。 // 複数の項目が選択されている場合は、改行区切りで表示される echo $select; // 選択項目をいったん配列にしてから表示する例 // 選択タイプ属性のオブジェクトかどうかを検査 if ($select instanceof SelectAttributeTypeOptionList) { $options = array(); $list = $select->getOptions(); foreach ($list as $l) { $options[] = h($l->getSelectAttributeOptionDisplayValue()); } echo implode(', ', $options); // カンマ区切りで結合 } ?>
注意:画面に値を出力する際は基本的にセキュリティのため h() 関数を使いましょう。