SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

直感的にサイトの運営管理が行えるPHP製のCMS「concrete5」

オープンソースのCMS「concrete5」5.7を使ってみよう

直感的にサイトの運営管理が行えるPHP製のCMS「concrete5」 第1回

エリアを追加してみよう

 concrete5ではこのエリアがキモになります。既存のテーマを使ってオリジナルのエリアを追加してみましょう。エリアは既存のテーマなどは配置箇所や数は違います。もちろん、独自でテーマを作る場合はこのエリアは自由に作ることができます。

 エリア部分はどのようになっているのでしょうか。concrete5 5.7に最初から入っているデフォルトのテーマElementalを見てみましょう。

エリアを追加するためのコード

 テーマはルートから以下の箇所に格納されています。

  • ルート/concrete/themes/elemental

 この中に「defaut.php」というファイルがあるのですがこれは基本の「ページタイプ」で主なコンテンツなどを表示する部分になります。「ページタイプ」については詳しくは次回説明します。

 ファイルをエディタで見てみるとソースは以下のようになっています。

<?php
    defined('C5_EXECUTE') or die("Access Denied.");
    $this->inc('elements/header.php'); ?>

    <main>
        <?php
            $a = new Area('Main');
            $a->enableGridContainer();
            $a->display($c);
        ?>
        <?php
            $a = new Area('Page Footer');
            $a->enableGridContainer();
            $a->display($c);
        ?>

    </main>

<?php  $this->inc('elements/footer.php'); ?>

 上記コードに2か所ある「$a = new Area('エリア名')」の部分がエリア部分を作りだしています。このソースを見ていただくと分かるように、Elementalではhtmlのコードがほとんどありません。エリアのレイアウトを編集してカラム数を変更したり、ブロックを配置するだけでページを構築することができます。

 エリアを追加するための基本のコードは以下になります。

エリアを追加するためのコード
<?php
    $a = new Area('エリア名');
    $a->display($c);
?>
レイアウトのグリッドサポートの有効化

 テーマElementalは、デザインのフレームワークにTwitter Bootstrap3が使われています。レイアウトの編集時の際もエリアに以下のとおり1行追記するだけで、Bootstrap3のグリッドシステムを使うことができます。

 

 Twitter Bootstrap3でカラムを追加すると、containerクラスの<div>タグでラップされるようになります。左右に余白が付きセンタリングされるようになります。テーマのレイアウトについては後日説明します。

 

レイアウトのグリッドサポート
<?php
    $a = new Area('エリア名');
    $a->enableGridContainer();
    $a->display($c);
?>

 例えば、このdefault.phpにエリア名「SubArea」というエリアを追加したい場合、以下のように変更します。

エリア「SubArea」を追加
<?php
    defined('C5_EXECUTE') or die("Access Denied.");
    $this->inc('elements/header.php'); ?>

    <main>
        <?php
            $a = new Area('Main');
            $a->enableGridContainer();
            $a->display($c);
        ?>

        <?php
            $a = new Area('SubArea');
            $a->enableGridContainer();
            $a->display($c);
        ?>

        <?php
            $a = new Area('Page Footer');
            $a->enableGridContainer();
            $a->display($c);
        ?>

    </main>

<?php  $this->inc('elements/footer.php'); ?>

 編集モードで確認すると以下のように「SubArea」という空のエリアが表示されるようになります。

追加された空のエリア「SubArea」
エリア「SubArea」を追加

 concrete5の構造で述べたように、エリアには2種類あります。ページ個々で使えるものと、全ページ共通の「グローバルエリア」があります。1個の「グローバルエリア」を編集するとすべてに反映され、作業効率もアップします。

 似たようなものに「スタック」というものがあります。

 

 グローバルエリアを設置したいときは次のように書き換えるだけです。

グローバルエリア
<?php
    $a = new GlobalArea('グローバルエリア名'');
    $a->display();
?>
//レイアウトのグリッドサポートを使えるようにしたい場合
<?php
    $a = new GlobalArea('グローバルエリア名'');
    $a->enableGridContainer();
    $a->display();
?>

 また、追加できるブロックの数も制限することができます。

ブロック数の制限
<?php
    $a = new Area('【エリア名】');
    $a->setBlockLimit(n);//nは制限するカラム
    $a->display($c);
?>

 制限されたn個以上のブロックを追加できなくなります。

まとめ

 今回はconcrete5の概要やデフォルトのテーマを使ってインストールと操作方法を解説しました。また、少しだけエリアのコード部分についても説明しました。concrete5はマウス操作で直感的にデザインやコンテンツを作り上げていけるということがお分かりいただけたかと思います。

 次回はconcrete5のページの追加やサイトマップ、ページテンプレートについて学びます。

 最後に、本記事の執筆にあたり、アドバイスをいただきましたコンクリートファイブジャパンの佐々木様、菱川様、Katz様に感謝いたします。

参考資料

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
この記事の著者

西村 誠(ニシムラ マコト)

 Microsoft MVP Windows Platform Development。 Flash、PHPの開発経験もあり国産ECサイト構築フレームワーク「EC-CUBE」の公式エバンジェリストでもある。 ブログ:眠るシーラカンスと水底のプログラマー 著書:基礎から学ぶ Windowsストアアプリ開発

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

神守 由理子(カミモリ ユリコ)

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/8340 2015/01/19 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー