LoginSignup
2
1

More than 1 year has passed since last update.

[baserCMS]データベース内に専用のテーブルを持たないラクして作るプラグイン

Last updated at Posted at 2021-12-12

昨年の 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つのファイルを作ります。

ExamplePluginを有効化します。
おわり。

できあがるサンプルの画面

sc_admin_example_plugins.png

保存された値の状態

sc_db_example_plugins.png

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さんです。
どんなお話が出るのか楽しみです。よろしくお願いしまーす。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1