チュートリアルを通じて、baserCMSが提供する機能に触れながら新しくテーマを作成しましょう。
テーマの作成には、基礎的なHTML、CSS、そして、少しのPHPの知識を要します。
baserCMSのテンプレートは上の図のように構成されています。
まずは、baserCMSをインストールし、テーマの制作を開始できる状態にしてください。
/plugins
ディレクトリに任意の名前のフォルダを作成します。
ここでは「CorpTheme」というテーマ名で進めます。
チュートリアルではこのフォルダを「テーマフォルダ」と呼びます。
{baserCMSの設置フォルダ}/plugins/CorpTheme/
テーマフォルダの中に以下の構成となるようにフォルダ・ファイルを作成します。
ファイルの中身は次のセクションで書いていくので空で構いません。
※ screenshot.pngは現時点でなくて構いません
baserCMSでは、テーマもプラグインのひとつとして動作します。
プラグインの動作のために必要なおまじないとして、以下の内容でプラグインクラス を作成します。
<?php
// CorpTheme/src/Plugin.php
namespace CorpTheme;
use BaserCore\BcPlugin;
class Plugin extends BcPlugin{}
baserCMSのコアに、プラグインの情報を認識させるために config ファイルを作成します。
以下の内容を参考に作成します。
<?php
// CorpTheme/config.php
return [
'type' => 'Theme',
'title' => 'コーポレートテーマ',
'description' => 'コーポレートサイトに適したテーマです。',
'author' => 'baserCMS User Community',
'url' => 'https://basercms.net',
'installMessage' => ''
];
Theme
を記載してください。そうすることでテーマ管理で認識できます。baserCMS5は、CakePHP4に対応することにより、アーキテクチャーも大幅に変更となり、テーマやプラグインの作り方も変更となっています。詳細についてはこちらをご覧ください。
レイアウトテンプレートとは、Webページの枠組みを記述するファイルです。
全ての Webページでの共通部分を含める事でメンテナンス性を高める事ができます。
このファイルを変更するだけで、あらかじめ用意されているブログや、メールフォームのレイアウトも変更する事ができます。
以下の内容で CorpTheme/templates/layout/default.php
を作成します。
これからこのファイルに、baserCMS用のタグ「baserタグ」を組み込んでいきます。
<!DOCTYPE html>
<html>
<head>
<title>タイトルを記述</title>
<meta name="description" content="説明文を記述" />
<meta name="keywords" content="キーワードを記述" />
</head>
<body>
<header>
ヘッダー内容を記述
</header>
<div id="Wrap">
<div id="contensBody">
コンテンツ内容を記述
</div>
<div id="Sidebar">
メニュー等を記述
</div>
</div>
<foolter>
フッター内容を記述
</foolter>
</body>
</html>
baserCMSでは、CMS内で管理しているコンテンツを動的に表示するために「baserタグ」を提供しています。
テーマのテンプレート上で「baserタグ」を利用することでき、次のような形で利用します。
タイトルタグを出力する例
<?php $this->BcBaser->title() ?>
baserタグには、大きく3つの系統があります。
$this->BcBaser->getTitle()
$this->BcBaser->title()
$this->BcBaser->isHome()
「baserタグ」についてもっと詳しく知りたい場合は、テーマ関数リファレンス をご覧ください。
CorpTheme/templates/layout/default.php
にbaserタグを埋め込んでいきます。
ファイルの中身を以下に書き換えてください。
<!DOCTYPE html>
<html>
<head>
<?php $this->BcBaser->title() ?>
<?php $this->BcBaser->metaDescription() ?>
<?php $this->BcBaser->metaKeywords() ?>
<?php $this->BcBaser->scripts() ?>
</head>
<body>
<?php $this->BcBaser->func() ?>
<header>
ヘッダー内容を記述
</header>
<div id="Wrap">
<div id="contensBody">
<?php $this->BcBaser->content() ?>
<?php $this->BcBaser->contentsNavi() ?>
</div>
<div id="Sidebar">
<?php $this->BcBaser->widgetArea() ?>
</div>
</div>
<footer>
フッター内容を記述
</footer>
</body>
</html>
<?php $this->BcBaser->title() ?>
メタタグのtitleを出力します。
次のように展開されます。
<title>コンテンツタイトル | カテゴリ| サイト名</title>
<?php $this->BcBaser->metaDescription() ?>
ページ説明文用のメタタグを出力します。
次のように展開されます。
<meta name="description" content="baserCMS は、CakePHPを利用し、環境準備の素早さに重点を置いた基本開発支援プロジェクトです。WEBサイトに最低限必要となるプラグイン、そしてそのプラグインを組み込みやすい管理画面、認証付きのメンバーマイページを最初から装備しています。">
<?php $this->BcBaser->metaKeywords() ?>
キーワードメタタグを出力します。
次のように展開されます。
<meta name="keywords" content="baser,CMS,コンテンツマネジメントシステム,開発支援">
閉じヘッダータグの直前に配置します。コンテンツ内で定義したスクリプトやCSS、ツールバー表示用のスクリプトやCSS、そして、管理システムのシステム基本設定で設定したヘッダー埋め込みスクリプトなどを出力します。おまじないと思ってください。
<?php $this->BcBaser->scripts() ?>
ツールバー用のHTMLや、管理システムのシステム基本設定で設定したフッター埋め込みスクリプト等を出力します。こちらもおまじないと思ってください。
なお、ツールバーを表示するには、scripts タグと func タグの両方の定義が必要です。
<?php $this->BcBaser->func() ?>
CMSで登録したコンテンツデータを出力します。
<?php $this->BcBaser->content() ?>
ページの前後ナビゲーションを出力します。
<?php $this->BcBaser->contentsNavi() ?>
管理システムで設定したウィジェットエリアを出力します。
<?php $this->BcBaser->widgetArea() ?>
baserCMSでは、他にも多数のbaserタグを提供しています。
是非、関数リファレンスを御覧ください。
これまででbaserタグを利用して、動的に変化する文章などを表示することができました。
ヘッダーやフッターのように、別のレイアウトテンプレートからも同じテンプレートを共通で利用するケースがあります。
baserCMSでは、エレメントと呼ばれる共通部品を作成・利用できる機能を提供しています。
CorpTheme/templates/
に element
フォルダを作成し、その中に header.php
と footer.php
を作成します。
次の内容でヘッダーファイルを作成します。
// CorpTheme/templates/element/header.php
<header>
<ul>
<li><a href="/">トップページ</a></li>
</ul>
</header>
次の内容でフッターファイルを作成します。
// CorpTheme/templates/element/footer.php
<footer>
<p> Copyright(C)
<?php $this->BcBaser->copyYear(2022) ?>
baserCMS Users Community All rights Reserved.
</p>
</footer>
$this->BcBaser->copyYear()
はコピーライト用の年を出力するbaserタグです。
開始年を指定すると 2022 - 2023
のように出力されます。
レイアウトにbaserタグを使ってエレメントを埋め込みます。
ファイルの中身を以下に書き換えてください。
// CorpTheme/templates/layout/default.php
<!DOCTYPE html>
<html>
<head>
<?php $this->BcBaser->title() ?>
<?php $this->BcBaser->metaDescription() ?>
<?php $this->BcBaser->metaKeywords() ?>
</head>
<body>
<?php $this->BcBaser->func() ?>
<?php $this->BcBaser->header() ?>
<div id="Wrap">
<div id="contensBody">
<?php $this->BcBaser->content() ?>
<?php $this->BcBaser->contentsNavi() ?>
</div>
<div id="Sidebar">
<?php $this->BcBaser->widgetArea() ?>
</div>
</div>
<?php $this->BcBaser->footer() ?>
</body>
</html>
ヘッダータグは、エレメントフォルダ内の header.php
を読み込みます。
<?php $this->BcBaser->header() ?>
フッタータグは、エレメントフォルダ内の footer.php
を読み込みます。
<?php $this->BcBaser->footer() ?>
その他のエレメントを作成し、読み込む場合は、element
関数を利用します。
次の場合、Corptheme/templates/element/sidebar.php
を読み込みます。
$this->BcBaser->element('sidebar')
これまで作成してきたテーマを確認しましょう。
baserCMSの管理画面にログインし、テーマ管理
を選択すると、サンプルテーマの他に今回作成した「コーポレートテーマ(CorpTheme)」が表示されています。
対象テーマ下部のチェックボタンをクリックすると、「テーマを適用します。よろしいですか?」とポップアップで表示されるので「OK」をクリックします。
テーマが適用されると、「現在のテーマ」が「コーポレートテーマ(CorpTheme)」に変わっていることが確認できます。
管理画面左上の「サイト表示」をクリックし、フロントページを確認します。
CSSの適用されていない画面が表示されていますか?そうであれば作成したテーマに切り替わっています。
あとは、好みに応じて、CSSなどを配置して適用します。
CSSや画像、JavaScript等のアセットファイルは、テーマフォルダの webroot
フォルダ配下に配置します。
これらは次のように呼び出すことができます。
<?php $this->BcBaser->css('example.css') ?>
<?php $this->BcBaser->js('example.js') ?>
<?php $this->BcBaser->img('example.png') ?>
HTMLなどの静的なファイルは、ドキュメントルート直下の webroot
フォルダに配置します。
例えば test.html
ファイルを webroot
フォルダに配置します。
/webroot/test.html
次のURLで参照することができます。
https://your-domain/test.html
チュートリアルはこれで終了です。お疲れさまでした!
作ったテーマは baserマーケットで配布・販売することができます。
詳しくは プラグイン・テーマを配布・販売する をご覧ください。