開発ブログ

株式会社Nextatのスタッフがお送りする技術コラムメインのブログ。

電話でのお問合わせ 075-744-6842 ([月]-[金] 10:00〜17:00)

  1. top >
  2. 開発ブログ >
  3. October CMS >
  4. October CMSのテーマを触る~基本概念の把握とPageの編集~
October CMSのテーマを触る~基本概念の把握とPageの編集~

October CMSのテーマを触る~基本概念の把握とPageの編集~

こんばんは、ナカエです。 前回に引き続き空いた時間にOctoberをいじっています。

October CMSを利用して感じているのは、テーマ(テンプレート)に非常に高い権限と柔軟性が与えられているなということです。 管理画面をあちこち行き来することなく、テンプレートファイルを編集するだけでWebサイト制作のほとんどの作業がこなせるように設計されているようです。

CMSでありながら、ローカルのエディタでHTMLを利用してサイトを制作している感覚に近いとでもいいましょうか。

Octoberのテーマで気に入った点

URLをテーマのテンプレートで自由に設計できる

ほかのCMSから乗り換えて、一番勝手がわからなくなるのはもしかするとこの部分かもしれません。 CMSの都合でURLを押し付けられるのではなく、例えばBlogなどのプラグインを利用したWebページのURLも すべてテーマ側で設計することになります。

柔軟なComponents

一般的なCMSでよくある"ウィジェット"(の上位互換)がComponentsです。 ページごとに利用するComponentを設定し、さらにページのどの部分にComponentを配置するかをHTMLマークアップに近い形で記述できます。  同様に複数のページに対して好きな部分に共通のComponentを配置することも可能です。

Componentの中にはユーザー認証など、表示だけでなくページ自体に対する作用を持ったものもあり、 いろいろな種類のパーツを組み合わせてページを設計していくという印象です。 これらの機能をComponentという仕組みひとつでわかりやすく抽象化しているのは素晴らしいと思います。

ページごとにPHPコードを書いてヘルパーとして使える

テンプレートファイルに直接PHPコードを書くための仕組みが用意されています。 Octoberの売りの1つであるAjaxフレームワークを利用する際も、ページと同じ場所にPHPコードも書けるのでわかりやすいです。 (ページ表示に利用するPHP関数がテーマ内の1ファイルにまとまっていると肥大してしまって後々探しにくかったりしますよね)

October CMSのテーマ作成において基本となる概念

Pages(ページ)

テーマの主役となるのがPageです。PageはWebページに対応しており、表示するURLの設定とともにWebページのマークアップを記述します。 テンプレートのひな形となるLayoutファイルが指定されている場合は、 Layoutファイル内の下記Twigマークアップが、Pageファイルに記述した分のマークアップで置き換わります。

{% page %}

Layouts(レイアウト)

Pageのひな形を記述するためのファイルです。

headタグやその中のJS・CSSファイルへの参照はサイト全体でほぼ共通でしょうし、bodyタグの中でも使いまわす部分は多いかと思います。 Pageごとに同じ記述をしていては冗長なため、このファイルを利用してまとめます。

もちろん、Pageによって利用するLayoutを変更することも可能です。

Partials(パーシャル)

ページを超えて再利用するHTMLコード片です。 デモサイトの例ではフッターがPartialとして分離してありました。

Content blocks(コンテンツブロック)

デモサイトの説明にはPageやLayoutとは別に編集できるテキストまたはHTMLのブロックです、とあります。

最初は「一体Partialと何が違うんだ!!!ややこしいからまとめてくれ!!」 と思いましたが、こちらはTwigのマークアップとしては解釈されず、Markdownファイルやtxtファイルなども扱えるようです。 デモサイトでは、partialsに書くとTwigのマークアップとして解釈されてそのまま表示できないコードを出力するためにtxtファイルを利用していました。

Assets(アセット)

JavaScript、CSS、画像などのリソースです。  

テーマディレクトリの構成

October CMSのテーマは完全にファイルベースで、上記に紹介したそれぞれに対応するサブディレクトリが用意されています。

themes/
  website/              <== 作成したテーマのルートディレクトリ
    pages/              <== Pageファイルを格納するディレクトリ
      home.htm
    layouts/            <== Layouts
      default.htm
    partials/           <== Partials
      sidebar.htm
    content/            <== Content
      intro.htm
    assets/             <== Assets
      css/
        my-styles.css
      js/
      images/

pages、layouts、partials、contentそれぞれのディレクトリ内には深さ1のサブディレクトリ(ネストは不可)を作成して整理することができます。assetsディレクトリ以下の構成は自由です。

管理画面でのテーマの編集

上部メニューの[CMS]がテーマの編集にあたります。
october_admin_cms_pages01.png

左のメニューをマウスオーバーするとディレクトリとファイルのリストが表示され、 ファイルを選んでクリック、または[Add]ボタンから新規作成やローカルファイルのアップロードをすることでファイルが編集可能状態になります。

テーマ編集画面はタブ付き!

october_admin_cms_pages02.png

 注意しておきたいのは、ファイルを同時に複数開き、タブで切り替えることが可能であるという点です。 一般的な管理画面のように左のメニューをクリックしてファイルごとにページ遷移するというわけではありません。 Ctrl+Sというショートカットでファイルの保存ができたり、マークアップのテキストエリアの右上には最大化ボタンがついていたりなど、ローカルアプリケーションのようなユーザーインターフェースとなっています。


october_admin_cms_pages03.png

ページ情報の設定

ページタイトル、URL、metaタグなどを設定できます。

Layoutの指定

[Settings]の[Layout]でドロップダウンリストから選択します。

Componentの利用

また、左メニューに同様に並んでいるものの、Componentsだけは挙動が異なります。 Componentsはプラグインの管轄であるため、ここから直接は編集できないようです。

Page、Layoutのいずれかのファイルがアクティブ(タブを選択した状態)のときのみ、 そのファイルに対して選択したComponentsを埋め込むことができます。
october_admin_cms_comonents02.png

  • (PageかLayoutファイルがアクティブな状態で)左メニューからページで利用するComponentを選ぶ
  • ページに追加されたComponentをクリックして必要なパラメータを設定
  • Markupの好きな部分に選んだComponentを呼び出すTwigのマークアップを記述

october_admin_cms_comonents03.png

これだけで簡単にComponentを利用できます。
october_admin_cms_comonents04.png

PartialとContent Block

PartialやContentBlockを利用するにはTwigマークアップを記述するだけでOKです。

{% partial "partial-name" %}
{% content "content-name.md" %}

PHPコードを書く

[Markup]の横にある[Code]をクリックするとページで利用するPHPを記述するエリアに切り替わります。

テンプレートファイルの構造

Octoberのドキュメントを見ると直接ファイルを編集する前提での説明になっています。
Themes - October CMS

ドキュメントを見ながら管理画面からテーマをいじる際には、ファイルのどの部分がどの入力項目に対応しているのか把握しておいたほうがよさそうです。 (このあたりがやはりまだまだ開発者向けだと感じる所以)

とはいえPageファイルの構成はシンプルなので、覚えることは多くありません。
※LayoutとPartialsもほぼ同じ構成ですしね。

Pageファイルは下記の3セクションからなり、各セクションは"=="で示される行で区切られています。

設定(Configuration)セクション

ファイルのメタ情報などの設定はここでなされます。 具体的にはタイトル・URL・レイアウト・Pageに利用するComponentの設定パラメータなどです。 iniファイルと同じの記述形式となっていて非常に読みやすいです。

PHPコードセクション(オプション)

  そのファイルで利用する関数をPHPで書くことができます。

Twigマークアップセクション

  テンプレートファイルのメインともいうべき部分。テンプレートのTwigマークアップを記述します。

url = "/blog"
layout = "default"
==
<?
function onStart()
{
    $this['posts'] = ...;
}
?>
==
<h3>Blog archive</h3>
{% for post in posts %}
    <h4>{{ post.title }}</h4>
{{ post.content }}
{% endfor %}

先ほど管理画面で見たPage編集画面の各入力項目との対応も簡単に把握できると思います。
 

まだまだカバーしきれていない範囲も多いですが、今日はこのあたりで。

次回はBlogプラグインの設定について書く予定です。

TOPに戻る