Hướng Dẫn Sử Dụng Trình Soạn Thảo CKEditor - Openplanning
Có thể bạn quan tâm
- Tất cả tài liệu
- Java
- Java Basic
- Java Collections Framework
- Java IO
- Java New IO
- Java Date Time
- Servlet/JSP
- Eclipse Tech
- SWT
- RCP
- RAP
- Eclipse Plugin Tools
- XML & HTML
- Java Opensource
- Java Application Servers
- Maven
- Gradle
- Servlet/Jsp
- Thymeleaf
- Spring
- Spring Boot
- Spring Cloud
- Struts2
- Hibernate
- Java Web Service
- JavaFX
- SWT
- Oracle ADF
- Android
- iOS
- Python
- Swift
- C#
- C/C++
- Ruby
- Dart
- Batch
- Database
- Oracle
- MySQL
- SQL Server
- PostGres
- Other Database
- Oracle APEX
- Report
- Client
- ECMAScript / Javascript
- TypeScript
- NodeJS
- ReactJS
- Flutter
- AngularJS
- HTML
- CSS
- Bootstrap
- OS
- Ubuntu
- Solaris
- Mac OS
- VPS
- Git
- SAP
- Amazon AWS
- Khác
- Chưa phân loại
- Phần mềm & ứng dụng tiện ích
- VirtualBox
- VmWare
- Giới thiệu
- CKEditor là gì?
- Download CKEditor
- Các ví dụ cơ bản
- Tùy biến cơ bản
- Chỉnh sửa nội tuyến (Inline Editing)
- Cấu hình tùy biến CKEditor
- Các cách cấu hình Toolbar
- Các ví dụ khác trên website CKEditor

1. Giới thiệu
Tài liệu được viết dựa trên:- CKEditor 4.4.7
2. CKEditor là gì?
CKEditor là một trình soạn thảo văn bản HTML sẵn sàng cho sử dụng được thiết kế để đơn giản hóa việc tạo ra nội dung web. Đó là một trình soạn thảo WYSIWYG mang lại các tính năng xử lý văn bản phổ biến trực tiếp đến trang web của bạn.CKEditor là một ứng dụng mã nguồn mở, có nghĩa là bạn có thể sửa đổi nó theo bất kỳ cách nào bạn muốn. Lợi ích của nó đến từ một cộng đồng năng động không ngừng phát triển các ứng dụng với các add-ons miễn phí và quá trình phát triển minh bạch (transparent development process).3. Download CKEditor
- https://ckeditor.com/ckeditor-4/download/#
Bạn có 4 lựa chọn download CKEditor.- Basic Package:
- Đây là gói cơ bản, bao gồm các chức năng cơ bản của CKEditor, và là gói nhỏ gọn.
- Standard Package:
- Đây là gói tiêu chuẩn có khoảng 48 plugin.
- Full Package:
- Đây là gói đầy đủ, với tất cả các plugin của CKEditor. Và là gói nặng nhất.
- Customize CKEditor Package:
- Đây là gói tùy biến, bạn có thể lựa chọn các Plugin cần thiết để download về.
Giải nén:
Bạn có thể xem các ví dụ của CKEditor tại thư mục samples:
4. Các ví dụ cơ bản
Tất cả các ví dụ trong tài liệu này đều có trong thư mục samples của CKEditor mà bạn đã download về. Tuy nhiên tôi cố gắng làm nó đơn giản hơn để bạn tiếp cận một cách dễ dàng hơn.Tạo thư mục myexamples, các ví dụ trong tài liệu này sẽ được đặt trong thư mục đó.
Thay thế các phần tử Textarea sử dụng JavaScriptVí dụ đơn giản sử dụng CKEditor.replace(..) để thay thế <textarea> bởi CKEditor.replacebycode.html<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Replace Textarea by Code</title> <!-- (1): Khai báo sử dụng thư viện CKEditor --> <script src="../ckeditor.js"></script> </head> <body> <h2>Replace Textarea Elements Using JavaScript Code</h2> <form action="" method="post"> <!-- (2): textarea sẽ được thay thế bởi CKEditor --> <textarea id="editor1" name="editor1" cols="80" rows="10"> <p>Hello <strong>CKEditor</strong></p> </textarea> <!-- (3): Code Javascript thay thế textarea có id='editor1' bởi CKEditor --> <script> CKEDITOR.replace( 'editor1' ); </script> </form> </body> </html>Xem ví dụ:Kết quả chạy ví dụ:
Thay thế các phần tử textarea bởi class nameVới các <textarea> có thuộc tính name, và class ="ckeditor" sẽ tự động được thay thế bởi CKEditor.<texarea name = "editor1" class="ckeditor"> </texarea> <textarea name = "editor2" class="ckeditor"> Text </textarea>replacebyclass.html<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Replace Textareas by Class Name</title> <script src="../ckeditor.js"></script> </head> <body> <h1>Replace Textarea Elements by Class Name</h1> <form action="" method="post"> <textarea class="ckeditor" name="editor1" cols="80" rows="10"> <p>Hello <strong>CKEditor</strong></p> </textarea> </form> </body> </html>Chạy ví dụ:Tạo các CKEditor với jQueryVí dụ tạo CKEditor sử dụng JQuery.jquery.html<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>jQuery Adapter — CKEditor Sample</title> <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script> <script src="../ckeditor.js"></script> <script src="../adapters/jquery.js"></script> <script> $( document ).ready( function() { $( '#editor1' ).ckeditor(); } ); function setValue() { $( '#editor1' ).val( $( 'input#val' ).val() ); } </script> </head> <body> <h1 class="samples">Create Editors with jQuery</h1> <form action="" method="post"> <textarea id="editor1" name="editor1" cols="80" rows="10"> <p>Hello <strong>CKEditor</strong></p> </textarea> <input type="text" id="val" value="I'm using jQuery val()!" size="30"> <input onclick="setValue();" type="button" value="Set value"> </form> </body> </html>
Chạy ví dụ:5. Tùy biến cơ bản
Thay đổi màu giao diện
CKEDITOR.replace( 'textarea_id', { uiColor: '#14B8C4' });uicolor.html<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>UI Color Picker</title> <script src="../ckeditor.js"></script> </head> <body> <h1>UI Color</h1> <textarea id="editor1" name="editor1" cols="80" rows="10"> <p>Hello <strong>CKEditor</strong></p> </textarea> <script> // Replace the <textarea id="editor1"> with an CKEditor // instance, using default configurations. CKEDITOR.replace( 'editor1', { uiColor: '#14B8C4', toolbar: [ [ 'Bold', 'Italic', '-', 'NumberedList', 'BulletedList', '-', 'Link', 'Unlink' ], [ 'FontSize', 'TextColor', 'BGColor' ] ] }); </script> </body> </html>Chạy ví dụ:Xem thêm:- #config_ckeditor
- <CKEditor_Home>/samples/assets/uilanguages/languages.js
Chạy ví dụ:6. Chỉnh sửa nội tuyến (Inline Editing)
Tạo một trình soạn thảo nội tuyến phức tạpVí dụ này thể hiện những tính năng chỉnh sửa nội tuyến (inline editing) - đối tượng CKEditor sẽ được tạo ra tự động từ các phần tử (element) có thuộc tính contenteditable = 'true'.Bạn có thể sửa đổi nội dung HTML bên trong các thẻ có thuộc tính contenteditable='true'. Và thanh công cụ sẽ hiển thị khi bạn hiệu chỉnh:
- Nếu h1, h2, h3 hoặc thẻ có id = taglist, và có contenteditable = 'true', thì thanh công cụ đơn giản sẽ hiển thị (Đã loại bỏ các plugin colorbutton, find, flash, fonts,... )
- Ngược lại thanh công cụ sẽ hiển thị mặc định.

inlineall.html<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Massive inline editing</title> <script src="../ckeditor.js"></script> <script> // Sự kiện "instanceCreated" sẽ được ném ra (fired) mỗi khi đối tượng CKEditor được tạo. CKEDITOR.on( 'instanceCreated', function( event ) { var editor = event.editor, element = editor.element; // Nếu các element h1, h2, hoặc h3 hoặc có id = 'taglist' (Và contenteditable="true") // CKEditor hiển thị sẽ không có các tính năng (smileys, templates, iframes ....) if ( element.is( 'h1', 'h2', 'h3' ) || element.getAttribute( 'id' ) == 'taglist' ) { // Tùy chỉnh các cấu hình trình soạn thảo theo sự kiện "configLoaded", // đó là sự kiện được ném ra (fire) sau khi file cấu hình tải lên và // thực thi. Điều này làm cho nó có thể thay đổi // cấu hình trước khi Editor khởi tạo vị trí hiển thị. editor.on( 'configLoaded', function() { // Loại bỏ các plugin không cần thiết để Editor đơn giản hơn. editor.config.removePlugins = 'colorbutton,find,flash,font,' + 'forms,iframe,image,newpage,removeformat,' + 'smiley,specialchar,stylescombo,templates'; // Sắp xếp lại thứ tự các Item trên toolbar. editor.config.toolbarGroups = [ { name: 'editing', groups: [ 'basicstyles', 'links' ] }, { name: 'undo' }, { name: 'clipboard', groups: [ 'selection', 'clipboard' ] }, { name: 'about' } ]; }); } }); </script> </head> <body> <h1>Massive inline editing</h1> <div id="container" style="border: 1px solid blue;width: 700px; display:inline-block;padding:5px;"> <h1 contenteditable="true" style="border:1px solid green;"> H1 With contenteditable='true' </h1> <div style="border: 1px solid red; float: left;width: 300px;" contenteditable="true"> div with contenteditable='true' <h1>H1 H1 H1</h1> <h2>H2 H2</h2> <h3>H3 H3</h3> </div> <div style="border: 1px solid red; float: right;width: 350px;" contenteditable="true"> div with contenteditable='true' <br><br> Hello <b>CKEditor</b> ... </div> </div> </body> </html>Chạy ví dụ:Chuyển một phần tử thành một trình soạn thảo nội tuyến bằng codeinlinebycode.html<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Inline Editing by Code — CKEditor Sample</title> <script src="../ckeditor.js"></script> <style> #editable { padding: 10px; float: left; } </style> </head> <body> <h1>Inline Editing by Code</h1> <div id="editable" contenteditable="true" style="border:1px solid red;"> <p>Hello <strong>CKEditor</strong></p> </div> <script> // Tắt chế độ tự động tạo CKEditor. CKEDITOR.disableAutoInline = true; var editor = CKEDITOR.inline( 'editable' ); </script> </body> </html>Thay thế textarea bởi một trình soạn thảo nội tuyếninlinetextarea.html<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Replace Textarea with Inline Editor</title> <script src="../ckeditor.js"></script> <style> /* Style the CKEditor element to look like a textfield */ .cke_textarea_inline { padding: 10px; height: 200px; overflow: auto; border: 1px solid gray; -webkit-appearance: textfield; } </style> </head> <body> <h1>Replace Textarea with Inline Editor</h1> <textarea name="article-body" style="height: 200px"> <p>Hello <strong>CKEditor</strong></p> </textarea> <script> CKEDITOR.inline( 'article-body' ); </script> </body> </html>Trình soạn thảo nội tuyến với jQuery
jquery-inline.html<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Create Editors with jQuery - Inline Example</title> <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script> <script src="../ckeditor.js"></script> <script src="../adapters/jquery.js"></script> <style> #editable { padding: 10px; float: left; } </style> <script> CKEDITOR.disableAutoInline = true; $( document ).ready( function() { $( '#editable' ).ckeditor(); // Use CKEDITOR.inline(). } ); </script> </head> <body> <h1>Create Editors with jQuery - Inline Example</h1> <form action="" method="post"> <div id="editable" contenteditable="true" style="border: 1px solid red;"> <p>Hello <strong>CKEditor</strong></p> </div> </form> </body> </html>7. Cấu hình tùy biến CKEditor
Bạn có thể cấu hình CKEditor tại thời điểm chạy. Bạn có 2 cách để cấu hình cho CKEditor:- Cấu hình tĩnh:
- Nó sẽ có tác dụng cho mọi CKEditor, những cái không chỉ định rõ cấu hình.
- Cấu hình cho một đối tượng CKEditor cụ thể:
- Nó chỉ có tác dụng cho CKEditor được cấu hình.
- Nó sẽ có tác dụng cho mọi CKEditor, những cái không chỉ định rõ cấu hình.
- Toolbar Configuration
- http://docs.ckeditor.com/#!/api/CKEDITOR.config

8. Các cách cấu hình Toolbar
Có một số phương pháp tiếp cận để CKEditor cấu hình thanh công cụ của nó:- Sử dụng bộ cấu hình Toolbar (Toolbar Configurator)
- ...
- Cấu hình "Item by Item"
- config.toolbar
- Cấu hình nhóm Toolbar (Toolbar Groups)
- config.toolbarGroups
Bạn cũng có thể không cần thiết phải khai báo tên nhóm.CKEDITOR.config.toolbar = [ [ 'Source', '-', 'NewPage', 'Preview', '-', 'Templates' ], [ 'Cut', 'Copy', 'Paste' ] , '/', [ 'Bold', 'Italic', 'Format' ] ];toolbar-itembyitem.html<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>CKEditor Toolbar Configuration - Item by Item</title> <script src="../ckeditor.js"></script> <script> CKEDITOR.config.toolbar = [ { name: 'my_document', items: [ 'Source', '-', 'NewPage', 'Preview', '-', 'Templates' ] }, { name: 'my_clipboard', items: [ 'Cut', 'Copy', 'Paste' ] }, '/', { name: 'my_styles', items: [ 'Bold', 'Italic', 'Format' ] } ]; CKEDITOR.config.height = '300px'; </script> </head> <body> <h3>CKEditor Toolbar Configuration - Item by Item</h3> <textarea class="ckeditor" name="editor1"> <pre> CKEDITOR.config.toolbar = [ { name: 'my_document', items: [ 'Source', '-', 'NewPage', 'Preview', '-', 'Templates' ] }, { name: 'my_clipboard', items: [ 'Cut', 'Copy', 'Paste' ] }, '/', { name: 'my_styles', items: [ 'Bold', 'Italic', 'Format' ] } ]; </pre> </textarea> </body> </html>Chạy trực tuyến:Cấu hình nhóm Toolbar (Toolbar Groups)Lợi ích của việc cấu hình nhóm:Lợi ích quan trọng nhất của cấu hình thanh công cụ nhóm (Toolbar Groups Configuration) so với cấu hình "Item by item" chính là: sự tự động. Nó cho phép các nhà phát triển plugin định nghĩa ra một nhóm, mà button của họ có thể được thêm vào.Trong khi không bắt buộc, có tất cả các nhóm và các nhóm nhóm con đã cấu hình (bao gồm cả những cái mà bạn không sử dụng) được tiến cử (recommended) tại thời điểm trong tương lai, khi một plugin mới được cài đặt, nút đó sẽ tự động xuất hiện trên thanh công cụ không cần yêu cầu cấu hình thêm.Ví dụ:// CKEditor đã xây dựng sẵn các group cơ bản có tên "mode", "document", "clipboard", "undo", "styles", "links" ..... // Bạn có thể định nghĩa một group của mình với tên nào đó, và chứa các group con cơ bản của CKEditor. // Group của bạn có thể trùng tên với group có sẵn của CKEditor. // Group của bạn có thể không cần liệt kê các group con, khi đó mặc định nó sẽ chứa 1 group con cùng tên với tên group của bạn. CKEDITOR.config.toolbarGroups = [ { name: 'document', groups: [ 'mode', 'document' ] }, { name: 'my_group', groups: [ 'clipboard', 'undo' ] }, { name: 'styles' }, { name: 'links' } ];
Lợi ích của cấu hình Toolbar Groups đó là khi bạn thay đổi thư viện CKEditor lên phiên bản mới hơn, nếu trong group nào đó ở phiên bản mới có thêm một Button mới, nó sẽ tự động được hiển thị trên thanh Toolbar, bạn không cần phải sửa đổi code của trang web của mình.Bạn cũng có thể sử dụng "/" trong cấu hình Toolbar để ngắt dòng (Đẩy các button phía sau xuống dòng mới).CKEDITOR.config.toolbarGroups = [ { name: 'document', groups: [ 'mode', 'document' ] }, { name: 'my_clipboard', groups: [ 'clipboard', 'undo' ] }, '/', { name: 'styles' }, { name: 'links' } ];
toolbar-group.html<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>CKEditor Toolbar Groups Configuration</title> <script src="../ckeditor.js"></script> <script> CKEDITOR.config.toolbarGroups = [ { name: 'document', groups: [ 'mode', 'document' ] }, { name: 'my_clipboard', groups: [ 'clipboard', 'undo' ] }, '/', { name: 'styles' }, { name: 'links' } ]; CKEDITOR.config.height = '300px'; </script> </head> <body> <h3>CKEditor Toolbar Groups Configuration</h3> <textarea class="ckeditor" name="editor1"> <pre> CKEDITOR.config.toolbarGroups = [ { name: 'document', groups: [ 'mode', 'document' ] }, { name: 'my_group', groups: [ 'clipboard', 'undo' ] }, { name: 'styles' }, { name: 'links' } ]; </pre> </textarea> </body> </html>Chạy ví dụ:Danh sách các group và Item xây dựng sẵn của CKEditorĐây là định nghĩa các nhóm trong CKEditor 3.x:{ name: 'document', items : [ 'Source','-','Save','NewPage','DocProps','Preview','Print','-','Templates' ] }, { name: 'clipboard', items : [ 'Cut','Copy','Paste','PasteText','PasteFromWord','-','Undo','Redo' ] }, { name: 'editing', items : [ 'Find','Replace','-','SelectAll','-','SpellChecker', 'Scayt' ] }, { name: 'forms', items : [ 'Form', 'Checkbox', 'Radio', 'TextField', 'Textarea', 'Select', 'Button', 'ImageButton', 'HiddenField' ] }, { name: 'basicstyles', items : [ 'Bold','Italic','Underline','Strike','Subscript','Superscript','-','RemoveFormat' ] }, { name: 'paragraph', items : [ 'NumberedList','BulletedList','-','Outdent','Indent','-','Blockquote','CreateDiv', '-','JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock','-','BidiLtr','BidiRtl' ] }, { name: 'links', items : [ 'Link','Unlink','Anchor' ] }, { name: 'insert', items : [ 'Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak','Iframe' ] }, { name: 'styles', items : [ 'Styles','Format','Font','FontSize' ] }, { name: 'colors', items : [ 'TextColor','BGColor' ] }, { name: 'tools', items : [ 'Maximize', 'ShowBlocks','-','About' ] }9. Các ví dụ khác trên website CKEditor
Ví dụ tạo tùy biến một Plugin cho CKEditor của bạn.Create CKEditor Plugin:- http://docs.ckeditor.com/#!/guide/plugin_sdk_sample


Lập trình phía Client
- Hướng dẫn sử dụng trình soạn thảo CKEditor
- Cài đặt CKEditor-Syntaxhighlight Plugin cho CKEditor

Lập trình phía Client
- Hướng dẫn sử dụng trình soạn thảo CKEditor
- Cài đặt CKEditor-Syntaxhighlight Plugin cho CKEditor
Các bài viết mới nhất
- Dart Stream Single và Broadcast
- Xử lý lỗi trong Dart Stream
- Hướng dẫn và ví dụ Dart Stream
- So sánh đối tượng trong Dart với thư viện Equatable
- Flutter BloC cho người mới bắt đầu
- Xử lý lỗi 404 trong Flutter GetX
- Ví dụ đăng nhập và đăng xuất với Flutter Getx
- Hướng dẫn và ví dụ Flutter NumberTextInputFormatter
- Hướng dẫn và ví dụ Flutter multi_dropdown
- Hướng dẫn và ví dụ Flutter flutter_form_builder
- Hướng dẫn và ví dụ Flutter GetX obs Obx
- Hướng dẫn và ví dụ Flutter GetX GetBuilder
- Từ khoá part và part of trong Dart
- Hướng dẫn và ví dụ Flutter InkWell
- Hướng dẫn và ví dụ Flutter Radio
- Bài thực hành Flutter SharedPreferences
- Hướng dẫn và ví dụ Flutter Slider
- Hướng dẫn và ví dụ Flutter SkeletonLoader
- Chỉ định cổng cố định cho Flutter Web trên Android Studio
- Tạo Module trong Flutter
- Lập trình phía Client
Từ khóa » Sử Dụng Ckeditor Trong Php
-
[PHP] Hướng Dẫn Tích Hợp Ckeditor - Trình Soạn Thảo Văn Bản Vào ...
-
Tích Hợp Ckeditor Vào Php - Chức Năng Thêm Bài Viết (phần 9)
-
CKEditor Là Gì? Cách Sử Dụng CKEditor Thêm Bài Viết Trong PHP
-
Hướng Dẫn Sử Dụng Ckeditor Php - HTTL
-
Tích Hợp Ckeditor Và Ckfinder Vào Website Php
-
Hướng Dẫn Sử Dụng Ckeditor Php, Hướng Dẫn Sử Dụng Trình ...
-
Bài 17: Tích Hợp Editor Vào Trang Web (CK Editor) - Lập Trình PHP
-
Hướng Dẫn Sử Dụng Ckeditor Là Gì? Cách Sử ... - Noithatvietphat
-
Hướng Dẫn Dùng Ckeditor Php - Muarehon | Chọn Đúng Mua Rẻ 03 ...
-
Hướng Dẫn Chèn Ckeditor Vào Php
-
Hướng Dẫn Sử Dụng Ckeditor Php - Autocadtfesvb
-
Ckeditor Và Upload ảnh - Viblo
-
Hướng Dẫn Sử Dụng Ckeditor Và Ckfinder - PHP
-
Hướng Dẫn Tích Hợp CKEditor Và CKFinder Chuẩn Nhất Cho Laravel