a-blog cmsのCKEditorをカスタマイズ

a-blog cmsの合宿に参加してきました。悩んでいた部分も解消できたので、自分用にWYSIWYGエディタのカスタマイズについて忘れないように残しておきます。

a-blog cmsではWYSIWYGエディタとしてCKeditorが採用されています。使わなくてよいならなるべく使いたくはないのですが、お客さんの要望や利便性を考えた場合に、無下に消し去るわけにもいきません。

かと言って、フル機能で提供すると大変なことになってしまうということで、簡易的なものを搭載することにしました。

機能としては、以下のものに絞り込んでいます。

  • 太字
  • 打ち消し線
  • リンクの挿入と削除
  • フォントサイズ(80%~200%の5段階)
  • 文字色(読みやすいような4色・「その他の色」の削除)
  • スタイル(3色のマーカー)
  • 絵文字
  • 書式の解除
  • ソースの表示

テキストリンクと間違われないように、青の文字を無くしてみたり、あまりに小さい文字をなくしてみたり・・・などなど、ほとんどの機能をカットしています。これくらいに絞ればおかしなことにはならないはずと信じて・・・。


すっきりしたWYSIWYGエディタ


装飾する気を削ぐ景気の悪い文字用の4色


気休め同然の背景色

色を変えている部分はかなり暗めになっていますが、そうしておかないとこれで長文を書かれたら困るからです。ちょっとした強調なら蛍光マーカーみたいに背景色を使う方が目立たせやすいですしね。

実装については、以下のJSを編集に使うテンプレートに読み込んでやれば、デフォルトの設定を上書きして動作します。

ACMS.Config.emoToolbar = [
['Bold','Strike'],['Link','Unlink'],['FontSize'],['TextColor'],['Styles','-','Emoji'],['RemoveFormat','-','Source']
]

ACMS.Config.emoConfig = {
fontSize_sizes  : '80%/80%;100%/100%;120%/120%;150%/150%;200%/200%',
colorButton_colors : 'A44600,990000,333378,336633',
colorButton_enableMore : false,
stylesSet : [
{ name : 'ピンクマーカー', element : 'span', styles : { 'background-color' : '#FFECF2' } },
{ name : '黄色マーカー', element : 'span', styles : { 'background-color' : '#FFFFAE' } },
{ name : '緑マーカー', element : 'span', styles : { 'background-color' : '#E8FFDD' } },
]
}

私の場合、entry.htmlの下の方にタッチモジュールを使って、編集時だけ読み込むようにしてみました。

<!-- BEGIN_MODULE Touch_Edit -->
<script src="/themes/テーマフォルダ名/js/wysiwyg_custom.js"></script>
<!-- END_MODULE Touch_Edit -->

実はユーザーとかブログによって、使わせるWYSIWYGエディタを3つに分けています。それなりに使える人にはフル機能を、この人は今までのブログを見たら怪しいという人には今回のタイプを、もっとやばい人には絵文字くらいしか使わせないという感じです。

そのカスタマイズについては、また別の機会にまとめたいと思います。

他のCMSとかでも、オブジェクトの名前だけ変えれば動作するとは思います。試してませんけど・・・。

今取りかかっている案件で困っていた部分も解消できて、非常に有意義なイベントでした。じゃんけん大会で50,000円のスタンダードライセンスを勝ち取ったので、むしろ儲かったという気がしないでもありません・・・。

久々にブログを書いて、まだバージョン1.7だということを思い出したので、近々2.0にしたいと思います。



グローバル変数

global varsvalues
%{BID}2
%{UID}
%{CID}44
%{EID}580
%{RID}
%{RVID}
%{UTID}
%{CMID}
%{TBID}
%{KEYWORD}
%{TAG}
%{FIELD}
%{DATE}
%{START}1000-01-01 00:00:00
%{END}9999-12-31 23:59:59
%{PAGE}1
%{ORDER}
%{QUERY}
%{QOL}?
%{ADMIN}
%{IS_ADMIN}0
%{ADMIN_PATH}
%{ADMIN_PATH_MID}
%{MID}
%{MODULE_ID}
%{MODULE_NAME}
%{STYLEGUIDE_PAGE}acms-admin
%{GETTEXT_TYPE}user
%{BCD}blog
%{UCD}
%{CCD}ablogcms
%{ECD}wysiwyg_customize_1.html
%{BLOG_NAME}ブログ
%{USER_NAME}
%{CATEGORY_NAME}a-blog cms
%{ENTRY_TITLE}a-blog cmsのCKEditorをカスタマイズ
%{RULE_NAME}
%{CONFIG_SET_NAME}共通の設定
%{THEME_SET_NAME}ブログテーマ
%{EDITOR_SET_NAME}編集の基本設定
%{RCID}44
%{PCID}
%{RCCD}ablogcms
%{PCCD}
%{ROOT_CATEGORY_NAME}a-blog cms
%{PARENT_CATEGORY_NAME}
%{RBID}1
%{PBID}1
%{RBCD}
%{PBCD}
%{ROOT_BLOG_NAME}フォルトゥナ
%{PARENT_BLOG_NAME}フォルトゥナ
%{ALIAD_ID}
%{ALIAS_ID}
%{ALIAS_DOMAIN}
%{ALIAS_CODE}
%{ALIAS_NAME}
%{CHARSET}UTF-8
%{META_KEYWORDS}
%{META_DESCRIPTION}
%{NOW_DATE}2024-09-16
%{NOW_TIME}05:25:37
%{BLOG_THEME_COLOR}#559655
%{BLOG_THEME_CONTRAST_COLOR}#ffffff
%{VERSION}3.1.22
%{SNAME}sid
%{SID}
%{SESSION_USER_ID}
%{SESSION_BLOG_ID}
%{MAX_PUBLISHES}15
%{ROOT_TPL}/themes/blog@base/_entry.html
%{ROOT_TPL_NAME}_entry
%{ROOT_DIR}/
%{DOCUMENT_ROOT}/
%{THEMES_DIR}/themes/
%{JS_DIR}/js/
%{JS_LIB_DIR}/js/library/
%{JS_LIB_JQUERY_DIR}/js/library/jquery/
%{JS_LIB_JQUERY_DIR_VERSION}3.6.1
%{LOGIN_SEGMENT}login
%{ADMIN_RESET_PASSWORD_SEGMENT}admin-reset-password
%{ADMIN_RESET_PASSWORD_AUTH_SEGMENT}admin-reset-password-auth
%{ADMIN_TFA_RECOVERY_SEGMENT}admin-tfa-recovery
%{SIGNIN_SEGMENT}signin
%{SIGNUP_SEGMENT}signup
%{RESET_PASSWORD_SEGMENT}reset-password
%{RESET_PASSWORD_AUTH_SEGMENT}reset-password-auth
%{TFA_RECOVERY_SEGMENT}tfa-recovery
%{PROFILE_UPDATE_SEGMENT}mypage/update-profile
%{PASSWORD_UPDATE_SEGMENT}mypage/update-password
%{EMAIL_UPDATE_SEGMENT}mypage/update-email
%{TFA_UPDATE_SEGMENT}mypage/update-tfa
%{WITHDRAWAL_SEGMENT}mypage/withdrawal
%{SYSTEM_THEMES_DIR}/themes/system/
%{CURRENT_THEMES_DIR}/themes/blog@base/
%{ARCHIVES_DIR}/archives/
%{MEDIA_ARCHIVES_DIR}/media/
%{MEDIA_STORAGE_DIR}storage/
%{BID_ARCHIVES_DIR}/archives/002/
%{YM_ARCHIVES_DIR}/archives/002/202409/
%{ARCHIVES_DIR_TEMP}/archives/temp/
%{ARCHIVES_CACHE_SERVER}
%{HTTP_THEMES_DIR}https://www.color-fortuna.com/themes/
%{HTTP_CURRENT_THEMES_DIR}https://www.color-fortuna.com/themes/blog@base/
%{HTTP_ARCHIVES_DIR}https://www.color-fortuna.com/archives/
%{HTTP_MEDIA_ARCHIVES_DIR}https://www.color-fortuna.com/media/
%{HTTP_ARCHIVES_DIR_TEMP}https://www.color-fortuna.com/archives/temp/
%{HTTP_BID_ARCHIVES_DIR}https://www.color-fortuna.com/archives/002/
%{HTTP_YM_ARCHIVES_DIR}https://www.color-fortuna.com/archives/002/202409/
%{HTTP_REQUEST_URL}https://www.color-fortuna.com/blog/ablogcms/wysiwyg_customize_1.html
%{IMAGES_DIR}/themes/system/images/
%{SCRIPT_ROOT}/
%{REWRITE_OFFSET}/
%{HTTP_ROOT}https://www.color-fortuna.com/
%{DOMAIN}www.color-fortuna.com
%{DOMAIN_ROOT}www.color-fortuna.com
%{HTTP_HOST}www.color-fortuna.com
%{BASE_URL}http://www.color-fortuna.com/blog/
%{ADMIN_BASE_URL}https://www.color-fortuna.com/
%{BLOG_URL}https://www.color-fortuna.com/blog/
%{ROOT_BLOG_URL}https://www.color-fortuna.com/
%{PARENT_BLOG_URL}https://www.color-fortuna.com/
%{CATEGORY_URL}https://www.color-fortuna.com/blog/ablogcms/
%{ROOT_CATEGORY_URL}https://www.color-fortuna.com/blog/ablogcms/
%{PARENT_CATEGORY_URL}https://www.color-fortuna.com/blog/
%{CANONICAL_URL}https://www.color-fortuna.com/blog/ablogcms/wysiwyg_customize_1.html
%{ENTRY_URL}https://www.color-fortuna.com/blog/ablogcms/wysiwyg_customize_1.html
%{PERMALINK}https://www.color-fortuna.com/blog/ablogcms/wysiwyg_customize_1.html
%{INHERLINK}https://www.color-fortuna.com/blog/ablogcms/wysiwyg_customize_1.html
%{CURRENT_URL}https://www.color-fortuna.com/blog/ablogcms/wysiwyg_customize_1.html
%{HOME_URL}https://www.color-fortuna.com/
%{BASE_ACMS_PATH}blog/
%{ACMS_PATH_BASE}blog/
%{SCRIPT_DIR}/home/kyunitan/color-fortuna.com/public_html/
%{CURRENT_ROOT}/blog/ablogcms/wysiwyg_customize_1.html
%{REQUEST_PATH}/blog/ablogcms/wysiwyg_customize_1.html
%{REQUEST_DIRNAME}/blog/ablogcms
%{MODULE}
%{VALID_ID_REGEX}@^[a-zA-Z0-9_-]+$@
%{REGEX_VALID_ID}@^[a-zA-Z0-9_-]+$@
%{REGEX_VALID_PASSWD}@^[!-~]+$@
%{CATEGORY_EXISTS}1
%{CATEGORY_LEVEL}1
%{VIEW}entry
%{UA}CCBot/2.0 (https://commoncrawl.org/faq/)
%{CH_UA}
%{CH_UA_MOBILE}0
%{CH_UA_PLATFORM}
%{UA_GROUP}PC
%{REMOTE_ADDR}44.220.247.152
%{MAINTENANCE_MODE}
%{PROTOCOL}https
%{BLOG_CODE}blog
%{USER_CODE}
%{CATEGORY_CODE}ablogcms
%{ENTRY_CODE}wysiwyg_customize_1.html
%{BLOG_ID}2
%{USER_ID}
%{CATEGORY_ID}44
%{ENTRY_ID}580
%{SUID}
%{SBID}
%{SESSION_USER_AUTH}
%{SESSION_USER_NAME}
%{SESSION_USER_CODE}
%{SESSION_USER_MAIL}
%{SEARCH_ENGINE_KEYWORD}
%{MAIL_MAGAZINE_FROM}info@example.com
%{MAIL_TRACKBACK_FROM}
%{MAIL_COMMENT_FROM}info@example.com
%{MAIL_REMIND_FROM}
%{MAIL_SUBSCRIBE_FROM}info@example.com
%{MAIL_SUBSCRIBE_ADMIN_FROM}info@example.com
%{PHP_FILE_MAX_SIZE}30M
%{PHP_POST_MAX_SIZE}30M
%{MEDIA_LIBRARY}on
%{IS_DEVELOPMENT}off
%{IS_TRIAL}off
%{TRIAL_COUNT_DOWN}0
%{IS_SUBSCRIPTION}off
%{SUBSCRIPTION_PLAN}
%{UNLICENSED_REASON}
%{SUBSCRIPTION_PAYMENT}
%{ACTIVATION_ENDPOINT}https://mypage.a-blogcms.jp/api/activation
%{GOOGLE_API_KEY}
%{PREVIEW_DEFAULT_DEVICE}iPhone 6/7/8
%{PREVIEW_HAS_HISTORY_DEVICE}
%{APPROVAL_PREVIEW_DEFAULT_DEVICE}iPhone 6/7/8
%{APPROVAL_PREVIEW_HAS_HISTORY_DEVICE}
%{TIMEMACHINE_PREVIEW_DEFAULT_DEVICE}PC
%{TIMEMACHINE_PREVIEW_HAS_HISTORY_DEVICE}
%{d}16
%{D}Mon
%{j}16
%{l}Monday
%{N}1
%{S}th
%{w}1
%{z}259
%{W}38
%{F}September
%{m}09
%{M}Sep
%{n}9
%{t}30
%{L}1
%{o}2024
%{Y}2024
%{y}24
%{a}am
%{A}AM
%{B}892
%{g}5
%{G}5
%{h}05
%{H}05
%{i}25
%{s}37
%{u}000000
%{e}Asia/Tokyo
%{I}0
%{O}+0900
%{P}+09:00
%{T}JST
%{Z}32400
%{c}2024-09-16T05:25:37+09:00
%{r}Mon, 16 Sep 2024 05:25:37 +0900
%{U}1726431937

モジュール処理時間

moduleidentifierrun timesql
Entry_Body0.0397113
Ogp0.0218712
Entry_ListentryList0.017016
Category_ListcategoryList0.008610
NavigationglobalNavi0.005531
Blog_FieldtopBlog0.004953
Blog_FieldtopBlog0.004934
Blog_FieldtopBlog0.004923
NavigationglobalNavi0.004751
TopicpathtopicPath0.004665
TopicpathtopicPath0.004175
Blog_FieldtopBlog0.003553
Blog_FieldtopBlog0.003483
Topicpathtopicpath0.003183
Blog_FieldtopBLog0.002551
Touch_Unlogin0.002360
Entry_Field0.002242
Entry_Field0.001861
Blog_FieldtopBLog0.001692
Entry_Field0.001691
Form2_Unit0.001230
Form2_Unit0.001140
Form0.00111
Form2_Unit0.000791
Js0.000360
Form2_Unit0.000270
Field_Search0.000260
Admin_Entry_Add0.000210
Touch_NotApprovalEditVersion0.000170
Touch_Admin0.000160
Touch_ApprovalEditVersion0.000150
Touch_MailMagazineEnable0.000150
Touch_NotPreview0.000150
Touch_Tag0.000150
Touch_Version0.000150
Touch_NotApprovalORsessionWithApprovalAdministrator0.000140
Touch_NotEntry0.000140
Touch_SessionWithAdministration0.000140
Touch_EditInplace0.000130
Touch_Entry0.000130
Touch_NotEdit0.000130
Touch_sessionWithApprovalAdministrator0.000130
Tag_Filter0.000120
Touch_Debug0.000120
Touch_Edit0.000120
Touch_NotEdit0.000120
Touch_Entry0.000110
Touch_NotPreview0.000110
Touch_NotPreview0.000110
Touch_NotPreview0.000110
Touch_SessionWithAdministration0.000110
Touch_SessionWithContribution0.000110
Touch_Approval0.00010
Touch_Benchmark0.00010
Touch_Entry0.00010
Touch_Form20.00010
Touch_Login0.00010
Touch_NotAdmin0.00010
Touch_NotTag0.00010
Touch_RelatedEntryFunction0.00010
Touch_SessionWithAdministration0.00010
Touch_SessionWithAdministration0.00010
Touch_SessionWithContribution0.00010
Touch_Tag0.00010
Touch_Edit9.0E-50
Touch_EditDirect9.0E-50
Touch_EditInplace9.0E-50
Touch_Entry9.0E-50
Touch_GeolocationEntryFunction9.0E-50
Touch_NotAdmin9.0E-50
Touch_NotEditDirect9.0E-50
Touch_NotEditInplace9.0E-50
Touch_NotEntry9.0E-50
Touch_SessionWithAdministration9.0E-50
Touch_SessionWithCompilation9.0E-50
Touch_SessionWithContribution9.0E-50
Touch_SessionWithContribution9.0E-50
Touch_SubCategoryFunction9.0E-50
Touch_Top9.0E-50
Touch_Unlogin9.0E-50
Touch_Category8.0E-50
Touch_Entry8.0E-50
Touch_Entry8.0E-50
Touch_Entry8.0E-50
Touch_HigherLicense8.0E-50
Touch_Index8.0E-50
Touch_Keyword8.0E-50
Touch_NotApprovalORsessionWithApprovalAdministrator8.0E-50
Touch_NotCategory8.0E-50
Touch_NotPreview8.0E-50
Touch_NotTimemachineMode8.0E-50
Touch_NotsessionWithApprovalAdministrator8.0E-50
Touch_SessionWithAdministration8.0E-50
Touch_SessionWithContribution8.0E-50
Touch_sessionWithApprovalAdministrator8.0E-50
Touch_Entry7.0E-50
Touch_NotEdit7.0E-50
Touch_NotPreview7.0E-50
Touch_SessionWithContribution7.0E-50
Touch_Unlogin7.0E-50
Touch_GeolocationEntryFunction6.0E-50
Touch_NotEdit6.0E-50
Touch_NotEntry6.0E-50
Touch_NotPreview6.0E-50
Touch_NotPreview6.0E-50
Touch_RelatedEntryFunction6.0E-50
Touch_SessionWithContribution6.0E-50
Touch_SubCategoryFunction6.0E-50
Touch_Admin5.0E-50
Touch_Admin5.0E-50
Touch_SessionWithContribution5.0E-50
Touch_SessionWithContribution5.0E-50
Touch_Version5.0E-50
MODULE TOTAL TIME0.1571481
BOOT TOTAL TIME0.20069
BUILD TOTAL TIME0.21096
REWRITE PATH TOTAL TIME0.01073
PROCCESS TIME0.585649

テンプレート

template
themes/base/include/head/meta.html
themes/base/include/head/robots.html
themes/base/include/head/link.html
themes/base/include/head/js.html
themes/base/include/head/structured-data.html
themes/base/include/body-start.html
themes/base/include/header.html
themes/base/include/header/dynamicGlobalNavi.html
themes/system/admin/module/setting.html
themes/blog@base/include/header/page-title.html
themes/base/include/header/topicpath.html
themes/system/admin/action.html
themes/system/include/check-seo.html
themes/base/include/footer.html
themes/base/include/body-end.html
themes/base/include/module/tag/filter.html
themes/base/include/module/entry/bodyNoDate.html
themes/system/admin/entry/revision-info.html
themes/system/admin/entry/title.html
themes/system/include/unit.html
themes/base/include/unit/tag-select.html
themes/system/include/gmaps-error.html
themes/base/include/unit/custom.html
themes/base/include/unit/extend.html
themes/base/include/module/entry/continue.html
themes/base/include/form/unit.html
themes/base/include/form/input.html
themes/base/include/form/confirm.html
themes/system/admin/entry/edit.html
themes/system/admin/entry/style.html
themes/system/admin/entry/geo.html
themes/system/admin/map/_google-map-picker.html
themes/system/admin/map/_open-street-map-picker.html
themes/system/admin/entry/related.html
themes/system/admin/entry/related-table.html
themes/base/admin/entry/field.html
themes/base/admin/entry/ogp.html
themes/base/admin/entry/pickup.html
themes/base/admin/entry/seo.html
themes/system/admin/entry/unit.html
themes/base/admin/entry/unit/extend.html
themes/base/admin/entry/field_foot.html
themes/system/admin/entry/revision.html
themes/system/admin/entry/js.html
themes/system/admin/entry/add.html
themes/system/admin/form2/edit.html
themes/system/admin/form2/unit.html
themes/system/admin/entry/action.html
themes/base/include/module/entry/list.html
themes/base/include/module/category/list.html

メモリー

keyvalue
memory_limit200M
memory_get_usage3.56 MB
memory_get_peak_usage5.27 MB

Query Count

query count
122