昨年の baserCMS Advent Calendar 2020に続き、今年もbaserCMS Advent Calendar 2021が始まってます。
さてその12日担当です。=[ 'ω' ] トウフー
baserCMS4のご紹介
baserCMSとは、CMS(Contents Management System)です。
世の中には、WordpressとかMovableTypeとかSHIRASAGIなどいろんなCMSがありまして、その中で、PHPのフレームワークであるCakePHPを用いてできてるCMSです。
Webサイトを自由にカスタマイズできるCMS(コンテンツ・マネジメント・システム)です。
です。
■ baserCMS - 国産オープンソース!フリー(無料)でコンテンツ管理に強いCMS
プラグインとかテーマの配布・販売やってます。
■ baserマーケット
導入事例いっぱいあります。着々と増加中です。
■ baserCMS導入事例 | baser CMS』
それから、記事をブロック単位で作ることができる、ハンバーガみたいに積み上げていく感覚で簡単に記事作成ができるBurgerEditorというプラグインがあります。
■ BurgerEditor(baserCMS3対応)(baserCMS4対応) ダウンロード | baserマーケット
この記事で紹介すること
プラグインを作るときに、データベース内に専用のテーブルまでもないなぁ、というときに、既存のsite_configsを使って設定値を保存しておくとラクですよ、というサンプルの紹介です。
想定している対象者
- baserCMSでウェブサイトを制作をしている方
環境
- baserCMS 4.5.4以下
やること
以下の4つのファイルを作ります。
- app/Plugin/ExamplePlugin/Controller/ExamplePluginsController.php
- app/Plugin/ExamplePlugin/Model/ExamplePlugin.php
- app/Plugin/ExamplePlugin/View/ExamplePlugins/admin/form.php
- app/Plugin/ExamplePlugin/VERSION.txt
ExamplePluginを有効化します。
おわり。
できあがるサンプルの画面
保存された値の状態
ExamplePluginsController.php
1つのフィールド内に収めるため、json化してまとめちゃってるのがポイントです。
まとめちゃったあとは、site_configsテーブル内にキー(name)を指定して1レコード内に入れ込みます。
SiteConfigモデルからは、findByNameでキーを指定して保存値を取ってきます。
取ってきたときはjsonなので、decodeで連想配列化します。
ExamplePlugin.php
専用テーブルは持たないので $useTable = false 指定がポイントです。
バリデーション(入力チェック)情報はbaser流儀でそのまま書いて使うことができます。
admin/form.php
専用テーブルを利用しないからといって、特別なことは何もなく、通常の管理側フォーム画面を作るだけです。
みなさん、admin-thirdには慣れましたか?
VERSION.txt
せっかくなので置く。
サンプルファイル一覧
こっちにまとめて置いてあります。
https://github.com/materializing/example-bc-advent-2021
フォルダ名を「ExamplePlugin」としてプラグインとして設置すると動作できます。
特徴
- 専用のテーブルを準備するまでもないのでラク
- 入力したいフィールドを増やすときはビューファイルで入力欄を増やすだけなのでラク
- 入力フィールドが減るときはビューファイルで入力欄を減らすだけなのでラク
- site_configs内に持っているので、使いたいところでの呼び出しがラク
欠点としては、site_configs内のvalueフィールドはTEXT(or MEDIUMTEXT)なので、無制限じゃないので、大量のデータをあまりにも入れすぎないようにしないと事故ることですかね。
ご利用は計画的に。
あとがき
次の方は rabbitchangTESTさんです。
どんなお話が出るのか楽しみです。よろしくお願いしまーす。