{"id":1390,"date":"2021-05-14T18:51:55","date_gmt":"2021-05-14T15:51:55","guid":{"rendered":"https:\/\/www.etemkeskin.com\/?p=1390"},"modified":"2021-05-14T18:51:57","modified_gmt":"2021-05-14T15:51:57","slug":"how-to-integrate-ckeditor5-in-web-aplications-with-custom-plugins","status":"publish","type":"post","link":"https:\/\/www.etemkeskin.com\/index.php\/2021\/05\/14\/how-to-integrate-ckeditor5-in-web-aplications-with-custom-plugins\/","title":{"rendered":"How to Integrate ckeditor5 in Web Aplications with Custom Plugins"},"content":{"rendered":"\n<p><strong>Ckeditor<\/strong> is the most used text editor in web applications. In this post, I will explain how to use <strong>CKeditor5<\/strong> in web applications we develop (laravel, codeigniter \u2026 in PHP, Django, Flask \u2026 in Python).<\/p>\n\n\n\n<p>Customizing the toolbar and integrating plugins into the editor in <strong>ckeditor5<\/strong> is a little different from <strong>ckeditor4<\/strong>. <strong>Plugins<\/strong> are installed as a package in CKEditor 5.<\/p>\n\n\n\n<p>Before installing Ckeditor5, the javascript package manager npm (node package manager) must be installed on computer.<\/p>\n\n\n\n<h3>1. Installation<\/h3>\n\n\n\n<p>We will use the online buider on the official website to install the ckeditor on our computer. You can enter <strong>Ckeditor5 online builder<\/strong> from the link below.<\/p>\n\n\n\n<p><a href=\"https:\/\/ckeditor.com\/ckeditor-5\/online-builder\/\">https:\/\/ckeditor.com\/ckeditor-5\/online-builder\/<\/a><\/p>\n\n\n\n<p>We choose the type of ckeditor we can choose on the page that comes up. I chose <strong>Classic<\/strong> here.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"1045\" height=\"836\" src=\"https:\/\/www.etemkeskin.com\/wp-content\/uploads\/2021\/05\/image.png\" alt=\"\" class=\"wp-image-1392\"\/><figcaption>Ckeditor5 Editor Selection Screen<\/figcaption><\/figure>\n\n\n\n<p><strong>In step 2,<\/strong> we choose the plugins we want in our editor. If you choose paid plugins, you will receive a license warning from console after installation.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"981\" height=\"832\" src=\"https:\/\/www.etemkeskin.com\/wp-content\/uploads\/2021\/05\/image-7.png\" alt=\"\" class=\"wp-image-1442\"\/><figcaption>Ckeditor5 plugin Selection Screen<\/figcaption><\/figure>\n\n\n\n<p><strong>In step 3, <\/strong>we select the features we want the editor to have in the toolbar.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"883\" height=\"637\" src=\"https:\/\/www.etemkeskin.com\/wp-content\/uploads\/2021\/05\/image-8.png\" alt=\"\" class=\"wp-image-1443\"\/><figcaption>Ckeditor5 Toolbar Properties Selection Screen<\/figcaption><\/figure>\n\n\n\n<p><strong>In step 4, <\/strong>we select in which language we will use the editor.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"1224\" height=\"359\" src=\"https:\/\/www.etemkeskin.com\/wp-content\/uploads\/2021\/05\/image-3.png\" alt=\"\" class=\"wp-image-1396\"\/><figcaption>Ckeditor5 Language Selection Screen<\/figcaption><\/figure>\n\n\n\n<p><strong>In the last step<\/strong>, we download ckeditor5 to our computer with the preferences we chose.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"1225\" height=\"437\" src=\"https:\/\/www.etemkeskin.com\/wp-content\/uploads\/2021\/05\/image-4.png\" alt=\"\" class=\"wp-image-1398\"\/><figcaption>Ckeditor5 Language Selection Screen<\/figcaption><\/figure>\n\n\n\n<p>When we examine the <strong>package.json<\/strong> file of Ckeditor5 that we downloaded to computer, we can see the dependencies of ckeditor. We identified these dependencies with <strong>ckeditor online-builder<\/strong>. These plugins have not yet been downloaded on our computer, we will install them on our computer with <strong>npm<\/strong>.<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;mode&quot;:&quot;javascript&quot;,&quot;mime&quot;:&quot;application\/json&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;showPanel&quot;:false,&quot;language&quot;:&quot;JSON&quot;,&quot;modeName&quot;:&quot;json&quot;}\">{\n  &quot;name&quot;: &quot;ckeditor5-custom-build&quot;,\n  &quot;author&quot;: &quot;CKSource&quot;,\n  &quot;description&quot;: &quot;A custom CKEditor 5 build made by the CKEditor 5 online builder.&quot;,\n  &quot;version&quot;: &quot;0.0.1&quot;,\n  &quot;license&quot;: &quot;SEE LICENSE IN LICENSE.md&quot;,\n  &quot;private&quot;: true,\n  &quot;main&quot;: &quot;.\/build\/ckeditor.js&quot;,\n  &quot;devDependencies&quot;: {\n    &quot;@ckeditor\/ckeditor5-adapter-ckfinder&quot;: &quot;^27.1.0&quot;,\n    &quot;@ckeditor\/ckeditor5-alignment&quot;: &quot;^27.1.0&quot;,\n    &quot;@ckeditor\/ckeditor5-autoformat&quot;: &quot;^27.1.0&quot;,\n    &quot;@ckeditor\/ckeditor5-basic-styles&quot;: &quot;^27.1.0&quot;,\n    &quot;@ckeditor\/ckeditor5-block-quote&quot;: &quot;^27.1.0&quot;,\n    &quot;@ckeditor\/ckeditor5-code-block&quot;: &quot;^27.1.0&quot;,\n    &quot;@ckeditor\/ckeditor5-dev-utils&quot;: &quot;^24.4.2&quot;,\n    &quot;@ckeditor\/ckeditor5-dev-webpack-plugin&quot;: &quot;^24.4.2&quot;,\n    &quot;@ckeditor\/ckeditor5-editor-classic&quot;: &quot;^27.1.0&quot;,\n    &quot;@ckeditor\/ckeditor5-essentials&quot;: &quot;^27.1.0&quot;,\n    &quot;@ckeditor\/ckeditor5-font&quot;: &quot;^27.1.0&quot;,\n    &quot;@ckeditor\/ckeditor5-heading&quot;: &quot;^27.1.0&quot;,\n    &quot;@ckeditor\/ckeditor5-highlight&quot;: &quot;^27.1.0&quot;,\n    &quot;@ckeditor\/ckeditor5-horizontal-line&quot;: &quot;^27.1.0&quot;,\n    &quot;@ckeditor\/ckeditor5-html-embed&quot;: &quot;^27.1.0&quot;,\n    &quot;@ckeditor\/ckeditor5-image&quot;: &quot;^27.1.0&quot;,\n    &quot;@ckeditor\/ckeditor5-indent&quot;: &quot;^27.1.0&quot;,\n    &quot;@ckeditor\/ckeditor5-link&quot;: &quot;^27.1.0&quot;,\n    &quot;@ckeditor\/ckeditor5-list&quot;: &quot;^27.1.0&quot;,\n    &quot;@ckeditor\/ckeditor5-media-embed&quot;: &quot;^27.1.0&quot;,\n    &quot;@ckeditor\/ckeditor5-mention&quot;: &quot;^27.1.0&quot;,\n    &quot;@ckeditor\/ckeditor5-page-break&quot;: &quot;^27.1.0&quot;,\n    &quot;@ckeditor\/ckeditor5-paragraph&quot;: &quot;^27.1.0&quot;,\n    &quot;@ckeditor\/ckeditor5-paste-from-office&quot;: &quot;^27.1.0&quot;,\n    &quot;@ckeditor\/ckeditor5-remove-format&quot;: &quot;^27.1.0&quot;,\n    &quot;@ckeditor\/ckeditor5-special-characters&quot;: &quot;^27.1.0&quot;,\n    &quot;@ckeditor\/ckeditor5-table&quot;: &quot;^27.1.0&quot;,\n    &quot;@ckeditor\/ckeditor5-theme-lark&quot;: &quot;^27.1.0&quot;,\n    &quot;@ckeditor\/ckeditor5-typing&quot;: &quot;^27.1.0&quot;,\n    &quot;@ckeditor\/ckeditor5-word-count&quot;: &quot;^27.1.0&quot;,\n    &quot;@wiris\/mathtype-ckeditor5&quot;: &quot;^7.26.0&quot;,\n    &quot;css-loader&quot;: &quot;^5.2.4&quot;,\n    &quot;postcss&quot;: &quot;^8.2.10&quot;,\n    &quot;postcss-loader&quot;: &quot;^4.2.0&quot;,\n    &quot;raw-loader&quot;: &quot;^4.0.2&quot;,\n    &quot;style-loader&quot;: &quot;^2.0.0&quot;,\n    &quot;terser-webpack-plugin&quot;: &quot;^4.2.3&quot;,\n    &quot;webpack&quot;: &quot;^4.46.0&quot;,\n    &quot;webpack-cli&quot;: &quot;^4.6.0&quot;\n  },\n  &quot;scripts&quot;: {\n    &quot;build&quot;: &quot;webpack --mode production&quot;,\n    &quot;start&quot;: &quot;npx http-server -o .\/sample -s -c-1&quot;\n  }\n}<\/pre><\/div>\n\n\n\n<p>To install the packages in the <strong>package.json<\/strong> above, we open <strong>terminal screen <\/strong>in the ckeditor folder that we downloaded to our computer, in the directory where the package.json file is located. Then we install the packages on our computer by running the following <strong>npm code<\/strong>.<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;mode&quot;:&quot;htmlmixed&quot;,&quot;mime&quot;:&quot;text\/html&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;showPanel&quot;:false,&quot;language&quot;:&quot;HTML&quot;,&quot;modeName&quot;:&quot;html&quot;}\">npm install<\/pre><\/div>\n\n\n\n<p>When we run this code, a folder called <strong>node_modules<\/strong> will be created. The ckeditor packages will be installed in this folder.<\/p>\n\n\n\n<p>We can see which packages were imported into ckeditor5 in the <strong>ckeditor.js<\/strong> file in the<strong> src folder<\/strong> shown in the picture below. If we want to remove some of these packages later, it is necessary to remove both from the package.json file and from here.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"1004\" height=\"751\" src=\"https:\/\/www.etemkeskin.com\/wp-content\/uploads\/2021\/05\/image-5.png\" alt=\"\" class=\"wp-image-1403\"\/><figcaption>Packages used by the Ckeditor5 editor<\/figcaption><\/figure>\n\n\n\n<p><strong>In the last step<\/strong>, we will build ckeditor5 with all the packages by running the following code on the <strong>terminal screen<\/strong>.<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;mode&quot;:&quot;htmlmixed&quot;,&quot;mime&quot;:&quot;text\/html&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;showPanel&quot;:false,&quot;language&quot;:&quot;HTML&quot;,&quot;modeName&quot;:&quot;html&quot;}\">npm run build<\/pre><\/div>\n\n\n\n<h3>2. Usage<\/h3>\n\n\n\n<p>To use ckeditor5 on HTML page, we import the ckeditor.js file from the <strong>build folder<\/strong>.<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;mode&quot;:&quot;htmlmixed&quot;,&quot;mime&quot;:&quot;text\/html&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;showPanel&quot;:false,&quot;language&quot;:&quot;HTML&quot;,&quot;modeName&quot;:&quot;html&quot;}\">&lt;script src=&quot;\/ckeditor5\/build\/ckeditor.js'&quot;&gt;&lt;\/script&gt;<\/pre><\/div>\n\n\n\n<p>Then we define the <strong>id attribute <\/strong>of the <strong>textarea<\/strong> element as <strong>editor<\/strong>.<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;mode&quot;:&quot;htmlmixed&quot;,&quot;mime&quot;:&quot;text\/html&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;showPanel&quot;:false,&quot;language&quot;:&quot;HTML&quot;,&quot;modeName&quot;:&quot;html&quot;}\">&lt;form action=&quot;&quot; method=&quot;post&quot;&gt;\n       &lt;textarea name=&quot;&quot; id=&quot;editor&quot; class=&quot;ckEditor&quot;&gt;&lt;\/textarea&gt;\n                &lt;br&gt;\n       &lt;button type=&quot;submit&quot; class=&quot;btn btn-primary float-right&quot;&gt;Submit&lt;\/button&gt;       \n&lt;\/form&gt;   <\/pre><\/div>\n\n\n\n<p>In the last step, we create the editor by calling the <a href=\"https:\/\/ckeditor.com\/docs\/ckeditor5\/latest\/api\/module_editor-classic_classiceditor-ClassicEditor.html#static-function-create\"><code>ClassicEditor.create()<\/code><\/a> method between the javascript tags under our html page. We can make toolbar and other settings as in the code block below.<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;mode&quot;:&quot;javascript&quot;,&quot;mime&quot;:&quot;text\/javascript&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;showPanel&quot;:false,&quot;language&quot;:&quot;JavaScript&quot;,&quot;modeName&quot;:&quot;js&quot;}\">&lt;script&gt;\nClassicEditor\n            .create(document.querySelector( '#editor' ), {\n\n                fontFamily: {\n                    options: [\n                        'default',\n                        'Ubuntu, Arial, sans-serif',\n                        'Ubuntu Mono, Courier New, Courier, monospace'\n                    ]\n                },\n                toolbar: {\n                    items: ['heading', '|', 'imageUpload', 'bold', 'italic', 'underline', 'fontFamily', 'undo', 'redo',\n                    'fontSize', , 'fontFamily', 'fontColor', 'fontBackgroundColor', 'htmlEmbed', 'link', 'insertTable', \n                    'mediaEmbed', 'bulletedList', 'numberedList', '|','MathType', 'blockQuote', 'specialCharacters'],\n                    shouldNotGroupWhenFull: true\n                },\n                image: {\n                    \/\/ You need to configure the image toolbar, too, so it uses the new style buttons.\n                    toolbar: ['imageTextAlternative', '|', 'imageStyle:alignLeft', 'imageStyle:full', 'imageStyle:alignRight', 'imageStyle:alignCenter'],\n\n                    styles: [\n                        \/\/ This option is equal to a situation where no style is applied.\n                        'full',\n                        'side',\n                        'alignCenter',\n                        \/\/ This represents an image aligned to the left.\n                        'alignLeft',\n                        \/\/ This represents an image aligned to the right.\n                        'alignRight'\n                    ]\n                }\n            })\n            .then(editor =&gt; {\n                \/\/ This place loads the adapter.\n                editor.plugins.get('FileRepository').createUploadAdapter = (loader) =&gt; {\n                    return new UploadAdapter(loader);\n                };\n            })\n            .catch(error =&gt; {\n                console.error(error);\n            });\n&lt;\/script&gt;<\/pre><\/div>\n\n\n\n<p>When we render the html page we created from the web browser, we get the following screen of ckeditor5.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"763\" height=\"344\" src=\"https:\/\/www.etemkeskin.com\/wp-content\/uploads\/2021\/05\/image-6.png\" alt=\"\" class=\"wp-image-1431\"\/><figcaption>Ckeditor5 Image<\/figcaption><\/figure>\n\n\n\n<h3>3. Image Uploading<\/h3>\n\n\n\n<p>There are several methods if you want Ckeditor5 to work with image files. In this post I will explain about the easiest and most convenient. <\/p>\n\n\n\n<p>First we create a file called <strong>imageupload.js<\/strong> inside the ckeditor5 folder. We import this file into our project.<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;mode&quot;:&quot;htmlmixed&quot;,&quot;mime&quot;:&quot;text\/html&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;showPanel&quot;:false,&quot;language&quot;:&quot;HTML&quot;,&quot;modeName&quot;:&quot;html&quot;}\">&lt;script src=&quot;\/ckeditor5\/build\/ckeditor.js'&quot;&gt;&lt;\/script&gt;\n&lt;script src=&quot;\/ckeditor5\/imageupload.js&quot;&gt;&lt;\/script&gt;<\/pre><\/div>\n\n\n\n<p>Then we paste the following code block into this file by updating the api that will be used in the backend (ie server). In the code block below, <strong>jquery<\/strong> is used. If you want, you can use <strong>axios<\/strong> or<strong> fetch api<\/strong>. In the above code block, it is shown how to use <strong>imageupload<\/strong> in <a href=\"https:\/\/ckeditor.com\/docs\/ckeditor5\/latest\/api\/module_editor-classic_classiceditor-ClassicEditor.html#static-function-create\"><code>ClassicEditor.create()<\/code><\/a> method.<\/p>\n\n\n\n<p>In this way, you will be able to use your image files with the editor easily.<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;mode&quot;:&quot;javascript&quot;,&quot;mime&quot;:&quot;text\/javascript&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;showPanel&quot;:false,&quot;language&quot;:&quot;JavaScript&quot;,&quot;modeName&quot;:&quot;js&quot;}\">class UploadAdapter {\n    constructor(loader) {\n        this.loader = loader;\n    }\n\n    upload() {\n        return this.loader.file\n            .then(uploadedFile =&gt; {\n                return new Promise((resolve, reject) =&gt; {\n                    const data = new FormData();\n                    data.append('upload', uploadedFile);\n                    $.ajax({\n                        url: ADMIN_URL + '\/api\/upload_file.php',\n                        type: 'POST',\n                        data: data,\n                        dataType: 'json',\n                        processData: false,\n                        contentType: false,\n                        success: response =&gt; {\n                            resolve({\n                                default: response.url\n                            });\n                        },\n                        error: () =&gt; {\n                            reject('Upload failed');\n                        }\n                    });\n                });\n            });\n    }\n\n    abort() {\n    }\n}<\/pre><\/div>\n\n\n\n<p>Good luck\u2026<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ckeditor is the most used text editor in web applications. In this post, I will explain how to use CKeditor5 in web applications we develop (laravel, codeigniter \u2026 in PHP, Django, Flask \u2026 in Python). Customizing the toolbar and integrating plugins into the editor in ckeditor5 is a little different from ckeditor4. Plugins are installed [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1,50,2,4],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v16.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to Integrate ckeditor5 in Web Aplications with Custom Plugins - blog website<\/title>\n<meta name=\"description\" content=\"Ckeditor is the most used text editor in web applications. In this post, I will explain how to use CKeditor5 in web applications we develop (laravel, codeigniter \u2026 in PHP, Django, Flask \u2026 in Python).Customizing the toolbar and integrating plugins into the editor in ckeditor5 is a little different from ckeditor4. Plugins are installed as a package in CKEditor 5.Before installing Ckeditor5, the javascript package manager npm (node package manager) must be installed on computer.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.etemkeskin.com\/index.php\/2021\/05\/14\/how-to-integrate-ckeditor5-in-web-aplications-with-custom-plugins\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Integrate ckeditor5 in Web Aplications with Custom Plugins - blog website\" \/>\n<meta property=\"og:description\" content=\"Ckeditor is the most used text editor in web applications. In this post, I will explain how to use CKeditor5 in web applications we develop (laravel, codeigniter \u2026 in PHP, Django, Flask \u2026 in Python).Customizing the toolbar and integrating plugins into the editor in ckeditor5 is a little different from ckeditor4. Plugins are installed as a package in CKEditor 5.Before installing Ckeditor5, the javascript package manager npm (node package manager) must be installed on computer.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.etemkeskin.com\/index.php\/2021\/05\/14\/how-to-integrate-ckeditor5-in-web-aplications-with-custom-plugins\/\" \/>\n<meta property=\"og:site_name\" content=\"blog website\" \/>\n<meta property=\"article:published_time\" content=\"2021-05-14T15:51:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-05-14T15:51:57+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.etemkeskin.com\/wp-content\/uploads\/2021\/05\/image.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data1\" content=\"6 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.etemkeskin.com\/#website\",\"url\":\"https:\/\/www.etemkeskin.com\/\",\"name\":\"blog website\",\"description\":\"Etem KESK\\u0130N\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/www.etemkeskin.com\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"tr\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.etemkeskin.com\/index.php\/2021\/05\/14\/how-to-integrate-ckeditor5-in-web-aplications-with-custom-plugins\/#primaryimage\",\"inLanguage\":\"tr\",\"url\":\"https:\/\/www.etemkeskin.com\/wp-content\/uploads\/2021\/05\/image.png\",\"contentUrl\":\"https:\/\/www.etemkeskin.com\/wp-content\/uploads\/2021\/05\/image.png\",\"width\":1045,\"height\":836},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.etemkeskin.com\/index.php\/2021\/05\/14\/how-to-integrate-ckeditor5-in-web-aplications-with-custom-plugins\/#webpage\",\"url\":\"https:\/\/www.etemkeskin.com\/index.php\/2021\/05\/14\/how-to-integrate-ckeditor5-in-web-aplications-with-custom-plugins\/\",\"name\":\"How to Integrate ckeditor5 in Web Aplications with Custom Plugins - blog website\",\"isPartOf\":{\"@id\":\"https:\/\/www.etemkeskin.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.etemkeskin.com\/index.php\/2021\/05\/14\/how-to-integrate-ckeditor5-in-web-aplications-with-custom-plugins\/#primaryimage\"},\"datePublished\":\"2021-05-14T15:51:55+00:00\",\"dateModified\":\"2021-05-14T15:51:57+00:00\",\"author\":{\"@id\":\"https:\/\/www.etemkeskin.com\/#\/schema\/person\/dcbc30282861ce578b96a79ce8789629\"},\"description\":\"Ckeditor is the most used text editor in web applications. In this post, I will explain how to use CKeditor5 in web applications we develop (laravel, codeigniter \\u2026 in PHP, Django, Flask \\u2026 in Python).Customizing the toolbar and integrating plugins into the editor in ckeditor5 is a little different from ckeditor4. Plugins are installed as a package in CKEditor 5.Before installing Ckeditor5, the javascript package manager npm (node package manager) must be installed on computer.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.etemkeskin.com\/index.php\/2021\/05\/14\/how-to-integrate-ckeditor5-in-web-aplications-with-custom-plugins\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.etemkeskin.com\/index.php\/2021\/05\/14\/how-to-integrate-ckeditor5-in-web-aplications-with-custom-plugins\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.etemkeskin.com\/index.php\/2021\/05\/14\/how-to-integrate-ckeditor5-in-web-aplications-with-custom-plugins\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Ana sayfa\",\"item\":\"https:\/\/www.etemkeskin.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to Integrate ckeditor5 in Web Aplications with Custom Plugins\"}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.etemkeskin.com\/#\/schema\/person\/dcbc30282861ce578b96a79ce8789629\",\"name\":\"etemkeskin\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.etemkeskin.com\/#personlogo\",\"inLanguage\":\"tr\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/6af0148b790691ed24ae245fb3dc773b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/6af0148b790691ed24ae245fb3dc773b?s=96&d=mm&r=g\",\"caption\":\"etemkeskin\"},\"url\":\"https:\/\/www.etemkeskin.com\/index.php\/author\/etemkeskinyahoo-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","_links":{"self":[{"href":"https:\/\/www.etemkeskin.com\/index.php\/wp-json\/wp\/v2\/posts\/1390"}],"collection":[{"href":"https:\/\/www.etemkeskin.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.etemkeskin.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.etemkeskin.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.etemkeskin.com\/index.php\/wp-json\/wp\/v2\/comments?post=1390"}],"version-history":[{"count":92,"href":"https:\/\/www.etemkeskin.com\/index.php\/wp-json\/wp\/v2\/posts\/1390\/revisions"}],"predecessor-version":[{"id":1498,"href":"https:\/\/www.etemkeskin.com\/index.php\/wp-json\/wp\/v2\/posts\/1390\/revisions\/1498"}],"wp:attachment":[{"href":"https:\/\/www.etemkeskin.com\/index.php\/wp-json\/wp\/v2\/media?parent=1390"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.etemkeskin.com\/index.php\/wp-json\/wp\/v2\/categories?post=1390"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.etemkeskin.com\/index.php\/wp-json\/wp\/v2\/tags?post=1390"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}