Concrete5(5.6.1.2) 日本語版で Bootstrap 3 を使ってみた際のメモ。
すでに作成してある HTML ファイル(実際には WordPress 用の index.php ファイル)を元に書き換えて作成。一応機能しているように見えるが、正しい方法かどうかは定かではない。
Bootstrap C5 An elegant theme? for concrete5.
以下はフォルダ構成。(default.php, full.php, left_sidebar.php, view.php は後ほど作成)
元のHTMLファイルのヘッダ部分に concrete5 用の PHP コードを記述し、header.php として「elements」ディレクトリーに保存する。Bootstrap で使用する CSS ファイル等(bootstrap.css,font-awesome.min.css,bootstrap-glyphicons.css) もここで読み込む。
<?php defined('C5_EXECUTE') or die("Access Denied."); ?> //① <!DOCTYPE html> <html lang="<?php echo LANGUAGE?>"> <head> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="<?php echo $this->getThemePath(); ?>/bs/css/bootstrap.min.css" /> //② <link href="//netdna.bootstrapcdn.com/font-awesome/3.2.1/css/font-awesome.min.css" rel="stylesheet"> <link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-glyphicons.css" rel="stylesheet"> <link rel="stylesheet" media="screen" type="text/css" href="<?php echo $this->getStyleSheet('main.css')?>" /> //③ <link rel="stylesheet" media="screen" type="text/css" href="<?php echo $this->getStyleSheet('typography.css')?>" /> //③ <?php Loader::element('header_required'); ?> //④ </head> <body> <!--start container --> <div id="container"> <div id="header"> <h1>WDL</h1> <div id="header-nav" class="clear"> <!--Bootstrap の Navbar --> <nav class="navbar navbar-default" role="navigation"> <!-- Brand and toggle get grouped for better mobile display --> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="https://www.webdesignleaves.com/"><i class="icon-home"></i> WDL</a> </div> <!-- Collect the nav links, forms, and other content for toggling --> <div class="collapse navbar-collapse navbar-ex1-collapse"> <?php //⑤ $a = new GlobalArea('Header Nav'); //$a->setCustomTemplate('autonav', 'view.php'); $a->display(); ?> </div> <!-- /.navbar-collapse --> </nav> </div> <!-- end of #header-nav--> </div> <!-- end of #header -->
① concrete5 のプログラムでないと、ファイルを直接開けないようにするための記述。
(defined()は、指定した名前の定数が存在するかどうかを調べ、存在すればTRUE、そうでなければFALSEを返す)
② $this->getThemePath():テーマが保存されているパスを出力
③ $this->getStyleSheet:スタイルシートの読み込みに使用
④ Loader::element(‘header_required’) はconcrete5 が使用する Javascript や CSS ファイル、セッション情報やその他の設定を読み込ませるための記述で、ログインした際に編集ツールバーを表示させるために必要。
⑤ concrete5 が編集出来るエリアを指定(編集可能エリア(ブロック挿入可能部)を定義したphpコード)’Header Nav’は編集の際に表示されるエリアの名前(例:「Header Navに追加」などと表示される)
元のHTMLファイルのフッター部分に concrete5用のPHPコードを記述し、footer.phpとして「elements」ディレクトリーに保存する。(この部分で Bootstrap の JavaScript ファイル「bootstrap.min.js」を読み込む。)
注意
Bootstrap や 独自の jQuery のスクリプトのために「jQuery」が必要になるが、Concrete5 本体が jQuery を使っているので、さらに jQuery を読み込むとうまく動かないので注意が必要。(jQuery の読み込みは不要)
<?php defined('C5_EXECUTE') or die("Access Denied."); ?> <div class="clear"></div> <div id="footer"> <div id="footer-inner"> <p class="footer-copyright">©<?php echo date('Y')?> <?php echo SITE?>.</p> <p class="footer-tag-line"> <?php echo t('Built with <a href="http://www.concrete5.org/" target="_blank">concrete5 - an open source CMS</a>')?> </p> </div> </div> <div class="tothetop"> <a href="#"><i class="icon-arrow-up"></i> 先頭へ</a> </div> <!--[if lt IE 9]> <script src="<?php echo $this->getThemePath(); ?>/js/html5shiv-printshiv.js" type="text/javascript"> </script> <script src="<?php echo $this->getThemePath(); ?>/js/respond.min.js" type="text/javascript"> </script> <![endif]--> <script src="<?php echo $this->getThemePath(); ?>/bs/js/bootstrap.min.js"></script> <script src="<?php echo $this->getThemePath(); ?>/js/base.js"></script> <?php Loader::element('footer_required'); ?> //⑥ </body></html>
⑥ ツールバーやアクセス解析コードを埋め込むためのコード
ページテンプレート(テーマテンプレート)の default.php を作成。
元のHTMLファイルのコンテンツ部分に Concrete5 用のPHPコード(header.php の読み込み、footer.phpの読み込みを含む)を記述し、default.php として description.txt、thumbnail.pngと同じディレクトリーに保存する。レスポンシブグリッドを使用するため、Bootstrap のクラス(col-xs-12 col-sm-8など)を div 要素に指定。
<?php defined('C5_EXECUTE') or die("Access Denied."); $this->inc('elements/header.php'); ?> //⑦ <div class="row"> <div class="col-xs-12 col-sm-8"> <div id="contents"> <?php //⑧ $a = new Area('Main'); $a->display($c); ?> </div> </div> <div class="col-xs-12 col-sm-4"> <?php //⑨ $a = new Area('Sidebar'); $a->display($c); ?> </div> <!-- end of .col-xs-12 col-md-4 --> </div> <!-- end of .row --> </div> <!-- end of #container --> <?php $this->inc('elements/footer.php'); ?> //⑩
⑦ 「elements/header.php」のファイルをここに含めるという命令で、ヘッダーの読み込み
⑧ concrete5 が編集出来るエリアを指定(編集可能エリア(ブロック挿入可能部)を定義したphpコード)’Main’は編集の際に表示されるエリアの名前(例:「Mainに追加」などと表示される)
⑨ concrete5 が編集出来るエリアを指定(編集可能エリア(ブロック挿入可能部)を定義したphpコード)’Sidebar’は編集の際に表示されるエリアの名前(例:「Sidebarに追加」などと表示される)
⑩ 「elements/footer.php」を読み込むという命令文(フッターの読み込み)
default.php と同じようにして、left_sidebar.php, full.php を作成。
コア(concrete)のブロックのファイルを編集するのは良くない(してはいけない)ので、コアのブロックを「blocks」ディレクトリにコピーしてそのファイルを編集する。今回はナビゲーションバーと検索に関して Bootstrap の機能が使えるようにしたいので、以下のブロックの中のファイルを編集。
autonav/view.php の以下の ul 要素にクラス「navbar-nav」を追加
echo '<ul class="nav navbar-nav">'; //opens the top-level menu
search/view.php の form 要素内の input 要素を「<div class=”form-group”>」で囲み、以下の要素にそれぞれ「form-control」「btn btn-primary」のクラスを追加。
<input name="query" type="text" value="<?php echo htmlentities($query, ENT_COMPAT, APP_CHARSET)?>" class="ccm-search-block-text form-control" /> <input name="submit" type="submit" value="<?php echo $buttonText?>" class="ccm-search-block-submit btn btn-primary" />
管理画面にログインして、「ページとテーマ」を開くと「インストール可能なテーマ」として、保存したテーマが表示されるので「インストール」をクリック。
次のような画面が表示されるので「テーマ一覧に戻る」をクリックして、テーマ一覧に戻り、必要であれば「プレビュー」で確認する。
「有効」をクリックすると「このテーマをお使いのサイトのすべてのページに適用しますか?」と聞かれるので「はい」をクリックすると、そのテーマがサイト全体に反映される。サイトに戻るには左上の「サイトに戻る」をクリック。
作成したテーマ
一応 Bootstrap のレスポンシブグリッドとナビゲーションは機能している。