ページのデータを取得する
標準プロパティ
下記はページの標準プロパティーを取得する方法です。$c はページオブジェクトです。PHPの print 文で取得した情報を表示しています
ページ名を取得
print $c->getCollectionName();
ページの説明を取得
print $c->getCollectionDescription();
ページの作成日時を取得
print $c->getCollectionDateAdded();
ページの公開日時を取得(ブログ記事など)
print $c->getCollectionDatePublic();
カスタム属性
ページのカスタム属性を取得することも簡単にできます。
$response = $c->getAttribute('attribute_handle');
この場合の $response の値は属性タイプによって異なります。
$response = $c->getAttribute('exclude_nav');
ナビゲーションから除くなどの真偽値(boolean)属性は、true または false で取得できます。
$response = $c->getAttribute('thumbnail');
フルサイトでインストールすると、画像/ファイルタイプの "thumbnail" というハンドルの属性が作られます。この属性がページに設定されていれば、$response は Concrete\Core\File\File オブジェクトのインスタンス、または null になります。
表示可能なデータを取得する
カスタム属性タイプは画面に表示するのに適した形でデータを取得することもできます。getAttribute() で取得すると、デフォルトではプログラマ向けのデータ(オブジェクトのインスタンス)で取得されますが、第2引数を指定することで、そのまま出力可能なデータの状態で取得できます。
$response = $c->getAttribute('thumbnail', 'display');
この書き方だと、画像/ファイル属性タイプの getDisplayValue() メソッドの結果を取得できます(HTMLリンクになります)。
サンプル
ページのすべてのタグを一覧表示し、検索インターフェースにリンクさせる記述を、テーマのページテンプレートに追加する例です。
<?php $tags = $c->getAttribute('tags'); if ($tags && count($tags)) { ?> <div class="tags"> <div class="title"><span>Tags</span></div> <ul> <? foreach($tags as $tag) { ?> <li><a href="<?=URL::page($blog, 'tag', strtolower($tag))?>"><?=$tag?></a></li> <? } ?> </ul> </div> <? } ?>
編集モードかどうかを確認する
現在のページがユーザーによって編集中かどうかをチェックする方法
if ($c->isEditMode()) { }
ページ上のすべてのブロックオブジェクトを全て取得する
$blocks = $c->getBlocks();
ページ上の特定のエリアのブロックオブジェクトを全て取得する
$blocks = $c->getBlocks('Area name');
$blockIDs = $c->getBlockIDs('Area name');
ページ上のエリアオブジェクトを取得する
$area = $c->getArea('Area name');
Page API
そのほかにも、非常にたくさんの操作をページオブジェクトから行うことができます。APIドキュメントを参照してください。
\Concrete\Core\Page\Page API Reference
参考URL
その他のスニペット
ツールバーを表示中かどうか
$cp = new Permissions($c); if ($cp->canViewToolbar()) { // ツールバーを表示できるユーザーのための処理 }
ログイン中かどうか
use Concrete\Core\User\User; $user = new User(); if ($user->isLoggedIn()) { // ログイン中 } else { // ログアウト中 }
8.6.0以降
use Concrete\Core\User\User; $user = $app->make(User::class); if ($user->isRegistered()) { // ログイン中 } else { // ログアウト中 }
親ページを取得する
$parent = \Page::getByID($c->getCollectionParentID());