ウェブサイト上で簡単にWYSIWYGエディタを実装する「TinyMCE」

単なる入力機能だけではなく、入力した文字を選択して太字にしたり色を変えたりリンクを付けたりなどの機能があるエディタのことをWYSIWYGエディタと呼びます。これは「What You See Is What You Get(見た通りのものが得られる)」の略で、エディタ上で見た通りに文章を編集できます。
WYSIWYGエディタを実装するときは、すでに有名な「TinyMCE」を使うと非常に簡単に実装できます。
TinyMCE
TinyMCEはJavaScriptで簡単にリッチテキストエディタを実装できるJavaScriptライブラリです。
- 機能が豊富でカスタマイズも柔軟に可能
- ツールバーの追加
- ボタンの入れ替えや削除
- 独自のボタンを追加
- WordPressにも採用されている
公式サイトから「Download TinyMCE SDK Now」をクリックしてダウンロードして、中に入っているJavaScriptファイルを読み込めば使えます。
(一緒に入っている「plugins」「langs」「themes」などのフォルダも必要です)
基本的な使い方
TinyMCEはtextareaに対してJavaScriptを適用して使います。
<textarea id="tinymce"></textarea>「tinymce.init」で設定の初期化ができて、「selector」でtextareaのidやclassを指定します。
tinymce.init({
selector: '#tinymce',
});これでWYSIWYGエディタが表示されます。
日本語化
公式サイトの「Language Packages」ページから日本語のフォルダをダウンロードして「ja.js」を「js/tinymce/」にある「langs」へ移動します。
あとはtinymce.initで「language」に「ja」を指定します。
tinymce.init({
selector: '#tinymce',
language: 'ja',
});これで日本語化されました。
初期入力内容を設定
<textarea>の中にHTMLを入力すれば、初期入力内容として表示されます。
<textarea id="tinymce">
<p>ここに入力したHTMLは<strong>初期入力内容</strong>として表示されます。</p>
</textarea>最低限のエディタのカスタマイズ
エディタの横幅や高さの設定
「width」や「height」に数値を指定すると、エディタの横幅や高さを指定できます。
tinymce.init({
selector: '#tinymce',
language: 'ja',
width: 680,
height: 420
});他にも、エディタの右下をドラッグして拡大縮小するときに、最小のサイズを指定する「min_width」「min_height」や最大のサイズを指定する「max_width」「max_height」もあります。
ツールバーの変更
「toolbar」ではツールバーに表示するツールを指定します。
「|」で区切りアイコンを表示できて、半角スペースで区切りながら表示したいツールを左から順に書いていきます。
tinymce.init({
selector: '#tinymce',
language: 'ja',
toolbar: 'undo redo | bold italic link | image table',
plugins: "image link table",
});ツールの種類と名前は、公式サイトの「Toolbar Buttons」で確認できます。
また、一部のツールは「plugins」に指定してプラグインファイルを読み込む必要があります。
クレジットの非表示
「branding」を「false」にすると、下に表示される「Powered by TinyMCE」というクレジットが非表示になります。
tinymce.init({
selector: '#tinymce',
language: 'ja',
branding: false
});CSSの読み込み
「content_css」にパスを指定すると、CSSの読み込みができます。
tinymce.init({
selector: '#tinymce',
language: 'ja',
content_css: '/assets/css/editor.css'
});これで指定したCSSファイル内に、見出しなどのスタイルを指定しておくとそれが適用されます。


WordPressで「現在メンテナンス中のため、しばらくの間ご利用いただけません。」の状態でログインできなくなった場合の対処法
Sassのマップ機能を使った変数の管理方法
Movable TypeでMTLoopを使ってkeyでソートしたときに、10個以上表示させると並びがおかしくなる
Local by Flywheelのページ遷移を軽くする設定
Vue CLIをインストールしたのに「command not found: vue」と表示されてしまう場合の対処法
HTMLのpattern属性を使ってフォームのバリデーションチェックを行う方法
Visual Studio Codeで連番を入力する拡張機能「vscode-input-sequence」
WebPに対応して画像サイズを最適化する方法
Visual Studio Codeでショートカットキーを変更する方法
「とりあえず無料版!」ではなく、機能を知った上で判断したいMAMPとMAMP PROの比較
iTerm2で「Use System Window Restoration Setting」を設定しているとアラートが表示されて機能しない
Google Chromeのサイト内検索(カスタム検索)機能を別のプロファイルに移行する方法
iPadで入力モードを切り替えずに数字や記号をすばやく入力する方法
iPhoneやiPadでYouTubeの再生速度を3倍速や4倍速にする方法
Keynoteで有効にしているはずのフォントが表示されない現象
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
AirPodsで片耳を外しても再生が止まらないようにする方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
軽量で高速なターミナルエミュレーター「Ghostty」の設定方法
Eagleで実現するクリエイティブ素材の簡単管理
かゆいところに手が届く「Supercharge」でMac環境を便利にカスタマイズする
超軽量なコードエディタ 「Zed」をサブエディタとして活用する
Bartender 6で追加されたWidgets機能で自作メニューバーアイテムを簡単に作成する
Googleカレンダーを便利に活用するための小技集(祝日だけを表示・月末の繰り返しイベントを追加)
Obsidianを使った「自己流PKM」で行う知識トレーニング
テキストエディタ・ノートアプリ関連のショートカットキーをKeyboard Maestroで統一する
Path Finderを使ってキーボードだけでファイル操作する方法(応用編)