ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
CKEditor とは
CKEditor は CKSource 社が開発する OSS の WYSIWYG リッチテキストエディタ。WordPress、GitLab、SAP 等で採用。現行バージョンは CKEditor 5(CKEditor 4 はサポート終了済み)。
| ビルド | 特徴 | 用途 |
|---|---|---|
| Classic | 固定ツールバー + 編集領域 | CMS / フォーム / ブログ投稿 |
| Inline | 編集領域そのものに直接編集 | インライン編集 / Wiki |
| Balloon | 選択時にツールバーが浮かぶ | ミニマルな UI |
| Document | Word 風の見た目 | 長文ドキュメント編集 |
CDN で最速導入
npm でカスタムビルド
npm install @ckeditor/ckeditor5-build-classic
# またはより細かく
npm install @ckeditor/ckeditor5-editor-classic \
@ckeditor/ckeditor5-essentials \
@ckeditor/ckeditor5-paragraph \
@ckeditor/ckeditor5-basic-styles \
@ckeditor/ckeditor5-link \
@ckeditor/ckeditor5-list \
@ckeditor/ckeditor5-imageimport ClassicEditor from '@ckeditor/ckeditor5-build-classic';
ClassicEditor
.create(document.querySelector('#editor'), {
toolbar: [
'heading', '|',
'bold', 'italic', 'underline', '|',
'link', 'bulletedList', 'numberedList', '|',
'imageUpload', 'blockQuote', 'insertTable', '|',
'undo', 'redo'
],
image: {
toolbar: ['imageTextAlternative', 'imageStyle:full', 'imageStyle:side']
},
table: {
contentToolbar: ['tableColumn', 'tableRow', 'mergeTableCells']
},
language: 'ja',
})
.then(editor => {
console.log('Editor was initialized', editor);
})
.catch(error => console.error(error));
主要 API
// HTML を取得
const html = editor.getData();
// '編集された内容
'
// HTML をセット
editor.setData('差し替える内容
');
// 編集領域を破棄
editor.destroy();
// イベント
editor.model.document.on('change:data', () => {
console.log('変更検知:', editor.getData());
});
// 読み取り専用
editor.enableReadOnlyMode('lockId');
editor.disableReadOnlyMode('lockId');
// フォーカス
editor.focus();
画像アップロード: SimpleUploadAdapter
標準で組み込まれている最も簡単な方法。サーバ側に POST し、JSON で URL を返すだけ:
ClassicEditor.create(document.querySelector('#editor'), {
simpleUpload: {
uploadUrl: '/api/upload-image',
headers: {
'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').content,
Authorization: 'Bearer ' + token,
}
}
});
サーバ側(Laravel 例):
validate([
'upload' => 'required|image|max:5120', // CKEditor は 'upload' フィールドで送る
]);
$path = $request->file('upload')->store('uploads', 'public');
$url = asset('storage/' . $path);
// CKEditor が期待するレスポンス形式
return response()->json([
'url' => $url,
]);
}
Django 統合
# pip install django-ckeditor-5
# settings.py
INSTALLED_APPS = [
# ...
'django_ckeditor_5',
]
CKEDITOR_5_CONFIGS = {
'default': {
'toolbar': ['heading', '|', 'bold', 'italic', 'link',
'bulletedList', 'numberedList', 'blockQuote', 'imageUpload'],
},
}
# models.py
from django_ckeditor_5.fields import CKEditor5Field
class Article(models.Model):
body = CKEditor5Field('Body', config_name='default')
# urls.py
urlpatterns = [
path('ckeditor5/', include('django_ckeditor_5.urls')),
]
CKEditor 4 との違い
| 項目 | CKEditor 4 | CKEditor 5 |
|---|---|---|
| 初期化 | CKEDITOR.replace('id') | ClassicEditor.create(el) |
| API | グローバル CKEDITOR | モジュラー / ES6 |
| データモデル | DOM 直接 | 独自仮想 DOM |
| 取得 | editor.getData() | editor.getData() |
| プラグイン | 多数あり | 選り抜き(リライト中) |
| 共同編集 | 非対応 | 対応(商用機能) |
| サポート | 2023 EOL | 現行 |
セキュリティ(XSS 対策)
CKEditor で入力した HTML を表示するときは、サーバ側で必ずサニタイズ:
purify($request->input('content'));
// または自前で許可タグだけ残す
$clean = strip_tags(
$request->input('content'),
'
FAQ
Q: 日本語化したい
A: 設定で language: 'ja'。CDN ビルドには日本語訳も同梱されています。
Q: 文字数カウントを表示したい
A: WordCount プラグインを追加。toolbar ではなく editor.plugins.get('WordCount').wordCountContainer でカウンタ要素を取得して挿入します。
Q: 完全に無料で使えるか
A: 基本機能は GPL/MIT 系で無料。共同編集 / 高度な変更履歴 / コメント機能は商用ライセンス(CKEditor Premium)が必要です。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
同階層のページ
- CKEditor
- vi
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Laravel キャッシュクリア完全ガイド(cache:clear / config:clear / 2026-05-18 07:42:07
- プロジェクトの作成と削除 2026-05-18 07:42:07
- インストール直後にNetbeansが反応しない 2026-05-18 07:42:07
- 動画やチャンネルの検索 2026-05-18 07:42:07
- APIキー取得方法 2026-05-18 07:42:07
- チャンネル情報の取得 2026-05-18 07:42:07
- API 入門 — Web API(REST / GraphQL / gRPC / 2026-05-18 07:42:07
- インストール(eclipseプラグイン) 2026-05-18 07:42:07
- Laravel「Dotenv values containing spaces must be surrounded 2026-05-18 07:42:07
- エラー一覧 2026-05-18 07:42:07
- curl: (51) SSL: certificate subject name '~' does not match 2026-05-18 07:42:07
- インストール方法(Windows版) 2026-05-18 07:42:07
- JSONから配列に変換 2026-05-18 07:42:07
- 処理を一定時間待つ 2026-05-18 07:42:07
- A non well formed numeric value encountered 2026-05-18 07:42:07
コメントを削除してもよろしいでしょうか?