baserCMS3を扱う上でのちょっとしたポイント

やあどうも。ぼくです・ω・
昨年のbaserCMS Advent Calendar 2012に続き、今年もbaserCMS Advent Calendar 2013が始まりました。始まっちゃいました。
さてその初日です。=[ 'ω' ] トウフー

baserCMS3のご紹介

baserCMSを知らない方もいると思うんで、ここで紹介しておきますん。

baserCMS(ベーサーシーエムエス)とは、「コーポレートサイトにちょうどいい」をコンセプトとし、オープンソースフレームワーク「CakePHP」をベースとし、環境準備の素早さに重点を置いた基本制作支援プロジェクトから生まれた国産CMS(コンテンツマネージメントシステム)です。

こんな感じです。

  1. サーバにインストールする
  2. ページを管理システムで編集できる
  3. ブログを書いて更新できる&しかも複数ラクラク設置できる
  4. メールフォームを設置できる&しかも複数ラクに設置できる&入力欄も変更できる
  5. プラグインを使って簡単に追加機能を行う事ができる
  6. (開発者向け)CakePHPの流儀に則って簡単に機能拡張ができる

普段何気に使ってるけど、改めて眺めてみるとハナヂ出ますね。素敵。
作るの楽しいんですよプラグイン。作るの楽しいんですよ?プラグイン。
でも今回の記事では、プラグインについては書きませんけど。

そして、つい先日CakePHP2系に対応したbaserCMS3が遂に登場しました。
baserCMS3正式版リリース! | baser CMS - 国産オープンソース!フリー(無料)で『コーポレートサイトにちょうどいいCMS』
サイト運営者向け、テーマ制作者向け、プラグイン開発者向け、ホスティングサービス提供者向け と、多岐に渡って機能追加も行われてます。

リリース直後には以下のようなコメントがfa○eb○okで流れてきました。
sc_timeline_20131208.pngこれはさわらずにはおれません。wktkでございます!
で、早速インストールしてみたんですが、本当に早くなってました!※当社比200%速度UP

そういうワケで、私がbaserCMS3を扱ってみて気付いたポイントなどを紹介してみようと思います。

フォルダ構成について

これまでのbaserCMSとはフォルダ構成が大幅に変わりました。 2系以下の基本構成は以下になります。
  • /app
  • /app/webroot/themed
  • /baser
  • /cake
  • index.php
  • .htaccess
これが3系では以下のようになりました。
  • /app
  • /app/webroot/theme
  • /lib/Baser
  • /lib/Cake
  • /lib/.htaccess
  • index.php
  • .htaccess
baserCMSそのものは、lib フォルダの中に収められてます。 また、これまでフォルダ名やファイル名は、小文字のアンダースコア記法だったのですが、こちらが単語の先頭を大文字で記述するキャメル記法に変わりました。 (※全てではなく、例えば webroot はそのままだったりします。)

テーマ側のポイント

baserCMSは、「テーマ」という概念でサイトの見た目を取扱います。
このテーマは、1つのbaserに幾つも入れることができて、管理システム側で利用するテーマを簡単に切替える事ができます。
標準では /app/webroot/theme/利用するテーマフォルダ/ の中に入れて利用します。

テーマ内にbaserCMSにより生成されるファイル群

テーマでは css、img、js フォルダを用意して、その中に公開側で利用する素材を入れて使う事ができるのですが、このフォルダの中に、baserCMS本体が備えていて、かつ、管理システム側で利用する css、img、js がシンボリックリンクで作成されるようになりました。

具体的には以下のbaserCMSコア側が持つファイル群です。

  • /lib/Baser/View/webroot/css/admin
  • /lib/Baser/View/webroot/img/admin
  • /lib/Baser/View/webroot/js/admin

なんのためにこういう仕組みになっているかというと、これらのファイル群にてbaserの動作速度UPを行うためです。
この仕組みそのものは、CakePHPが持つ性質から来ているものと思われます。
デプロイ -- CakePHP Cookbook 2.x ドキュメント

そのため、テーマを取り扱う際には、これらのファイル群が出来ていることを念頭に置いておく必要があります。

  • 削除しちゃっても良いけど、微妙に動作速度の恩恵を受けられなくなる
  • SVNやgitでは、管理ファイルに属させないようにする(シンボリックリンクなので環境依存の絶対パスを保持しているため)

ちなみに、これらのシンボリックリンクはテーマを切替えるタイミングで生成されます。

ふと思ったけど、なんらかの方法で開発中は生成されないようにしておいて、本番環境のときのみ生成されるような動作があると良いのかな・・・?

アップローダを利用する際のポイント

だいたいセットで導入するアップローダも3系に対応しました。
アップローダー | baser CMS
2系時に既に実装されていたのですが、併せて少し紹介しておきます。

アップローダーにはファイルの公開期間設定機能が追加されてます。
ファイルの一覧から、ファイルを右クリックして表示されるメニューの「編集」から、公開期間を設定する事ができます。

通常、アップローダーにて上げたファイルは /webroot/files/uploads の中に保存されていくのですが、この機能にて制限を掛けたものは、/webroot/files/uploads/limited の中に保存されます。
limited フォルダ内には、外部アクセスを制限するための .htaccess が生成されてます。
公開期間時(or 未設定時)は、通常の /uploads の中に移動される仕組みです。

固定ページを取り扱う上でのポイント

baserCMSには固定ページという機能があり、通常のコンテンツはこの機能を用いて、ウェブページとして制作する事ができます。
この機能は、/webroot/theme/YOUR_THEME/Pages の中に、保存したページの内容をファイルとして出力します。

この固定ページは、本来の中身はDBに保存されています。
そのため、SVNやgit等のバージョン管理に含める必要はありません。

DBに固定ページのデータが含まれている場合、「固定ページテンプレート書出」機能を利用して、任意のタイミングでDBに保存されている内容を、Pagesフォルダ内にファイルとして出力する事ができます。
sc_20131208_admin_pages_index

旧バージョン(2系)からのアップデートについて

気になるバージョンアップについてですが、こちらは先に紹介したフォルダ構成の変更や、CakePHPの仕組みそのものが変わっているためにサポートされていません。
baserCMS 3.0.0 | baser CMS

2系で作っていたデータを一通りコンバートできるような仕組み?プラグイン?を作れたら良いんですけどね。

ただし、テーマとプラグインを3系に対応させるためのプラグインが出てます。
basercms/BcAddonMigrator
試してみたんですが、基本的な変換はこれで可能です。
基本的な部分はこれでザックリ対応して、細かい点はちょびちょび手動で行う感じです。
詳細な解説記事が上がってましたのでご紹介しておきます。「いいね!」ポチ
baserCMSアドオンマイグレーターでテーマをbaserCMS3対応だ→テーマのディレクトリ名が原因で失敗|京都のホームページ制作 株式会社Nextat(ネクスタット)

いろいろと機能追加や仕組みが代わったけど・・・

最後の紹介ポイントとして、baserCMSは3に上り、フォルダ構成とか命名規則等の根幹が変わってはいるんですが、びっくりするほど以前の仕組みはそのまま利用できます。

例えば、baserCMSの本体(コア)側に持つビュー・ファイルには手を付けず、変更したいものをテーマ側にコピーして、そっちを編集して利用する仕組み。
/app/View 側にコピーして、そっちを編集して利用する仕組み。
コントローラやモデルについても、/app/Controller や /app/Model にコピーすると優先されて利用される仕組み。。。

ですので、大きく変わったのは確かなんですが、これまでの作り方・ファイルの配置の考え方は基本的にそのまま使えます。
これすごいです。

テーマを作る上でも、プラグインを作る上でも、変更のポイントさえ押さえておけばだいたい行けちゃうという・・・なんて恐ろしいコ!!(((( ;゚Д゚))))アバババババ

最後に。。。

baserCMSには、それを扱う上で知っておくとちょっと便利になったり、つまづくことを予防できるポイントがいくつかあります。
そうした点を、これからもちょこっとずつ紹介して、ちょっと興味を持って貰って、色んなひとによりさわってもらえたら良いなぁ〜とか思ってマス。

自身で公開してるプラグインなんかも、これから3系対応進めて行こうかな?って感じです。
materializing (arata)

ではでは、次の 12/09(月)担当は @yusukehirao さんです。
よろしくお願いしまーす丶(・ω・)ノ

baserCMS Advent Calendar 2013 - Adventar
■ 昨年の baserCMS Advent Calendar 2012 - Adventar

baserCMS関連リンク

baser CMS - 国産オープンソース!フリー(無料)で『コーポレートサイトにちょうどいいCMS』
公式公開中のテーマ一覧
公式公開中のプラグイン一覧
baserCMSユーザーマニュアル

▲ to Top

トラックバック(0)

▲ to Top