Ckeitor5の画像アップロード
CKEditorで画像をアップロードしたい
・CDNのverで入れる ・クラシックを利用 ・simpleUploader ・Config設定 ・importmap ・simpleUplode ・JS、非同期通信 |
Ckeditor5を使って、画像を指定したフォルダに登録します。
画像をアップロードするには、json、JSの理解が必要になります。
フォルダを作成して画像をアップロードする場合は、ControllerにUploade.phpをつくり、処理を書いています。
JSで非同期通信をしています。
Q.CDN or DLどっちにするか?
DLバージョンの設定情報が少ないため、CDNバージョンにした。
理由は、「Command line」だとNode.js前提の情報しかない。
「CDN」だとバグ改修とか勝手にやってくれて便利だろうけど外部依存になるので、変更があった場合に、いきなり止まる可能性があります。
(何%の可能性なのか?分からないので、とりあえず、今回はCDNバージョンを使ってみます。
【参照】
https://jpn.itlibra.com/article?id=20803
【cssの読込み】
<link rel="stylesheet" href="https://cdn.ckeditor.com/ckeditor5/43.0.0/ckeditor5.css"> |
【ライセンス】
与えられたCKEditorライセンスのオープンソース制限に従う限り、あなたの商用ウェブサイトや製品に無料で修正、統合、使用することができます。
CKEditor 5はGPL 2+の条項でライセンスされています。
【WYSIWYGエディタ】
WYSIWYGエディタという。直感的に操作ができます。
1.データの取得と設定
【初期データ】
initialData: `<?php echo $txts['value']; ?>`, // PHPから初期データを渡す |
初期データのセット。
$txts['value']; ?は、コードイグナイター3.2の変数です。
これでJSに初期値を設定できます。
【データを飛ばす】
simpleUpload: { uploadUrl: '<?= base_url("/upload/image_upload/$room_id01") ?>',//ここでアップロード処理を書いたコントローラに飛ぶ headers: { |
データをセットしたい場合はsetData関数を使用する。
editor.setData( '<p>Some text.</p>' );
逆に取り出したい場合はgetData関数を使用する。
const data = editor.getData();
【参照】
2.import-maps
import-maps
異なるモジュールバージョンを同じプロジェクト内で使い分けることが可能になります。
JSON オブジェクトです。
<script type="importmap"> import React from 'react'; |
importmapを一度指定すると、ドキュメント全体で、エイリアスを使ったimport構文が書けるようになります。
Import Mapsを使うことで、複数のファイルから読み込まれるJavaScriptのパスが変わった時に、書き換える場所を一箇所だけにすることができます。
【ckeditor5では】
<script type="importmap"> |
としてCDNを読み込んでいます。
3.KCFinder
KCFinderは無料で使える。CKFinderは、有料です。
今回は力技で解決していきます。
KCFinderは開発が止まってしまい、色々な修整が必要になります。
・使わなくてよい |
【参照】
https://unispot.net/php/kcfinder-php-fix.html
4.ツールバー
ボタン名称 | 役割 |
---|---|
Undo |
操作の取り消し |
Redo |
操作のやり直し(Undoした内容を元に戻す) |
Style |
書式設定スタイルの組み合わせをテキストに適用する |
Special Characters |
記号一覧のパネルが表示されて、選択した記号を入力できる |
Underline |
下線(アンダーライン)をつける |
Code Block |
プログラミング言語を選択してコードブロックを追加する |
Strikethrough |
打ち消し線をつける |
Subscript |
下付き文字をつける |
Superscript |
上付き文字をつける |
Horizontal Line |
水平線を追加する |
Text Alignment |
文字揃えを行う(「text-align-center」などのclassがつく) |
Remove Format |
選択した文字の装飾を削除する |
Table |
行と列を指定してテーブルを追加する |
Indent |
文字やリストのインデントをする |
Outdent |
文字やリストのアウトデントをする |
Language |
言語の設定をする(lang属性がつく) |
Bold |
太字にする |
Italic |
斜体にする |
Link |
リンクをつける |
Bulleted List |
箇条書きリスト(<ul>タグ)を追加する |
Numbered List |
番号付きリスト(<ol>タグ)を追加する |
Block Quote |
引用ブロックを追加する |
Image |
画像を追加する |
Source |
ソースコード表示に切り替える |
Heading |
見出しを選択する(タグは後述する「Headings」で選択可能) |
Code |
コード(<code>タグ)をつける |
Divider |
ツールバー上で区切りの役割をするアイコンを表示する |
Wrapping |
このボタン以降をツールバーの次の行へ移動する |
以下のように設定しました。
画像のアイコンが2つあります。
左のアイコンが、アップロードアイコンです。画像をアップロードするために使います。
クリックすると、ローカルのブラウザが立ち上がり、JSによってControllerに飛ぶようにします。
コントローラで引数を受け取り、画像をフォルダに保存する処理をします。
■必要なコードについて
1.headerに入力
2.初期値を入れる
3.importmapを追加
4.Config名を設定
5.idを使う
6.
1.【headerに入力する】
<link rel="stylesheet" href="//cdn.ckeditor.com/ckeditor5/43.0.0/ckeditor5.css"> |
2.【初期値を入れる】
$page_contents['value']=set_value('page_contents', isset($result['page_contents']) ? htmlspecialchars_decode($result['page_contents']) : '少々お待ちくださいませ',false); |
初期値を設定する。
htmlspecialchars_decodeで<>の文字を回避する。
CI3.2での書き方です。
3.【importmap】
<script type="importmap"> |
importmapを一度指定すると、ドキュメント全体でエイリアスを使ったimport構文が書けるようになります。
4.【Config名を設定】
const editorConfig01 = { ... .. initialData: `<?php echo $page_contents01['value']; ?> ... ClassicEditor.create(document.querySelector('#editor01'), editorConfig01) |
5. idを追加する。
$page_contents01['id'] = 'editor01'; |
テキストエリアの部分にIDを追加して、結び付ける。
■参照
6.【module】の部分について
<script type="module"> import translations from 'ckeditor5/translations/ja.js'; { ] simpleUpload: { uploadUrl: '<?= base_url("/upload/image_upload/$ataiwokaku") ?>',//ここでアップロード処理を書いたコントローラに飛ぶ // Headers sent along with the XMLHttpRequest to the upload server. ClassicEditor.create(document.querySelector('#editor'), editorConfig) |
【ファイル形式】
upload: { |
'jpg','jpeg',は違うので注意が必要です。
7.【simpleUploadの部分】
simpleUpload: {
// Headers sent along with the XMLHttpRequest to the upload server. ... .. |
simpleUploadを使って、XMLHttpRequest通信、jsonで書いて、情報の受け渡しをします。
以下を読むと、サーバー側の設定が必要と書いてあります。画像がアップロード出来る環境があれば、大丈夫です。
uploadUrl: '<?= base_url("/upload/image_upload/$ataiwokaku") ?>', |
コントローラで「Upload」ファイルを作り
image_upload関数を作ります。引数に$ataiwokakuを取る事で画像を保存する処理をします。
5.画像の拡張子
upload: { |
画像ファイルが表示されない場合、'jpg','jpeg'と二つを書くこと。
これで、エラーが減ります。
1画面に複数つくる
ClassicEditor.create(document.querySelector('#editor'), editorConfig) |
1つの画面で複数使う場合
「editorConfig」と「id」の名前を変える事で、複数作る事ができます。
const editorConfig = { |
これを設定して、呼び出している訳です。
6.考察
設定するのに、5日ほどかかりました。
とにかく画像をアップロードする部分が理解できませんでした。SimpleUploderをどうやって使うのか?については情報が少ないので困りました。
JSではディレクトリ作成などの、ファイル操作が完了しないので、サーバーサイドのPHPで処理をしましょう。
コントローラで飛ばしている最中にmkdir()などの処理はしない方がいいです。
という訳で、長い戦いは終わり、処理ができました。
追記
importmapを忘れずに
【参照】
PHPの勉強方法
目安は1日3~5時間の勉強で100日程度です。現在4年以上が経過しています。毎日4時間、さらに実践で4年です。すると、SQLの細かい所まで分かります。
PHPを学ぶには、独自の言葉を覚える必要があります。「・」が付いているものは、外部のサイトへ飛びます。
■ 基本編 ■
■クエリ
Active Recordとは?
クエリヘルパー関数
■フォーム
■DBに情報を入れる
■メール
■DB接続
テーブル接続でデータを入れる
■エディター
Ckeditor5
■会員登録を作ろう
管理画面を作ろう
ライブラリを利用して作ろう
オートロードとは
無名関数とは?
MVCとは何か?
■アップロード
【フレームワーク】
基本的には、ララベルを学ぶ方がよい。 ララベルはコンポーザー
MYSQLについて
MYSQLの学習方法について。DBの操作方法を覚えます。 四大操作をまずは覚えておきましょう。
■ 設計について■
UMLとは何か?
ER図を覚えよう
コードイグナイターの勉強方法
コードイグナイターを学んでいきましょう。「・」が付いているものは、外部のサイトへ飛びます。
■ フレームワーク ■
フレームワークは何を使ったらいいのか?
ララベルとは?
コードイグナイターとは?
オートロードとは
無名関数とは?
MVCとは何か?
【フレームワーク】
基本的には、ララベルを学ぶ方がよい。 ララベルはコンポーザーが入っている。
参照サイト
大変申し訳ありませんが、当社ではサービスの質を落とさないために、月の契約は5件までとさせていただいております。 契約をお待ちいただく可能性もございますので、ご了承のほどよろしくお願いいたします
この記事を読んだ人は、こんな記事も読んでいます
SEO対策の基本 外部要因とは?
SEO対策の基本的である、外部要因とは何か?
SEO対策をするなら絶対に知っておきたい、基本知識です。
売れるサイトを作るのに知って起きたい知識
サーチエンジンマーケティングという言葉をご存知でしょうか?
ホームページで商品やサービスを売る時に知っておきたいマーケティング
についてご紹介いたします。
SEO対策をする5つのメリットとは?
なぜ上位表示させることが大事なのか?なぜSEO対策をする必要があるのか
についてご紹介させていただきます。
SEO対策の内部要因とは?
上位表示させるためには、内部要因について知っておくことも大事です。
キーワードを上位表示させるために必要なのは、ソースコードを最適化することです
内部要因の対策について知りたい方はこちらへ
キーワード対策をする前に
そのキーワード対策。ちょっと待ってください。
そのまま対策をすると、必ずお金を損してしまいます。個人事業主や中小企業は
そんな大きなキーワードで対策をしてはいけません。
広告費用が高くなる本当の理由とは?
売れないサイトに集めていませんか?広告費用がかかるわりには
お問い合わせが少ない・・・と感じる方は多いはずです。
購入率の悪いサイトに集客をしている可能性があります。