Blog

concrete5の各属性タイプの情報を表示するコード集 5.7対応版

Posted by admin at 18:36 日時 2015/06/29

#
<?php foreach ($pages as $page): ?>  <?php  /* この記事のサンプルコードはページリストブロックの     foreach 文の間に記載することを想定しています */  ?>  <?php endforeach; ?>

ページリストブロックではなく、テーマなどで現在のページの情報を表示したい場合は、先に次のコードを記載しておくことで同じように書けます。

<?php $page = Page::getCurrentPage(); ?>

/*   * テキストタイプ属性   */  $text = $page->getAttribute('text');  // getAttributeの引数には、属性のハンドルを指定します。     // そのまま出力可能  echo h($text);    /*   * テキストエリアタイプ属性   */  $textarea = $page->getAttribute('textarea');     // エディタの場合はサニタイズなしで出力可能  echo $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); // 2015-06-29 17:50:00    // 書式を指定して表示  echo Core::make('date')->formatCustom('Y年n月j日', $date_time);    /*   * 画像/ファイルタイプ属性   * 画像をimgタグで表示   */  $image = $page->getAttribute('image');     // 画像はechoが使えません  // echo $image;    // 画像が選択されていかどうか is_object でチェック  if (is_object($image)) {      /**       * 画像の表示方法の詳細は       * http://concrete5-japan.org/help/5-7/recipes/how-to-use-core-html-image/       */      $tag = Core::make('html/image', array($image))->getTag();      echo $tag;  } else {      echo '画像が選択されていません';  }    /*   * 画像/ファイルタイプ属性   * ファイルダウンロードリンクを表示   */  $file = $page->getAttribute('file');     // ファイルはechoが使えません  // echo $file;    // ファイルが選択されていかどうか is_object でチェック  if (is_object($file)) {             // ファイルの閲覧権限のチェック      $fp = new Permissions($file);      if ($fp->canViewFile()) {                     // 通常ダウンロードリンク(ブラウザで表示できるファイルはブラウザで表示)          ?>          <a href="<?php echo $file->getDownloadURL() ?>"><?php echo h($file->getTitle()) ?></a>          <?php                     // 強制ダウンロードリンク(ブラウザで表示できるファイルでも表示しない)          ?>          <a href="<?php echo $file->getForceDownloadURL() ?>"><?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);     // 星マークで表示(Bootstrap)  $rh = Core::make('helper/rating');  echo $rh->outputDisplay($rating);  /**   * <div class="ccm-attribute ccm-attribute-rating ccm-rating">   *   <div class="fa fa-star"><a href="javascript:void(0)"></a></div>   *   <div class="fa fa-star"><a href="javascript:void(0)"></a></div>   *   <div class="fa fa-star"><a href="javascript:void(0)"></a></div>   *   <div class="fa fa-star-o"><a href="javascript:void(0)"></a></div>   *   <div class="fa fa-star-o"><a href="javascript:void(0)"></a></div>   * </div>   */      /*   * 選択タイプ属性   */  $select = $page->getAttribute('select');    // そのまま出力も可能。  // 複数の項目が選択されている場合は、改行区切りで表示される  echo $select;    // 選択項目をいったん配列にしてから表示する例  if (is_object($select)) {      $options = array();      $list = $select->getOptions();      foreach ($list as $l) {          $options[] = h($l->getSelectAttributeOptionDisplayValue());      }      echo implode(', ', $options); // カンマ区切りで結合  }    /**   * トピックタイプ属性   */  $topics = $page->getAttribute('topic');    // トピックはそのまま出力できません  // echo $topics;    if (is_array($topics) && count($topics)) {      foreach($topics as $topic) {          echo $topic->getTreeNodeDisplayName();      }  } else {      echo 'トピックが選択されていません。';  }

注意:画面に値を出力する際は基本的にセキュリティのため h() 関数を使いましょう。

5.6の方はこちら


Share this entry