ページのデータを取得する

標準プロパティ

下記はページの標準プロパティーを取得する方法です。$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 

原文:Getting Data about a Page

参考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());