CKeitor5とは

CKeitor5とは

今回も、迷えるエンジニアキッズたちに、「CKeditor」の中毒性について教えていこう!!用意はいいかな?

 

■何ができるのか?

CKEditor 5(シーケーエディタ 5)は、ブラウザ上で利用できるリッチテキストエディタです。

WYSIWYG(What You See Is What You Get)方式で、文字の太字やリンクなどの装飾を編集しながら確認することができます。

 

 

CKEditorは、JavaScriptと互換性がよいので、多くのサイトなどで利用されています。

こちらで手に入ります>>

 

■画面について

デモ画面はこちら>>

 

【やってみて】

素人でも画像と文章を作れる。

エンジニアもカンタンに導入できる

カスタマイズが割と難しい

 

・CMSを作らなくてよい

・素人でも画像と文章を作れる。

・DL版とCDN版がある

 

 

具体的な利用方法

利用方法について書いていきます。今回はCDN版での利用方法です。

ファイルをダウンロードするよりもCDNを使えば簡単に使えます。

画像をアップロードして、特定のフォルダに保存する処理を書いていきます。色々長いので、頑張って読んでみてください。

 

【参照】

Laravel + CKEditorが便利すぎた件 >>

 

・meta部分にリンクを書く

・importmapで短縮

・import
・日本語化
・const editorConfig
・plugins:
・simpleUpload
・beforeSend: (xhr, formData)
・initialData:

 

などを正しく指定する必要があります。順番に見ていきましょう。

 

 

■meta部分に書く

 

<!--ckeditor -->

<link rel="stylesheet" href="https://cdn.ckeditor.com/ckeditor5/43.0.0/ckeditor5.css">

 

必要なcssなどをリンクで利用する。

 

■editor部分

 

const configの部分が色々な設定。

 

■id指定と、const部分

$course_txt['id'] = 'editor_course_txt'; //textareaのid

ClassicEditor.create(document.querySelector('#editor_course_txt'), editorConfig);

 

というように設定をして使います。

テキストエリアをつくり、その上から読み込むような感じです。

元のテキストエリアは見えなくなり、CKeditor5が表示されます。

 

 

■importmap

<script type="importmap">
{
"imports": {
"ckeditor5": "https://cdn.ckeditor.com/ckeditor5/43.0.0/ckeditor5.js",
"ckeditor5/": "https://cdn.ckeditor.com/ckeditor5/43.0.0/"
}
}
</script>

 

import 文の中で 'ckeditor5' や 'ckeditor5/' で始まる短いモジュール指定子を使うだけで、

CDN 上の特定のバージョン (43.0.0) の CKEditor 5 のファイルが自動的に読み込まれるように設定しています。

つまり、ざっくり言うと、楽になるわけです。

 

■解説すると

「もし JavaScript コードの中で 'ckeditor5' というモジュール指定子を見つけたら、代わりに https://cdn.ckeditor.com/ckeditor5/43.0.0/ckeditor5.js という URL からモジュールを読み込んでください」という意味になります。

 

例えば、

JavaScript ファイル内で import ClassicEditor from 'ckeditor5'; と書いた場合、ブラウザはこの URL (https://cdn.ckeditor.com/ckeditor5/43.0.0/ckeditor5.js)にアクセスして CKEditor 5 の主要なモジュールをダウンロードします。

 

これは、「もし JavaScript コードの中で 'ckeditor5/' で始まるモジュール指定子を見つけたら

そのプレフィックスを

https://cdn.ckeditor.com/ckeditor5/43.0.0/ に置き換えてください」という意味になります。末尾のスラッシュ / が重要で、これがあることでプレフィックスとしてのマッピングになります。

 

JavaScript でモジュールを扱う際、import 文を使って外部のコードを読み込みます。import 文の中で、読み込みたいモジュールの場所を示す文字列が モジュール指定子 です。

 

<script type="importmap"> ブロックは、

ブラウザの JavaScript モジュールシステムである ES Modules において、モジュール指定子(module specifiers)の解決方法をカスタマイズするための仕組みです。

 

ES Modules と モジュール指定子:

JavaScript でモジュールを扱う際、import 文を使って外部のコードを読み込みます。import 文の中で、読み込みたいモジュールの場所を示す文字列が モジュール指定子 です。

 

JavaScript import { someFunction } from 'ckeditor5/src/core';

// 'ckeditor5/src/core' がモジュール指定子

 

ブラウザは通常、このモジュール指定子を URL に変換してモジュールをダウンロードします。

しかし、複雑なプロジェクトや CDN (Content Delivery Network) を利用する場合など、デフォルトの解決方法ではうまくいかないことがあります。

importmap の役割: importmap は、ブラウザに対して「特定のモジュール指定子を見つけたら、代わりにこの URL を使ってください」というマッピング情報を提供します。

 

これにより、以下のことが可能になります。

 

 1.短縮されたモジュール指定子: 長い URL を import 文に書かずに、短い名前(例: ckeditor5) を使える。

 2.CDN の利用: CDN 上の特定のバージョンのライブラリを指定できます。

 3.内部モジュールのパスのマッピング: ライブラリ内の特定のパスを直接参照できます。  

 4.開発と本番環境でのパスの切り替え: 環境によって異なるモジュールの場所を指定できます。

 

 

■importmapの説明

<head> <meta charset="UTF-8">

<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>Document</title>

<script type="importmap">

{

"imports": { "lit": "https://cdn.jsdelivr.net/gh/lit/dist@2/core/lit-core.min.js",

"react": "https://unpkg.com/react@18/umd/react.development.js",

"react-dom": "https://unpkg.com/react-dom@18/umd/react-dom.development.js" }

}

</script>

</head>

 

importmapは、パスを指定する代わりに、任意の文字で代用できる仕組み。

 

と書いて、URLとエイリアス名(略名)を記入します。

指定しても、すぐにはダウンロードされません。実際にJavaScriptの中で必要になったときに初めてダウンロードされるようです。

 

<head> <meta charset="UTF-8">

<title>Document</title>

<script type="importmap">

{

"imports": { "lit": "https://cdn.jsdelivr.net/gh/lit/dist@2/core/lit-core.min.js",

"react": "https://unpkg.com/react@18/umd/react.development.js",

"react-dom": "https://unpkg.com/react-dom@18/umd/react-dom.development.js" }

}

</script>

</head>

 

 

■JSのimportmapとは

importmapは、ブラウザで実行するimport構文によって読み込まれるパッケージのURLを指定することができるようにします。importmapを一度指定すると、ドキュメント全体でエイリアスを使ったimport構文が書けるようになります。

 

<script type="module">

と書いて使う

 

こちらを参照>>

 

つまり、マッピングして利用ができるらしいです。

さて次

 

■import

import {

SimpleUploadAdapter

 

import の部分に追加しておく。

これで使えるようになります。

 

■日本語化

import translations from 'ckeditor5/translations/ja.js';

 

日本語で利用が出来るようになる。

 

 

■const editorConfig

const editorConfig = {
toolbar: {
items: [
'undo',
'redo',
'|',
'bold',
'uploadImage',
'insertImageViaUrl',
'link',
'|',
'sourceEditing',
'showBlocks',
'|',
'heading',
'|',
'insertTable'
],
shouldNotGroupWhenFull: false
},

 

エディターの設定です。必要な画像アイコンを表示させます。

'|'は区切りの線です。

 

 

■plugins:

plugins: [/

SimpleUploadAdapter,

....

....

],

 

プラグインで追加します。

 

 

■simpleUpload

simpleUpload: {

uploadUrl: '<?= base_url("/お好きなURL/") ?>',

//アップロード処理を書いたコントローラなどに飛ばします。

withCredentials: true,

headers: {
'X-CSRF-TOKEN': 'CSRF-Token',
Authorization: 'Bearer <JSON Web Token>'
}
},

 

アップロードするURLを指定します。フォルダを作りたかったので、コントローラをつくり、そこで、ファイル作成処理をしました。

 

 

■beforeSend: (xhr, formData)

beforeSend: (xhr, formData) => {
formData.append('部屋のid', '<?= 自由な値を ?>'); // formDataに`自由な値を入れる`
},

 

POSTでコントローラに送れる。

FormData は Web 開発で、特にファイルアップロードをするのによく使います。

特定のデータを用意しておき、キーとバリューの形で飛ばします。( key : value )で書くのは、JSONを勉強すると、おなじみですね。

 

■補足

サーバー側の PHP コード(あなたが提供したコード)が画像を受け取り、保存などの処理を行い、成功すれば {"uploaded": true, "url": "画像のURL"} という JSON レスポンスを返します。

 

echo json_encode(['uploaded' => true,
'url' => $file_url]);
}

 

SimpleUploadAdapter は、サーバーからのレスポンスを監視しています。

レスポンスの uploaded プロパティが true であれば、url プロパティに記載されている画像の URL を取得してくれます。さらにエディタ内にその画像を挿入する処理を行います。

つまり、trueと画像URLがあれば、それを使ってくれるわけです。

 

 

■initialData:

initialData: `<?php echo $OOO; ?>`, // PHPから初期データを渡す

language: 'ja',

 

初期値をわたしておきます。

テーブルから持ってきたデータを処理して、変数でわたします。

 

json_encode

echo json_encode(['uploaded' => true,
'url' => $file_url]);
}

 

 

 

 

 

考察

SimpleUploadAdapterを利用して、さらに、FormDataをつかって、値を用意する。

みたいな感じです。

はまった部分はJSでサーバーにフォルダを作れない事に気が付かなかった事です。途中で気が付いて、コントローラに飛ばして、フォルダをつくる処理をして、データを処理し、JSで戻す。というコードを追加しました。

画像を特定のフォルダに保存するには、コントローラを作った方がいいです。

 

 

importmapや非同期通信、JSONの知識も必要になるので、注意してください。fetch()の知識なども合わせて勉強しておくと良いです。

 

 

少しでも役に立ったら、友達登録しといてくれい~~、全力で迷惑メールを送り付けてやるぜ^^

 

 

CKeditor5の学習

CKeitor5の設定

・DL版と、CDN版がある

・初期値を設定しよう

・アイコンを覚えよう

 

 

 

【SEO対策・web広告・webコンサルティングのプラスワーク対応エリアについて】

プラスワークでは、東京、神奈川、千葉、埼玉を中心に全国でwebコンサルティング、SEO対策、ホームページの更新、ホームページのリニューアル運営代行をしております。売上アップをお考えならお気軽にご相談ください。

 

【SEO対策・web広告・webコンサルティングのプラスワーク 対応地域】

北海道 [ 北海道 ]

東北  [ 青森 | 岩手 | 山形 | 福島 | 秋田 | 宮城 ]

関東  [ 東京 | 埼玉 | 千葉 | 茨城 | 栃木 | 群馬 | 神奈川 ]

甲信越 [ 山梨 | 長野 | 新潟 ]

北陸  [ 石川 | 福井 | 富山 ]

東海  [ 愛知 | 静岡 | 岐阜 | 三重 ]

近畿  [ 大阪 | 兵庫 | 京都 | 滋賀 | 奈良 | 和歌山 ]

中国  [ 島根 | 山口 |鳥取 | 広島 | 岡山 ]

四国  [ 徳島 | 香川 | 愛媛 | 高知 ]

九州  [ 福岡 | 佐賀 | 長崎 | 熊本 | 大分 | 宮崎 | 鹿児島 ]

プラスワークでは全国でSEO対策、ホームページ更新、制作をしております。中小企業専門SEO対策・ホームページ更新制作会社、ダイレクト レスポンス マーケティング、ウェブ マーケティング、マーケティング 分析、口コミのよいSEO対策会社をお探しならプラスワークにお任せくださいませ。

 

 

【コンテンツ】

トップへ

更新レスキュー

料金について

制作実績

お客様の声

よくある質問

会社概要

お問い合わせ

【更新レスキュー】

ライトコース

ゴールドコース

プラチナコース

 

【その他】

ニュース

メルマガ登録

特別資料プレゼント

相互リンク募集中

【課題から探す】

ホームページの課題

SEO対策とは

SEO対策がダメな理由

上位表示されない理由

相互リンクとは

順位が落ちてしまう原因

 

 

フェイスブック  ツイッター