concrete5である特定の階層の親ページデータを取得Contents Management System

concrete5である特定の階層の親ページデータを取得

concrete5

concrete5で特定のタイプの親ページの下層ページにそれぞれのグローバルエリアを設定するというのをやったのでそのメモを残しておきます。

まず、親ページデータの取得方法

まずは親ページの取得方法について。

一個上のページのデータは以下のコードで取得可能です。

//親ページのIDからページ情報を取得
$parent = Page::getByID($c->getCollectionParentID());

なので特定のページタイプになるまで親のページをwhile(true)を使って取得し続ければOK。

$hometype = 'home';
 
//直上の階層のデータ取得
$parentID = $c->getCollectionParentID();
$parent = Page::getByID($parentID);
 
if($parentID != null){
 
    if($parent->getCollectionTypeHandle()  ===  $hometype){
        $homeData = $parent;
    }
 
    while(true){
        $parent = Page::getByID($parentID);
        $parentID = $parent->getCollectionParentID();
 
        if( $parent->getCollectionTypeHandle() === $hometype){
            $homeData =  $parent;
            break;
        }
    }
}

取得方法1ブロックの情報をそのまま取得

特定のエリアのヘッダーロゴやサイドナブなどブロックを取得しそのまま表示させます。

//htmlブロックの出力
$globalNav = $homeData->getBlocks('globalNav');
    if($globalNav[0]->getInstance()->getSearchableContent()){
    echo $globalNav[0]->getInstance()->getSearchableContent();
}
 
//画像ブロックの出力
$headerLogo = $homeData->getBlocks('headerLogo');
if($headerLogo[0]->getInstance()->getFileObject()){
    $logo = $headerlogo[0]->getInstance()->getFileObject();
    $logo = $imgHelper->outputThumbnail($logo,9999,9999);//デフォのサイズで出力
}
 
//記事ブロックの出力
$footer = $homeData->getBlocks('footerArea');
    if($footer[0]->getInstance()->getContent()){
    echo $footer[0]->getInstance()->getContent();
}

取得方法2:後から気づいた、プレフィックスをつけてでグローバルエリアの名前を変更

人間夢中になっているときは気付かないもので 汗

それぞれglobalエリア名にページのスラッグを取得して、それをプレフィックスにしてしまえば、各ページ以下のグローバルエリア名そのものが変わるからそんな面倒なことをする必要がないことに気づきました。

getCollectionHandle().'-';
}
$area .= 'area';
$a = new GlobalArea($area);
$a->display();
?>

最後に注意すべき点

どちらにせよページを新規で作ったとき、まだ親ページが決まってない場合、親ページのデータが取得できないのでエラーを吐きます。

なので、編集ページ位置を判定して、もし取れてなかったらデータを出力しないようにしましょう。

関連記事もあわせてお読みください

Read More Blogs

Web制作に関する人気の記事

セブ島・海外移住に関する人気の記事

キャリアアップ・ライフスタイルに関する人気の記事

管理人について

IT戦士:かみーゆ

私、フロントエンドエンジニアのかみーゆです。日本でフロントエンドを中心に約10年Web制作 →→→ セブ島に転職してエンジニア講師 →→→ オフショア開発担当者(イマココ)。13歳の頃から「好きなように生きて好きなように死ぬ」が人生のKPI。なので、「楽しいか」、「かっこいいか」でやることを判断・取捨択一しています。好きなものは肉とビール。

About Me