concrete5 シングルページのカスタマイズ方法
このチュートリアルでは、concrete5 以下のようなシングルページ(システムページ)
- ログイン
- メンテナンスページ
- 404ページ(「ページが見つかりません」エラーページ)
- メンバーページ
- プロフィールページ
- ユーザー登録ページ
のテーマの変更などカスタマイズ方法を紹介します。
カスタマイズ方法には、シングルページに適用されているテーマを変更する方法と、シングルページ内のメッセージ自体を修正する方法の2つの方法があります。
なお、ここで行うカスタマイズは、 concrete5 テーマ作成方法を理解し、HTMLのコードを見て、その結果を頭の中で再現出来る力が必要です。
このチュートリアルは5.3.3.1をベースに書かれています。
シングルページ表示の仕組み
はじめに、concrete5 シングルページがどのように表示されているかを簡単に説明します。
concrete5 システムページは、シングルページという方法で
/concrete/theme/core/concrete.php
というデフォルトテーマファイル内の
<?php print $innerContent; ?>
という部分に
/concrete/single_pages/
フォルダー内にあるPHPファイルの結果を表示しています(※)
(※ MVCモデルの「View」に当たるファイルがここに保存されています。詳しくは開発者向けドキュメント「concrete5 のシステム基本構造」ページに書かれています)
シングルページのテーマを変更する方法
concrete5 デフォルトの設定では、各シングルページ(システムページ)用のテーマとして、システムのテーマを使用するように設定されています。
しかし、「site_theme_path.php」で、任意のテーマに変えることが出来ます。
1. テーマ内の「view.php」を確認
テーマ内に「view.php」というファイルが存在し、その中に
<?php print $innerContent; ?>
というコードが書かれていることを確認して下さい。
この部分に、シングルページの内容が表示されます。
反対に、このコードが「view.php」の中に書かれていないと、システムページの表示がされないことになりますので気をつけてください。
2. set_theme_path.php の変更
適用したいテーマの「view.php」を作成した後、
/config/set_theme_path.php
ファイルを開くと以下のようなPHPテキストが現れます。
Filename: /config/site_theme_paths.php
<?php
defined('C5_EXECUTE') or die(_("Access Denied."));
/*
you can override system layouts here - but we're not going to by default
For example: if you would like to theme your login page with the Green Salad theme,
you would uncomment the lines below and change the second argument of setThemeByPath
to be the handle of the the Green Salad theme "greensalad"
*/
/*
$v = View::getInstance();
$v->setThemeByPath('/login', "yourtheme");
// $v->setThemeByPath('/403', "yourtheme");
// $v->setThemeByPath('/register', "yourtheme");
// $v->setThemeByPath('/dashboard', "yourtheme");
*/
設定を有効にするには、先ず、15行目の「/*」、24行目の「*/」を削除しコメント行指定を解除。
そして、希望のシングルページに、希望のテーマを使用する設定を行います。
例えば、19行目は、ログインページのテーマを指定している箇所です。
引用マークで囲まれている「yourtheme」を自分のテーマのフォルダー名に変更して下さい。
例: 自分のテーマが保存されているフォルダー名が「concrete5」であった場合
$v->setThemeByPath('/login', "yourtheme");
↓
$v->setThemeByPath('/login', "concrete5");
と変更することにより、ログインページは、システムテーマの代わりに「concrete5」テーマが適用されるようになります。
20行目〜23行目は、他のシングルページの例です。「//」という記号が文頭に記述され、コメントとして無効になっています。これらの該当シングルページも変更されたい場合は、この「//」を削除し「yourtheme」を自分のテーマのフォルダー名に変更して下さい。
具体的には、特定ページパスのシングルページに、特定のテーマを割り当てると言う指定をしています。
特定ページパスは「管理画面」-「ページとテーマ」-「シングルページ」より確認出来ます。テーマを独自のテーマに変更されたい場合は、シングルページの管理画面よりそのパスを確認し、この「site_theme_path.php」に指定すると言う作業を行います。
site_theme_path.php 設定早見表
concrete5で、一般的にカスタム設定したいページの一覧です。
| ログイン画面 | $v->setThemeByPath('/login', "テーマフォルダー名"); |
| 404ページ(ページ存在せず) | $v->setThemeByPath('/page_not_found', "テーマフォルダー名"); |
| アクセス禁止 | $v->setThemeByPath('/page_forbidden', "テーマフォルダー名"); |
| メンテナンスモード | $v->setThemeByPath('/maintenance_mode', "テーマフォルダー名"); |
| ユーザー登録ページ | $v->setThemeByPath('/register', "テーマフォルダー名"); |
| 管理ページ | $v->setThemeByPath('/dashboard', "テーマフォルダー名"); |
site_theme_path.php適用サンプル
以下に管理画面以外のシステムページに「concrete5」というテーマを当てはめた例を掲載します。以下のコードを、そのまま自分のサイトの「site_theme_path.php」に、テーマ名を変更し、まるごと置き換えることも可能です。
Filename: /config/site_theme_paths.php
<?php
defined('C5_EXECUTE') or die(_("Access Denied."));
$v = View::getInstance();
$v->setThemeByPath('/login', "concrete5");
$v->setThemeByPath('/page_not_found', "concrete5");
$v->setThemeByPath('/page_forbidden', "concrete5");
$v->setThemeByPath('/maintenance_mode', "concrete5");
$v->setThemeByPath('/register', "concrete5");
//$v->setThemeByPath('/dashboard', "yourtheme");
/*
管理画面以外のシステムページに「concrete5」テーマが
適用されるように設定した例です
*/
?>
*【コードのコピーの仕方】コードブロック右上にマウスカーソルを持って行くと、2枚の白い紙が重なったアイコンが表示されます。そこをクリックすると、上記コードがパソコンのクリップボードにコピーされます。
シングルページ内の表示を改変する方法
以上の方法は、ページの大まかな外観を決める、テーマを変更しているに過ぎません。ログインページ内のメッセージの内容を直接編集したい場合は、シングルページのファイル自身の編集が必要になります。
なお、これには、HTMLの知識と、PHPの初心者以上の知識が必要になります。また、日本語を書き込むときは、「UTF-8」形式で保存することを忘れないで下さい。
1. /concrete/single_pages/ 内の該当ファイルをコピー
既存のシステムファイルは
/concrete/single_pages/
内の保存されています。内容に変更を加えたい場合は、該当ファイルを
/single_pages/
ディレクトリーにコピーしてください。こうすることにより、修正が失敗したとしても、コピー先のファイルを削除するだけでデフォルトの状態に戻ることが出来ます。
2. ファイルの内容を変更
Single_Pages内のファイルは、このページのはじめに説明したように、テーマ内の「view.php」中に
<?php print $innerContent; ?>
が指定された部分に出力されるものです。また、concrete5 デフォルトのシステムページでは、多言語化の為に、gettextという仕組みを使い、英語のメッセージに日本語を含む各言語ののメッセージを割り当てています。
サイトのシステムメッセージを訪問者によって変更する多言語化の必要がなければ、直接日本語を含んだHTMLコードを埋め込まれても構いません。
3. サンプル:「404(ページが見つかりません)」ページ
以下に、404ページを具体的に変更した例を掲載します。
a. ファイルのコピー
/concrete/single_pages/page_not_found.php
ファイルを
/single_pages/page_not_found.php
にコピーします
b. 内容を変更
例えばサイトをconcrete5にリニューアルしたので、その文面を追加したいとします。(ここはHTMLの知識が必要です。)
Filename: /single_pages/page_not_found.php
<?php defined('C5_EXECUTE') or die(_("Access Denied.")); ?>
<h1 class="error"><?php echo t('Page Not Found')?></h1>
<?php echo t('No page could be found at this address.')?>
<?php // ここから変更を加えた部分 ?>
<p>ご迷惑をおかけします</p>
<p>当サイトは <strong>2010年2月12日にリニューアルオープン</strong>し、ページが移動しました</p>
<p><a href="<?php echo BASE_URL ?>/">こちらのトップページから</a>アクセスし直して下さいませ。</p>
<?php // ここまでが変更を加えた部分 ?>
<?php if (is_object($c)) { ?>
<br/><br/>
<?php $a = new Area("Main"); $a->display($c); ?>
<?php } ?>
<br/><br/>
<a href="<?php echo DIR_REL?>/"><?php echo t('Back to Home')?></a>.
というふうに、機械的なメッセージのみの404ページから、サイト運営者の気持ちを一言追加した404ページにすることができました。
なお、このシングルページは、HTMLを直接編集し、FTPなどでサーバー上のファイルを更新する必要があり、ブラウザー上だけでの編集は、5.3.3.1時点では出来ないことをご了承下さい。

Tweet
Check