Thiết kế website Nukeviet 4.6 - Module Nukeviet - Giao Diện Nukeviet - Themes Nukeviet - Block Nukeviet - Diễn đàn Nukeviet

https://nukevietnam.com

Thêm trình soạn thảo Ckeditor vào một module NukeViet 4X

Đối với khu vực ngoài site, mặc định nếu như admin có quyền và đã đăng nhập quản trị viên, bên ngoài site dữ liệu của trình soạn thảo cũng đã được gọi sẵn, còn thành viên hoặc khách thông thường thì không có
Thêm trình soạn thảo Ckeditor vào một module NukeViet 4X

Thêm trình soạn thảo Ckeditor vào một module NukeViet 4X

Nếu ứng dụng cần thiết đọc nội dung HTML sẵn có từ CSDL thì ta tiến hành lệnh SQL để đọc dữ liệu, giả sử dữ liệu đọc được lưu vào biến $array['documentation']. Sau khi đọc nội dung HTML vào biến $array['documentation'], ta tiến hành chuyển ký tự <br /> sang nl (Ký tự xuống dòng) bằng lệnh
$array['documentation'] = nv_editor_br2nl( $array['documentation'] );
Để xử lý dữ liệu HTML sang dữ liệu của trình soạn thảo ta cần gọi ra thư viện của trình soạn thảo. Cách gọi trong admin và ngoài site là khác nhau, trong admin, mặc định (nếu không bị cấm) file xử lý dữ liệu của trình soạn thảo luôn được gọi do dó để gọi ra ta chỉ cần kiểm tra xem dữ liệu của trình soạn thảo đã có chưa, nếu không có thì gọi
if ( defined( 'NV_EDITOR' ) ){ require_once ( NV_ROOTDIR . '/' . NV_EDITORSDIR . '/' . NV_EDITOR . '/nv.php' );}
Đối với khu vực ngoài site, mặc định nếu như admin có quyền và đã đăng nhập quản trị viên, bên ngoài site dữ liệu của trình soạn thảo cũng đã được gọi sẵn, còn thành viên hoặc khách thông thường thì không có, dó đó có thể kiểm tra xem đối tượng truy cập hiện tại là admin hay thành viên hoặc khách thông thường, nếu thành viên hoặc khách thông thường ta cần tạo dữ liệu riêng cho trình soạn thảo. Ở đây tôi chọn cách tạo dữ liệu riêng cho trình soạn thảo bất kể là admin hay là thành viên hoặc khách thông thường. Sử dụng code
// Trinh soan thaorequire_once (NV_ROOTDIR . '/' . NV_EDITORSDIR . '/ckeditor/ckeditor_php5.php');function nv_simple_editor($textareaname, $width = "100%", $height = '450px', $val = ''){ global $module_name, $global_config; $editortoolbar = array( array('Link', 'Unlink', 'Image', 'Table', 'Font', 'FontSize', 'RemoveFormat'), array('Bold', 'Italic', 'Underline', 'StrikeThrough', '-', 'Subscript', 'Superscript', '-', 'JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock', 'OrderedList', 'UnorderedList', '-', 'Outdent', 'Indent', 'TextColor', 'BGColor', 'Source')); $CKEditor = new CKEditor(); $CKEditor->returnOutput = true; $CKEditor->config['skin'] = 'kama'; $CKEditor->config['entities'] = false; $CKEditor->config['enterMode'] = 2; $CKEditor->config['language'] = NV_LANG_INTERFACE; $CKEditor->config['toolbar'] = $editortoolbar; $CKEditor->config['pasteFromWordRemoveFontStyles'] = true; $CKEditor->basePath = NV_BASE_SITEURL . NV_EDITORSDIR . '/ckeditor/'; if (!empty($width)) { $CKEditor->config['width'] = strpos($width, '%') ? $width : intval($width); } if (!empty($height)) { $CKEditor->config['height'] = strpos($height, '%') ? $height : intval($height); } $CKEditor->textareaAttributes = array("cols" => 80, "rows" => 10); $CKEditor->config['filebrowserImageUploadUrl'] = NV_BASE_SITEURL . "index.php?" . NV_LANG_VARIABLE . "=" . NV_LANG_DATA . "&" . NV_NAME_VARIABLE . "=" . $module_name . "&" . NV_OP_VARIABLE . "=papi&uploadimage=1&tokend=" . md5( $global_config['sitekey'] . session_id() ); $val = nv_unhtmlspecialchars($val); return $CKEditor->editor($textareaname, $val);}
Chú ý, nếu ứng dụng của bạn không xây dựng một trình upload ảnh riêng thì ở code trên cần xóa dòng
$CKEditor->config['filebrowserImageUploadUrl'] = NV_BASE_SITEURL . "index.php?" . NV_LANG_VARIABLE . "=" . NV_LANG_DATA . "&" . NV_NAME_VARIABLE . "=" . $module_name . "&" . NV_OP_VARIABLE . "=papi&uploadimage=1&tokend=" . md5( $global_config['sitekey'] . session_id() );
Sau khi có code xử lý ta mã hóa nội dung HTML bằng lệnh
if ( ! empty( $array['description'] ) ) $array['description'] = nv_htmlspecialchars( $array['description'] );
Gọi xử lý và xuất ta Template bằng lệnh
if ( defined( 'NV_EDITOR' ) and nv_function_exists( 'nv_aleditor' ) ){ $array['description'] = nv_aleditor( 'description', '100%', '200px', $array['description'] );}else{ $array['description'] = "<textarea style=\"width:100%; height:200px\" name=\"description\" id=\"description\">" . $array['description'] . "</textarea>";}$xtpl->assign( 'DESCRIPTION', $array['description'] );
Trong file TPL xuất nội dung trình soạn thảo bằng code
{DESCRIPTION}
Khi submit from, lấy dữ liệu submit được bằng code
$array['description'] = $nv_Request->get_editor( 'description', '', NV_ALLOWED_HTML_TAGS );
Chuyển ký tự xuống dòng sang ký tự <br />
$array['description'] = nv_editor_nl2br( $array['description'] );
Cuối cùng biến $array['description'] chính là dữ liệu HTML sẽ được lưu vào CSDL.
Bạn đã không sử dụng site, Bấm vào đây để duy trì trạng thái đăng nhập. Thời gian chờ: 60 giây