前回の記事の問題点の解決方法です。
何が問題かというと、[テーマディレクトリ]/js/adminなど、adminディレクトリ以下が、テーマを変更すると上書きされてしまいます。
baserCMSが元のテーマのadminディレクトリを削除し、新しいテーマにadminディレクトリをコピーしていました。
この時元のテーマからコピーしてくるのではなく、(未確認ですが)baserCMSのオリジナルからコピーしてくるようです。
そこで、adminディレクトリ以下には触れずに、CKEditorの設定を変更しようと思います。
設定用のファイル作成
[テーマディレクトリ]/js/adminディレクトリではなく、[テーマディレクトリ]/jsディレクトリにckeditor_config.jsファイルを作ります。
(ファイル名はconfig.jsでも良いですが、後で何の設定ファイルかわからなくなるので、ckeditor_config.jsにしました。)
設定用ファイルを読み込むように設定
このファイルをCKEditorが読み込むように、BcCkeditorHelper.php(前回の記事を参照)に1行加えます。
$jscode .= "CKEDITOR.config.protectedSource.push( /<\?[\s\S]*?\?>/g );";
の下に
$jscode .= "CKEDITOR.config.customConfig = CKEDITOR.getUrl('../../ckeditor_config.js');";
を加えます。
以上でCKEditorの設定用ファイルを読み込むようにできました。
補足:テーマに関係なく設定ファイルを適用したい時
今回テーマ下に設定ファイルを置きましたが、テーマによらずに変更する場合はckeditor_config.jsファイルを/app/webrootディレクトリ(他の場所でもいいと思います)に置いて、../../ckeditor_config.jsを絶対パスに書き換えればいけると思います。
絶対パスで指定する場合は、BcCkeditorHelper.phpで$jscode変数を修正する代わりに、_build関数内の$options = の配列の中に、「’customConfig’ => ‘絶対パス’」を加えてもOKです。