「テーマに関する用語」を編集中
提供: baserCMS公式ガイド
警告: ログインしていません。
編集すると、IPアドレスがこのページの編集履歴に記録されます。この編集を取り消せます。
下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 | 編集中の文章 | ||
行5: | 行5: | ||
以下の用語について説明しています。 | 以下の用語について説明しています。 | ||
− | + | === レイアウトテンプレート === | |
+ | : baserCMSで制作されるサイトの基本デザイン・レイアウト部分が記述されたファイルです(フォーラムなどでは”レイアウトファイル”と呼ばれる事もあります)。記述にはPHPを使います。ここに記述された内容は、HTMLとして出力されます。 | ||
− | + | :レイアウトテンプレートは、HTML全体(<html>から</html>まで)を担当するイメージで、このレイアウトテンプレート内で、エレメントファイル(後述)や[[関数リファレンス]]にある関数を利用します。なお、レイアウトテンプレートの設置場所は以下になります。 | |
− | + | :<pre>/app/webroot/themed/(テーマのフォルダ)/layouts/</pre> | |
− | + | :上記のフォルダ内に、通常「'''default.php'''」という名前で作成します。default.phpという名前で作成されたレイアウトテンプレートが、このテーマのデフォルトレイアウトテンプレートとして使用されます。baserCMS ver.2.1.0以降ならば、カテゴリ毎にレイアウトテンプレートを選択できる仕組みになっていますが、その仕組を利用する場合も、上記フォルダ内に複数のレイアウトテンプレートを用意しておくことで、管理画面からそれらを選択できるようになります。 | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | 上記のフォルダ内に、通常「'''default.php'''」という名前で作成します。default.phpという名前で作成されたレイアウトテンプレートが、このテーマのデフォルトレイアウトテンプレートとして使用されます。baserCMS ver.2.1.0以降ならば、カテゴリ毎にレイアウトテンプレートを選択できる仕組みになっていますが、その仕組を利用する場合も、上記フォルダ内に複数のレイアウトテンプレートを用意しておくことで、管理画面からそれらを選択できるようになります。 | + | |
=== エレメントファイル === | === エレメントファイル === | ||
− | 単に「エレメント」と呼ばれることもあるこのファイルは、レイアウトテンプレート内から呼び出すことの出来る、切り分けられたHTMLの各パーツを指します。 | + | :単に「エレメント」と呼ばれることもあるこのファイルは、レイアウトテンプレート内から呼び出すことの出来る、切り分けられたHTMLの各パーツを指します。 |
− | この機能によって、レイアウトテンプレート内に記述するHTMLの一部(例えばページ上部のロゴ部分やグローバルメニュー)だけを別のファイルに記述しておき、それをエレメントファイルとしてレイアウトテンプレート内で呼び出すと、エレメントファイルの内容が、呼び出した箇所に出力されることになります。つまり、レイアウトテンプレートがページ全体のHTMLを担当するのに対し、エレメントファイルは切り分けられた個別のパーツ部分を担当するイメージです。個別のパーツなので、エレメントファイルを使わなくてもテーマの制作は可能ですが、切り分けて保存・編集することで、ソースの可視性・保守性が高まります。 | + | :この機能によって、レイアウトテンプレート内に記述するHTMLの一部(例えばページ上部のロゴ部分やグローバルメニュー)だけを別のファイルに記述しておき、それをエレメントファイルとしてレイアウトテンプレート内で呼び出すと、エレメントファイルの内容が、呼び出した箇所に出力されることになります。つまり、レイアウトテンプレートがページ全体のHTMLを担当するのに対し、エレメントファイルは切り分けられた個別のパーツ部分を担当するイメージです。個別のパーツなので、エレメントファイルを使わなくてもテーマの制作は可能ですが、切り分けて保存・編集することで、ソースの可視性・保守性が高まります。 |
− | エレメントファイルは以下の場所に設置し、特に命名規則はありません。ただし、ヘッダ部分のファイル名にはheader.phpを、フッター部分にはfooter.phpを使えば、それらのエレメントを特別な関数で呼び出すことが出来るようになります。 | + | :エレメントファイルは以下の場所に設置し、特に命名規則はありません。ただし、ヘッダ部分のファイル名にはheader.phpを、フッター部分にはfooter.phpを使えば、それらのエレメントを特別な関数で呼び出すことが出来るようになります。 |
− | + | :<pre>/app/webroot/themed/(テーマのフォルダ)/elements/</pre> | |
− | <pre>/app/webroot/ | + | |
− | + | :エレメントの呼び出しについては[[関数リファレンス]]の[[エレメントファイルを呼び出す]]を参照してください。 | |
− | + | ||
− | |||
=== コンテンツテンプレート === | === コンテンツテンプレート === | ||
− | レイアウトテンプレートとよく似た名前のこのテンプレートは、固定ページカテゴリやブログプラグインやメールプラグインなど、限られたコンテンツの中で、その機能に合わせたデザイン・レイアウトを設定する為に用いられます。 | + | :レイアウトテンプレートとよく似た名前のこのテンプレートは、固定ページカテゴリやブログプラグインやメールプラグインなど、限られたコンテンツの中で、その機能に合わせたデザイン・レイアウトを設定する為に用いられます。 |
+ | |||
====固定ページカテゴリのコンテンツテンプレート==== | ====固定ページカテゴリのコンテンツテンプレート==== | ||
− | [[固定ページ管理#固定ページカテゴリ|固定ページカテゴリ]]のコンテンツテンプレートは、以下の場所にテンプレートとなるファイルを設置することで、固定ページカテゴリの作成・編集時に選択出来るようになります。 | + | :[[固定ページ管理#固定ページカテゴリ|固定ページカテゴリ]]のコンテンツテンプレートは、以下の場所にテンプレートとなるファイルを設置することで、固定ページカテゴリの作成・編集時に選択出来るようになります。 |
+ | :<pre>/app/webroot/themed/(テーマのフォルダ)/pages/templetes/</pre> | ||
+ | :このテンプレートファイルはPHPファイルになり、<code>$bcPage->content()</code>と記述した場所にページの内容が出力されます。 | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
==== プラグインのコンテンツテンプレート ==== | ==== プラグインのコンテンツテンプレート ==== | ||
− | 例えばブログプラグインでの例を考えてみましょう。ブログプラグインが提供するブログコンテンツには以下の4つの画面の利用が予定されています。 | + | :例えばブログプラグインでの例を考えてみましょう。ブログプラグインが提供するブログコンテンツには以下の4つの画面の利用が予定されています。 |
:#ブログのトップページ | :#ブログのトップページ | ||
行59: | 行49: | ||
:#サイトのトップページなど、他のページから記事の一覧を出力する部分。 | :#サイトのトップページなど、他のページから記事の一覧を出力する部分。 | ||
− | 上記の4つの画面のデザイン・レイアウトは、以下の4つのファイルが担当しています。 | + | :上記の4つの画面のデザイン・レイアウトは、以下の4つのファイルが担当しています。 |
:#index.php | :#index.php | ||
行66: | 行56: | ||
:#posts.php | :#posts.php | ||
− | さて、baserCMSのブログプラグインには複数のブログを同時に設置できる機能が搭載されています。そのため、例えば「社長ブログ」と「スタッフブログ」の両方を、1つのサイト内に設置する事が可能です。この時に、もしも「社長ブログ」と「スタッフブログ」とで、異なるデザインを適用する必要が出てきたとしたらどうでしょうか。上記の4つのファイルが1種類しかないと、どのブログでも同じ画面デザインを使用することになってしまいます。 | + | :さて、baserCMSのブログプラグインには複数のブログを同時に設置できる機能が搭載されています。そのため、例えば「社長ブログ」と「スタッフブログ」の両方を、1つのサイト内に設置する事が可能です。この時に、もしも「社長ブログ」と「スタッフブログ」とで、異なるデザインを適用する必要が出てきたとしたらどうでしょうか。上記の4つのファイルが1種類しかないと、どのブログでも同じ画面デザインを使用することになってしまいます。 |
− | そこでコンテンツテンプレートの出番です。上述の4つのファイルを1つのコンテンツテンプレートとしてフォルダにまとめ、そしたフォルダを複数用意する事で、管理画面からどのコンテンツテンプレートを利用するかの選択をします。つまり、レイアウトテンプレートや固定ページカテゴリのコンテンツテンプレートが、ファイル単位であったのと事なり、ブログやメールプラグインのコンテンツテンプレートは、複数のファイルを1つにまとめたフォルダ単位で構成されているのです。 | + | :そこでコンテンツテンプレートの出番です。上述の4つのファイルを1つのコンテンツテンプレートとしてフォルダにまとめ、そしたフォルダを複数用意する事で、管理画面からどのコンテンツテンプレートを利用するかの選択をします。つまり、レイアウトテンプレートや固定ページカテゴリのコンテンツテンプレートが、ファイル単位であったのと事なり、ブログやメールプラグインのコンテンツテンプレートは、複数のファイルを1つにまとめたフォルダ単位で構成されているのです。 |
+ | |||
+ | |||
+ | |||
=== テーマブートストラップ=== | === テーマブートストラップ=== | ||
− | + | :テーマブートストラップとは、そのテーマ内で利用する独自の関数や定数を定義したり、環境変数を再設定するなど出来る仕組みのことです。関数や定数の定義については通常のPHP構文で記述します。環境変数の再設定については、cakePHPの[http://book.cakephp.org/1.2/en/The-Manual/Developing-with-CakePHP/Configuration.html Configreクラス]を利用します。 | |
<blockquote> | <blockquote> | ||
行81: | 行74: | ||
</blockquote> | </blockquote> | ||
− | 上記のようにコントローラーが呼び出される前に設定を読み込むことで、この機能を実現しています。具体的な設定は以下のファイルを作成して、そこに記述を行えば、自動的に読み込まれるようになります。 | + | :上記のようにコントローラーが呼び出される前に設定を読み込むことで、この機能を実現しています。具体的な設定は以下のファイルを作成して、そこに記述を行えば、自動的に読み込まれるようになります。 |
− | + | :<pre>/app/webroot/themed/(テーマフォルダ)/config/bootstrap.php</pre> | |
− | + | ||
− | + | ||
− | + | ||
− | <pre>/app/webroot/themed/(テーマフォルダ)/config/bootstrap.php</pre> | + | |
+ | |||
=== テーマヘルパー === | === テーマヘルパー === | ||
− | テーマ内で使用できる[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 ヘルパー]です。ヘルパーはサイトの表示部分に関して、特定の機能を持った関数で、以下のフォルダに設置します。 |
− | + | :<pre>/app/webroot/themed/(テーマフォルダ)/helpers/</pre> | |
− | + | :テーマヘルパーは以下のように「AppHelper」を継承して作成します。例えばテーマ「hoge」で使うテーマヘルパーは、 | |
− | + | :<pre>class HogeHelper extends AppHelper {</pre> | |
− | + | :としてHogeHelperクラスを作成し、その中に個別のヘルパーを記述していきます。こうして作られた個別のヘルパーは、レイアウトテンプレートやエレメントファイル、固定ページなどから呼び出すことが出来ます。例えば、 | |
− | + | :<pre>function baserwiki(){}</pre> | |
− | <pre>/app/webroot/themed/(テーマフォルダ)/helpers/</pre> | + | :というヘルパーを呼び出すには、 |
− | + | :<pre><?php $hoge->baserwiki(); ?></pre> | |
− | + | :とします。 | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | <pre>class HogeHelper extends AppHelper {</pre> | + | |
− | + | ||
− | + | ||
− | + | ||
− | <pre>function | + | |
− | というヘルパーを呼び出すには、 | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | <pre><?php $hoge-> | + | |
− | とします。 | + | |
− | |||
=== テーマフック === | === テーマフック === | ||
− | + | :フックとは、baserCMSの処理の途中で別の処理を割り込ませる機能で、テーマで使うフックでは、以下の処理の途中で別の処理を割り込ませることができます。 | |
− | + | ||
− | フックとは、baserCMSの処理の途中で別の処理を割り込ませる機能で、テーマで使うフックでは、以下の処理の途中で別の処理を割り込ませることができます。 | + | |
:*beforeRender | :*beforeRender | ||
行141: | 行111: | ||
:*baserFooter | :*baserFooter | ||
− | 実際にテーマフックを利用する為には、テーマのフォルダの「[[テーマの構造#helpersフォルダ|helpersフォルダ]]」の中に「(テーマ名)_hook.php」というファイルを作り、その中に処理を記述します。例えば、テーマ名が「hoge」であるならば、ファイル名と設置場所は以下のようになります。 | + | :実際にテーマフックを利用する為には、テーマのフォルダの「[[テーマの構造#helpersフォルダ|helpersフォルダ]]」の中に「(テーマ名)_hook.php」というファイルを作り、その中に処理を記述します。例えば、テーマ名が「hoge」であるならば、ファイル名と設置場所は以下のようになります。 |
− | <pre>/app/webroot/themed/hoge/helpers/hoge_hook.php</pre> | + | :<pre>/app/webroot/themed/hoge/helpers/hoge_hook.php</pre> |
− | このファイルはAppHelperクラスを継承し、クラス名は「テーマ名HookHelper」になります。例えばテーマ名が「hoge」であるならば、以下の様にクラスを作成します。 | + | :このファイルはAppHelperクラスを継承し、クラス名は「テーマ名HookHelper」になります。例えばテーマ名が「hoge」であるならば、以下の様にクラスを作成します。 |
− | <pre>class HogeHookHelper extends AppHelper{</pre> | + | :<pre>class HogeHookHelper extends AppHelper{</pre> |
− | また、どの処理に割り込ませるのかを「$registerHooks」に配列で指定します。例えば「afterLayout」と「afterFormEnd」を使用したければ | + | :また、どの処理に割り込ませるのかを「$registerHooks」に配列で指定します。例えば「afterLayout」と「afterFormEnd」を使用したければ |
− | <pre>var $registerHooks = array('afterLayout','afterFormEnd');</pre> | + | :<pre>var $registerHooks = array('afterLayout','afterFormEnd');</pre> |
− | とします。その上で、以下のように利用します。 | + | :とします。その上で、以下のように利用します。 |
− | <pre>function afterLayout() {(~処理を記述~)}</pre> | + | :<pre>function afterLayout() {(~処理を記述~)}</pre> |
行164: | 行134: | ||
ウィジェットにはbaserCMSが標準で用意しているものと、プラグインのインストールで利用できるようになるものがあります。 | ウィジェットにはbaserCMSが標準で用意しているものと、プラグインのインストールで利用できるようになるものがあります。 | ||
− | |||
− | |||
− | |||
− |