個人用ツール

「テーマに関する用語」の版間の差分

提供: baserCMS公式ガイド

移動: 案内, 検索
(テーマフック)
行11: 行11:
 
レイアウトテンプレートは、HTML全体(<html>から</html>まで)を担当するイメージで、このレイアウトテンプレート内で、エレメントファイル(後述)や[[関数リファレンス]]にある関数を利用します。なお、レイアウトテンプレートの設置場所は以下になります。
 
レイアウトテンプレートは、HTML全体(<html>から</html>まで)を担当するイメージで、このレイアウトテンプレート内で、エレメントファイル(後述)や[[関数リファレンス]]にある関数を利用します。なお、レイアウトテンプレートの設置場所は以下になります。
  
####Ver.3系統
+
####Ver.3, Ver.4系統
 
<pre>/app/webroot/theme/(テーマのフォルダ)/Layouts/</pre>
 
<pre>/app/webroot/theme/(テーマのフォルダ)/Layouts/</pre>
  
行28: 行28:
 
エレメントファイルは以下の場所に設置し、特に命名規則はありません。ただし、ヘッダ部分のファイル名にはheader.phpを、フッター部分にはfooter.phpを使えば、それらのエレメントを特別な関数で呼び出すことが出来るようになります。
 
エレメントファイルは以下の場所に設置し、特に命名規則はありません。ただし、ヘッダ部分のファイル名にはheader.phpを、フッター部分にはfooter.phpを使えば、それらのエレメントを特別な関数で呼び出すことが出来るようになります。
  
####Ver.3系統
+
####Ver.3, Ver.4系統
 
<pre>/app/webroot/theme/(テーマのフォルダ)/Elements/</pre>
 
<pre>/app/webroot/theme/(テーマのフォルダ)/Elements/</pre>
  
行44: 行44:
 
[[固定ページ管理#固定ページカテゴリ|固定ページカテゴリ]]のコンテンツテンプレートは、以下の場所にテンプレートとなるファイルを設置することで、固定ページカテゴリの作成・編集時に選択出来るようになります。
 
[[固定ページ管理#固定ページカテゴリ|固定ページカテゴリ]]のコンテンツテンプレートは、以下の場所にテンプレートとなるファイルを設置することで、固定ページカテゴリの作成・編集時に選択出来るようになります。
  
#####Ver.3系統
+
#####Ver.3, Ver.4系統
 
<pre>/app/webroot/theme/(テーマのフォルダ)/Pages/templetes/</pre>
 
<pre>/app/webroot/theme/(テーマのフォルダ)/Pages/templetes/</pre>
  
 
#####Ver.2系統
 
#####Ver.2系統
 
<pre>/app/webroot/themed/(テーマのフォルダ)/pages/templetes/</pre>
 
<pre>/app/webroot/themed/(テーマのフォルダ)/pages/templetes/</pre>
このテンプレートファイルはPHPファイルになり、Ver.2系統では<code>$bcPage->content()</code>、Ver.3系統では<code>$this->BcPage->content()</code>と記述した場所にページの内容が出力されます。
+
このテンプレートファイルはPHPファイルになり、Ver.2系統では<code>$bcPage->content()</code>、Ver.3, Ver.4系統では<code>$this->BcPage->content()</code>と記述した場所にページの内容が出力されます。
  
 
==== プラグインのコンテンツテンプレート ====
 
==== プラグインのコンテンツテンプレート ====
行83: 行83:
 
上記のようにコントローラーが呼び出される前に設定を読み込むことで、この機能を実現しています。具体的な設定は以下のファイルを作成して、そこに記述を行えば、自動的に読み込まれるようになります。
 
上記のようにコントローラーが呼び出される前に設定を読み込むことで、この機能を実現しています。具体的な設定は以下のファイルを作成して、そこに記述を行えば、自動的に読み込まれるようになります。
  
####Ver.3系統
+
####Ver.3, Ver.4系統
 
<pre>/app/webroot/theme/(テーマフォルダ)/Config/bootstrap.php</pre>
 
<pre>/app/webroot/theme/(テーマフォルダ)/Config/bootstrap.php</pre>
  
行93: 行93:
 
テーマ内で使用できる[http://book.cakephp.org/1.2/ja/The-Manual/Developing-with-CakePHP/Helpers.html ヘルパー]です。ヘルパーはサイトの表示部分に関して、特定の機能を持った関数で、以下のフォルダに設置します。
 
テーマ内で使用できる[http://book.cakephp.org/1.2/ja/The-Manual/Developing-with-CakePHP/Helpers.html ヘルパー]です。ヘルパーはサイトの表示部分に関して、特定の機能を持った関数で、以下のフォルダに設置します。
  
####Ver.3系統における設置場所
+
####Ver.3, Ver.4系統における設置場所
 
<pre>/app/webroot/theme/(テーマフォルダ)/Helpers/</pre>
 
<pre>/app/webroot/theme/(テーマフォルダ)/Helpers/</pre>
  
行100: 行100:
  
 
なお、テーマヘルパーは以下のように「AppHelper」を継承して作成しますが、バージョンによってクラスの規則が異なります。例えばテーマ「hoge」で使うテーマヘルパーの場合、
 
なお、テーマヘルパーは以下のように「AppHelper」を継承して作成しますが、バージョンによってクラスの規則が異なります。例えばテーマ「hoge」で使うテーマヘルパーの場合、
####Ver.3系統におけるクラス名
+
####Ver.3, Ver.4系統におけるクラス名
 
<pre>class BcHogeHelper extends AppHelper {</pre>
 
<pre>class BcHogeHelper extends AppHelper {</pre>
Ver.3ではクラス名の始めに「Bc」をつけます。
+
Ver.3, Ver.4ではクラス名の始めに「Bc」をつけます。
 
####Ver.2系統におけるクラス名
 
####Ver.2系統におけるクラス名
 
<pre>class HogeHelper extends AppHelper {</pre>
 
<pre>class HogeHelper extends AppHelper {</pre>
行111: 行111:
 
というヘルパーを呼び出すには、
 
というヘルパーを呼び出すには、
  
####Ver.3系統における呼び出し方
+
####Ver.3, Ver.4系統における呼び出し方
 
<pre><?php $this->BcBaser->getBaserwiki(); ?></pre>
 
<pre><?php $this->BcBaser->getBaserwiki(); ?></pre>
  

2016年9月18日 (日) 18:41時点における版

baserCMSのテーマで用いられる用語を定義します。(プラグインや機能拡張で用いる用語については「プラグイン制作・機能拡張に関する用語」を参照して下さい。)

テーマ用語集

以下の用語について説明しています。

レイアウトテンプレート

baserCMSで制作されるサイトの基本デザイン・レイアウト部分が記述されたファイルです(フォーラムなどでは”レイアウトファイル”と呼ばれる事もあります)。記述にはPHPを使います。ここに記述された内容は、HTMLとして出力されます。

レイアウトテンプレートは、HTML全体(<html>から</html>まで)を担当するイメージで、このレイアウトテンプレート内で、エレメントファイル(後述)や関数リファレンスにある関数を利用します。なお、レイアウトテンプレートの設置場所は以下になります。

Ver.3, Ver.4系統

/app/webroot/theme/(テーマのフォルダ)/Layouts/

Ver.2系統

/app/webroot/themed/(テーマのフォルダ)/layouts/

上記のフォルダ内に、通常「default.php」という名前で作成します。default.phpという名前で作成されたレイアウトテンプレートが、このテーマのデフォルトレイアウトテンプレートとして使用されます。baserCMS ver.2.1.0以降ならば、カテゴリ毎にレイアウトテンプレートを選択できる仕組みになっていますが、その仕組を利用する場合も、上記フォルダ内に複数のレイアウトテンプレートを用意しておくことで、管理画面からそれらを選択できるようになります。

 

エレメントファイル

単に「エレメント」と呼ばれることもあるこのファイルは、レイアウトテンプレート内から呼び出すことの出来る、切り分けられたHTMLの各パーツを指します。

この機能によって、レイアウトテンプレート内に記述するHTMLの一部(例えばページ上部のロゴ部分やグローバルメニュー)だけを別のファイルに記述しておき、それをエレメントファイルとしてレイアウトテンプレート内で呼び出すと、エレメントファイルの内容が、呼び出した箇所に出力されることになります。つまり、レイアウトテンプレートがページ全体のHTMLを担当するのに対し、エレメントファイルは切り分けられた個別のパーツ部分を担当するイメージです。個別のパーツなので、エレメントファイルを使わなくてもテーマの制作は可能ですが、切り分けて保存・編集することで、ソースの可視性・保守性が高まります。

エレメントファイルは以下の場所に設置し、特に命名規則はありません。ただし、ヘッダ部分のファイル名にはheader.phpを、フッター部分にはfooter.phpを使えば、それらのエレメントを特別な関数で呼び出すことが出来るようになります。

Ver.3, Ver.4系統

/app/webroot/theme/(テーマのフォルダ)/Elements/

Ver.2系統

/app/webroot/themed/(テーマのフォルダ)/elements/

エレメントの呼び出しについては関数リファレンスエレメントファイルを呼び出すを参照してください。

コンテンツテンプレート

レイアウトテンプレートとよく似た名前のこのテンプレートは、固定ページカテゴリやブログプラグインやメールプラグインなど、限られたコンテンツの中で、その機能に合わせたデザイン・レイアウトを設定する為に用いられます。

固定ページカテゴリのコンテンツテンプレート

固定ページカテゴリのコンテンツテンプレートは、以下の場所にテンプレートとなるファイルを設置することで、固定ページカテゴリの作成・編集時に選択出来るようになります。

Ver.3, Ver.4系統
/app/webroot/theme/(テーマのフォルダ)/Pages/templetes/
Ver.2系統
/app/webroot/themed/(テーマのフォルダ)/pages/templetes/

このテンプレートファイルはPHPファイルになり、Ver.2系統では$bcPage->content()、Ver.3, Ver.4系統では$this->BcPage->content()と記述した場所にページの内容が出力されます。

プラグインのコンテンツテンプレート

例えばブログプラグインでの例を考えてみましょう。ブログプラグインが提供するブログコンテンツには以下の4つの画面の利用が予定されています。

  1. ブログのトップページ
  2. 個別記事のページ
  3. 記事一覧のページ
  4. サイトのトップページなど、他のページから記事の一覧を出力する部分。

上記の4つの画面のデザイン・レイアウトは、以下の4つのファイルが担当しています。

  1. index.php
  2. single.php
  3. archive.php
  4. posts.php

さて、baserCMSのブログプラグインには複数のブログを同時に設置できる機能が搭載されています。そのため、例えば「社長ブログ」と「スタッフブログ」の両方を、1つのサイト内に設置する事が可能です。この時に、もしも「社長ブログ」と「スタッフブログ」とで、異なるデザインを適用する必要が出てきたとしたらどうでしょうか。上記の4つのファイルが1種類しかないと、どのブログでも同じ画面デザインを使用することになってしまいます。

そこでコンテンツテンプレートの出番です。上述の4つのファイルを1つのコンテンツテンプレートとしてフォルダにまとめ、そしたフォルダを複数用意する事で、管理画面からどのコンテンツテンプレートを利用するかの選択をします。つまり、レイアウトテンプレートや固定ページカテゴリのコンテンツテンプレートが、ファイル単位であったのと事なり、ブログやメールプラグインのコンテンツテンプレートは、複数のファイルを1つにまとめたフォルダ単位で構成されているのです。

テーマブートストラップ

テーマブートストラップとは、そのテーマ内で利用する独自の関数や定数を定義したり、環境変数を再設定するなど出来る仕組みのことです。関数や定数の定義については通常のPHP構文で記述します。環境変数の再設定については、CakePHPのConfigreクラスを利用します。

テーマ用の起動処理を記述する為のファイルを配置する事ができます。

コントローラーが呼出される前に読み込まれますので、関数定義や、定数定義、Configureクラスの設定値書き換えなど自由自在に行えます。

公式サイトより引用)

上記のようにコントローラーが呼び出される前に設定を読み込むことで、この機能を実現しています。具体的な設定は以下のファイルを作成して、そこに記述を行えば、自動的に読み込まれるようになります。

Ver.3, Ver.4系統

/app/webroot/theme/(テーマフォルダ)/Config/bootstrap.php

Ver.2系統

/app/webroot/themed/(テーマフォルダ)/config/bootstrap.php

テーマヘルパー

テーマ内で使用できるヘルパーです。ヘルパーはサイトの表示部分に関して、特定の機能を持った関数で、以下のフォルダに設置します。

Ver.3, Ver.4系統における設置場所

/app/webroot/theme/(テーマフォルダ)/Helpers/

Ver.2系統における設置場所

/app/webroot/themed/(テーマフォルダ)/helpers/

なお、テーマヘルパーは以下のように「AppHelper」を継承して作成しますが、バージョンによってクラスの規則が異なります。例えばテーマ「hoge」で使うテーマヘルパーの場合、

Ver.3, Ver.4系統におけるクラス名

class BcHogeHelper extends AppHelper {

Ver.3, Ver.4ではクラス名の始めに「Bc」をつけます。

Ver.2系統におけるクラス名

class HogeHelper extends AppHelper {

Ver.2系統では、上のように「Bc」をつけません。

こうしてBcHogeHelperクラス(またはHogeHelper暮らす)を作成し、その中に個別のヘルパーを記述していきます。こうして作られた個別のヘルパーは、レイアウトテンプレートやエレメントファイル、固定ページなどから呼び出すことが出来ます。例えば、

function getBaserwiki(){}

というヘルパーを呼び出すには、

Ver.3, Ver.4系統における呼び出し方

<?php $this->BcBaser->getBaserwiki(); ?>

Ver.2系統における呼び出し方

<?php $hoge->getBaserwiki(); ?>

とします。

 

テーマフック

Ver.2系統

フックとは、baserCMSの処理の途中で別の処理を割り込ませる機能で、テーマで使うフックでは、以下の処理の途中で別の処理を割り込ませることができます。

beforeRender
beforeLayout
afterLayout
afterRender
beforeFormCreate
afterFormCreate
beforeFormEnd
afterFormEnd
beforeFormInput
afterFormInput
beforeBaserGetLink
afterBaserGetLink
baserHeader
baserFooter

実際にテーマフックを利用する為には、テーマのフォルダの「helpersフォルダ」の中に「(テーマ名)_hook.php」というファイルを作り、その中に処理を記述します。例えば、テーマ名が「hoge」であるならば、ファイル名と設置場所は以下のようになります。

/app/webroot/themed/hoge/helpers/hoge_hook.php

このファイルはAppHelperクラスを継承し、クラス名は「テーマ名HookHelper」になります。例えばテーマ名が「hoge」であるならば、以下の様にクラスを作成します。

class HogeHookHelper extends AppHelper{

また、どの処理に割り込ませるのかを「$registerHooks」に配列で指定します。例えば「afterLayout」と「afterFormEnd」を使用したければ

var $registerHooks = array('afterLayout','afterFormEnd');

とします。その上で、以下のように利用します。

function afterLayout() {(~処理を記述~)}

 

ウィジェットエリア

ウィジェットエリアとは、管理画面のウィジェットエリア管理で登録するウィジェット表示の為のスペースです(ウィジェットについては後述)。レイアウトテンプレート内にウィジェットエリアの表示部分を作ることで、管理画面での登録・変更がその部分に反映されます。

ウィジェットとは、ある特定の機能をもった表示用のパーツの事で、「ブログのカレンダー表示ウィジェット」などが挙げられます。例えば、ウィジェットエリア内に「ブログのカレンダー表示ウィジェット」を登録しておけば、レイアウトテンプレートで該当のウィジェットエリアを呼び出すだけで、ブログのカレンダーが表示されます。プログラミングの知識がなくても複雑な機能をもった部品を表示でき、さらに複数のエリアを登録できるので、必要に応じて必要なエリアを呼び出すことが出来ます。

ウィジェットにはbaserCMSが標準で用意しているものと、プラグインのインストールで利用できるようになるものがあります。



テキスト寄贈:馬庭 吾一@株式会社ヒニアラタ