<!DOCTYPE html>
    <html lang="vi" xmlns="http://www.w3.org/1999/xhtml" prefix="og: http://ogp.me/ns#">
    <head>
<title>Thêm trình soạn thảo Ckeditor vào một module NukeViet 4X</title>
<meta name="description" content="Hướng dẫn sử dụng lập trình Nukeviet">
<meta name="keywords" content="lập trình nukeviet">
<meta name="news_keywords" content="lập trình nukeviet">
<meta name="author" content="Thiết kế website Nukeviet 4.6 - Module Nukeviet - Giao Diện Nukeviet - Themes Nukeviet  - Block Nukeviet  - Diễn đàn Nukeviet">
<meta name="copyright" content="Thiết kế website Nukeviet 4.6 - Module Nukeviet - Giao Diện Nukeviet - Themes Nukeviet  - Block Nukeviet  - Diễn đàn Nukeviet [nukeviet@tms.vn]">
<meta name="generator" content="NukeViet v4.5">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta property="og:title" content="Thêm trình soạn thảo Ckeditor vào một module NukeViet 4X">
<meta property="og:type" content="website">
<meta property="og:description" content="Hướng dẫn sử dụng lập trình Nukeviet">
<meta property="og:site_name" content="Thiết kế website Nukeviet 4.6 - Module Nukeviet - Giao Diện Nukeviet - Themes Nukeviet  - Block Nukeviet  - Diễn đàn Nukeviet">
<meta property="og:image" content="https://nukevietnam.com/uploads/web-designing-company-1407927.jpg">
<meta property="og:image:url" content="https://nukevietnam.com/uploads/web-designing-company-1407927.jpg">
<meta property="og:image:type" content="image/jpeg">
<meta property="og:image:width" content="1263">
<meta property="og:image:height" content="629">
<meta property="og:image:alt" content="Thiết kế website Nukeviet 4.6 - Module Nukeviet - Giao Diện Nukeviet - Themes Nukeviet  - Block Nukeviet  - Diễn đàn Nukeviet">
<meta property="og:url" content="https://nukevietnam.com/huong-dan/savefile/lap-trinh-nukeviet/them-trinh-soan-thao-ckeditor-vao-mot-module-nukeviet-4x-49.html">
<link rel="shortcut icon" href="https://nukevietnam.com/favicon.ico">
<link rel="canonical" href="https://nukevietnam.com/huong-dan/savefile/lap-trinh-nukeviet/them-trinh-soan-thao-ckeditor-vao-mot-module-nukeviet-4x-49.html">
<link rel="alternate" href="https://nukevietnam.com/huong-dan/rss/" title="Hướng dẫn sử dụng lập trình Nukeviet" type="application/rss+xml">
<link rel="alternate" href="https://nukevietnam.com/huong-dan/rss/loi-thuong-gap-nukeviet/" title="Hướng dẫn sử dụng lập trình Nukeviet - Lỗi thường gặp" type="application/rss+xml">
<link rel="alternate" href="https://nukevietnam.com/huong-dan/rss/van-hanh-quan-tri/" title="Hướng dẫn sử dụng lập trình Nukeviet - Vận hành - Quản trị" type="application/rss+xml">
<link rel="alternate" href="https://nukevietnam.com/huong-dan/rss/thiet-ke-giao-dien-rip-theme-nukeviet/" title="Hướng dẫn sử dụng lập trình Nukeviet - Giao diện" type="application/rss+xml">
<link rel="alternate" href="https://nukevietnam.com/huong-dan/rss/cai-dat-cap-nhat-nukeviet/" title="Hướng dẫn sử dụng lập trình Nukeviet - Cài đặt - Cập nhật" type="application/rss+xml">
<link rel="alternate" href="https://nukevietnam.com/huong-dan/rss/lap-trinh-nukeviet/" title="Hướng dẫn sử dụng lập trình Nukeviet - Lập trình nukeviet" type="application/rss+xml">
<link rel="alternate" href="https://nukevietnam.com/huong-dan/rss/cau-hinh-website/" title="Hướng dẫn sử dụng lập trình Nukeviet - Cấu hình website" type="application/rss+xml">
<link rel="alternate" href="https://nukevietnam.com/huong-dan/rss/module-tin-tuc/" title="Hướng dẫn sử dụng lập trình Nukeviet - Module tin tức" type="application/rss+xml">
<link rel="alternate" href="https://nukevietnam.com/huong-dan/rss/module-san-pham/" title="Hướng dẫn sử dụng lập trình Nukeviet - Module sản phẩm" type="application/rss+xml">
<link rel="alternate" href="https://nukevietnam.com/huong-dan/rss/module-lien-he/" title="Hướng dẫn sử dụng lập trình Nukeviet - Module liên hệ" type="application/rss+xml">
<link rel="alternate" href="https://nukevietnam.com/huong-dan/rss/giao-dien-block/" title="Hướng dẫn sử dụng lập trình Nukeviet - Giao diện - Block" type="application/rss+xml">
<link rel="alternate" href="https://nukevietnam.com/huong-dan/rss/phan-mem-may-chu/" title="Hướng dẫn sử dụng lập trình Nukeviet - Phần mềm máy chủ" type="application/rss+xml">
<link rel="alternate" href="https://nukevietnam.com/huong-dan/rss/directadmin/" title="Hướng dẫn sử dụng lập trình Nukeviet - Directadmin" type="application/rss+xml">
<link rel="preload" as="script" href="https://cdn.jsdelivr.net/gh/tmsholdings/thuongmaiso/assets/js/jquery/jquery.min.js" type="text/javascript">
<link rel="preload" as="script" href="https://cdn.jsdelivr.net/gh/tmsholdings/thuongmaiso/assets/js/language/vi.min.js" type="text/javascript">
<link rel="preload" as="script" href="https://cdn.jsdelivr.net/gh/tmsholdings/thuongmaiso/assets/js/DOMPurify/purify3.js" type="text/javascript">
<link rel="preload" as="script" href="https://cdn.jsdelivr.net/gh/tmsholdings/thuongmaiso/assets/js/global.min.js" type="text/javascript">
<link rel="preload" as="script" href="https://cdn.jsdelivr.net/gh/tmsholdings/thuongmaiso/assets/js/site.min.js" type="text/javascript">
<link rel="preload" as="script" href="https://nukevietnam.com/themes/default/js/huong-dan.js" type="text/javascript">
<link rel="preload" as="script" href="https://nukevietnam.com/themes/default/js/main.js" type="text/javascript">
<link rel="preload" as="script" href="https://nukevietnam.com/themes/default/js/custom.js" type="text/javascript">
<link rel="preload" as="script" href="https://cdn.jsdelivr.net/gh/tmsholdings/thuongmaiso/assets/tms/js/swiper.js" type="text/javascript">
<link rel="preload" as="script" href="https://cdn.jsdelivr.net/gh/tmsholdings/thuongmaiso/assets/tms/js/tms_menu.js" type="text/javascript">
<link rel="preload" as="script" href="https://www.googletagmanager.com/gtag/js?id=G-RB45N968LV" type="text/javascript">
<link rel="preload" as="script" href="https://cdn.jsdelivr.net/gh/tmsholdings/thuongmaiso/assets/tms/js/bootstrap.min.js" type="text/javascript">
<link rel="preload" as="style" href="https://cdn.jsdelivr.net/gh/tmsholdings/thuongmaiso/assets/css/font-awesome.min.css" type="text/css">
<link rel="preload" as="style" href="https://cdn.jsdelivr.net/gh/tmsholdings/thuongmaiso/assets/tms/css/bootstrap.min.css" type="text/css">
<link rel="preload" as="style" href="https://nukevietnam.com/themes/default/css/style.css" type="text/css">
<link rel="preload" as="style" href="https://nukevietnam.com/themes/default/css/style.responsive.css" type="text/css">
<link rel="preload" as="style" href="https://nukevietnam.com/themes/default/css/huong-dan.css" type="text/css">
<link rel="preload" as="style" href="https://nukevietnam.com/themes/default/css/custom.css" type="text/css">
<link rel="preload" as="style" href="https://cdn.jsdelivr.net/gh/tmsholdings/thuongmaiso/assets/tms/css/swiper.css" type="text/css">
<link rel="preload" as="style" href="https://nukevietnam.com/themes/default/css/tms_menu.css" type="text/css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/tmsholdings/thuongmaiso/assets/css/font-awesome.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/tmsholdings/thuongmaiso/assets/tms/css/bootstrap.min.css">
<link rel="stylesheet" href="https://nukevietnam.com/themes/default/css/style.css">
<link rel="stylesheet" href="https://nukevietnam.com/themes/default/css/style.responsive.css">
<link rel="StyleSheet" href="https://nukevietnam.com/themes/default/css/huong-dan.css">
<link rel="stylesheet" href="https://nukevietnam.com/themes/default/css/custom.css">
<link href="https://cdn.jsdelivr.net/gh/tmsholdings/thuongmaiso/assets/tms/css/swiper.css" type="text/css" rel="stylesheet" />
<link rel="stylesheet" href="https://nukevietnam.com/themes/default/css/tms_menu.css" />
<style>body{background: #fff;}
</style>
<script>!function(e,t,a,n){e[n]=e[n]||[],e[n].push({"gtm.start":(new Date).getTime(),event:"gtm.js"});var g=t.getElementsByTagName(a)[0],m=t.createElement(a);m.async=!0,m.src="https://www.googletagmanager.com/gtm.js?id=GTM-MKJFRB9V",g.parentNode.insertBefore(m,g)}(window,document,"script","dataLayer");</script>
</head>
    <body>
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-MKJFRB9V" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<div class="container-fluid"style="background-color:#fff;">
<div id="print">
    <div id="hd_print">
        <h2 class="pull-left">Thiết kế website Nukeviet 4.6 - Module Nukeviet - Giao Diện Nukeviet - Themes Nukeviet  - Block Nukeviet  - Diễn đàn Nukeviet</h2>
        <p class="pull-right"><a title="Thiết kế website Nukeviet 4.6 - Module Nukeviet - Giao Diện Nukeviet - Themes Nukeviet  - Block Nukeviet  - Diễn đàn Nukeviet" href="https://nukevietnam.com/">https://nukevietnam.com</a></p>
    </div>
    <div class="clear"></div>
    <hr />
    <div id="content">
        <h1>Thêm trình soạn thảo Ckeditor vào một module NukeViet 4X</h1>
        <ul class="list-inline">
            <li>Thứ ba - 05/07/2022 06:49</li>
            <li class="hidden-print txtrequired"><em class="fa fa-print">&nbsp;</em><a title="In ra" href="https://nukevietnam.com/#" data-toggle="winCMD" data-cmd="print">In ra</a></li>
            <li class="hidden-print txtrequired"><em class="fa fa-power-off">&nbsp;</em><a title="Đóng cửa sổ này" href="https://nukevietnam.com/#"  data-toggle="winCMD" data-cmd="close">Đóng cửa sổ này</a></li>
        </ul>
        <div class="clear"></div>
        <div id="hometext">
            Đố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ó
        </div>
                <div class="imghome">
            <img alt="Thêm trình soạn thảo Ckeditor vào một module NukeViet 4X" src="https://nukevietnam.com/uploads/huong-dan/2022_07/them-trinh-soan-thao-ckeditor-vao-mot-module-nukeviet-4x.png" width="460" class="img-thumbnail" />
                        <p>
                <em>Thêm trình soạn thảo Ckeditor vào một module NukeViet 4X</em>
            </p>
        </div>
        <div class="clear"></div>
        <div id="bodytext" class="clearfix">
            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&nbsp;$array&#91;&#039;documentation&#039;&#93;. Sau khi đọc nội dung HTML vào biến&nbsp;$array&#91;&#039;documentation&#039;&#93;, ta tiến hành&nbsp;chuyển ký tự &lt;br /&gt; sang nl (Ký tự xuống dòng) bằng lệnh<pre><code>$array&#91;&#039;documentation&#039;&#93; = nv_editor_br2nl( $array&#91;&#039;documentation&#039;&#93; );</code></pre>Để 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<pre><code>if ( defined( &#039;NV_EDITOR&#039; ) ){ require_once ( NV_ROOTDIR . &#039;/&#039; . NV_EDITORSDIR . &#039;/&#039; . NV_EDITOR . &#039;/nv.php&#039; );}</code></pre>Đố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<pre><code>// Trinh soan thaorequire_once (NV_ROOTDIR . &#039;/&#039; . NV_EDITORSDIR . &#039;/ckeditor/ckeditor_php5.php&#039;);function nv_simple_editor($textareaname, $width = &quot;100%&quot;, $height = &#039;450px&#039;, $val = &#039;&#039;){ global $module_name, $global_config; $editortoolbar = array( array(&#039;Link&#039;, &#039;Unlink&#039;, &#039;Image&#039;, &#039;Table&#039;, &#039;Font&#039;, &#039;FontSize&#039;, &#039;RemoveFormat&#039;), array(&#039;Bold&#039;, &#039;Italic&#039;, &#039;Underline&#039;, &#039;StrikeThrough&#039;, &#039;-&#039;, &#039;Subscript&#039;, &#039;Superscript&#039;, &#039;-&#039;, &#039;JustifyLeft&#039;, &#039;JustifyCenter&#039;, &#039;JustifyRight&#039;, &#039;JustifyBlock&#039;, &#039;OrderedList&#039;, &#039;UnorderedList&#039;, &#039;-&#039;, &#039;Outdent&#039;, &#039;Indent&#039;, &#039;TextColor&#039;, &#039;BGColor&#039;, &#039;Source&#039;)); $CKEditor = new CKEditor(); $CKEditor-&gt;returnOutput = true; $CKEditor-&gt;config&#91;&#039;skin&#039;&#93; = &#039;kama&#039;; $CKEditor-&gt;config&#91;&#039;entities&#039;&#93; = false; $CKEditor-&gt;config&#91;&#039;enterMode&#039;&#93; = 2; $CKEditor-&gt;config&#91;&#039;language&#039;&#93; = NV_LANG_INTERFACE; $CKEditor-&gt;config&#91;&#039;toolbar&#039;&#93; = $editortoolbar; $CKEditor-&gt;config&#91;&#039;pasteFromWordRemoveFontStyles&#039;&#93; = true; $CKEditor-&gt;basePath = NV_BASE_SITEURL . NV_EDITORSDIR . &#039;/ckeditor/&#039;; if (!empty($width)) { $CKEditor-&gt;config&#91;&#039;width&#039;&#93; = strpos($width, &#039;%&#039;) ? $width : intval($width); } if (!empty($height)) { $CKEditor-&gt;config&#91;&#039;height&#039;&#93; = strpos($height, &#039;%&#039;) ? $height : intval($height); } $CKEditor-&gt;textareaAttributes = array(&quot;cols&quot; =&gt; 80, &quot;rows&quot; =&gt; 10); $CKEditor-&gt;config&#91;&#039;filebrowserImageUploadUrl&#039;&#93; = NV_BASE_SITEURL . &quot;index.php?&quot; . NV_LANG_VARIABLE . &quot;=&quot; . NV_LANG_DATA . &quot;&amp;&quot; . NV_NAME_VARIABLE . &quot;=&quot; . $module_name . &quot;&amp;&quot; . NV_OP_VARIABLE . &quot;=papi&amp;uploadimage=1&amp;tokend=&quot; . md5( $global_config&#91;&#039;sitekey&#039;&#93; . session_id() ); $val = nv_unhtmlspecialchars($val); return $CKEditor-&gt;editor($textareaname, $val);}</code></pre>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<pre><code>$CKEditor-&gt;config&#91;&#039;filebrowserImageUploadUrl&#039;&#93; = NV_BASE_SITEURL . &quot;index.php?&quot; . NV_LANG_VARIABLE . &quot;=&quot; . NV_LANG_DATA . &quot;&amp;&quot; . NV_NAME_VARIABLE . &quot;=&quot; . $module_name . &quot;&amp;&quot; . NV_OP_VARIABLE . &quot;=papi&amp;uploadimage=1&amp;tokend=&quot; . md5( $global_config&#91;&#039;sitekey&#039;&#93; . session_id() );</code></pre>Sau khi có code xử lý ta mã hóa nội dung HTML bằng lệnh<pre><code>if ( ! empty( $array&#91;&#039;description&#039;&#93; ) ) $array&#91;&#039;description&#039;&#93; = nv_htmlspecialchars( $array&#91;&#039;description&#039;&#93; );</code></pre>Gọi xử lý và xuất ta Template bằng lệnh<pre><code>if ( defined( &#039;NV_EDITOR&#039; ) and nv_function_exists( &#039;nv_aleditor&#039; ) ){ $array&#91;&#039;description&#039;&#93; = nv_aleditor( &#039;description&#039;, &#039;100%&#039;, &#039;200px&#039;, $array&#91;&#039;description&#039;&#93; );}else{ $array&#91;&#039;description&#039;&#93; = &quot;&lt;textarea style=\&quot;width:100%; height:200px\&quot; name=\&quot;description\&quot; id=\&quot;description\&quot;&gt;&quot; . $array&#91;&#039;description&#039;&#93; . &quot;&lt;/textarea&gt;&quot;;}$xtpl-&gt;assign( &#039;DESCRIPTION&#039;, $array&#91;&#039;description&#039;&#93; );</code></pre>Trong file TPL xuất nội dung trình soạn thảo bằng code<pre><code>{DESCRIPTION}</code></pre>Khi submit from, lấy dữ liệu submit được bằng code<pre><code>$array&#91;&#039;description&#039;&#93; = $nv_Request-&gt;get_editor( &#039;description&#039;, &#039;&#039;, NV_ALLOWED_HTML_TAGS );</code></pre>Chuyển ký tự xuống dòng sang ký tự &lt;br /&gt;<pre><code>$array&#91;&#039;description&#039;&#93; = nv_editor_nl2br( $array&#91;&#039;description&#039;&#93; );</code></pre>Cuối cùng biến $array&#91;&#039;description&#039;&#93; chính là dữ liệu HTML sẽ được lưu vào CSDL.
        </div>
    </div>
    <div id="footer" class="clearfix">
        <div id="url">
            <strong>URL của bản tin này: </strong><a href="https://nukevietnam.com/huong-dan/savefile/lap-trinh-nukeviet/them-trinh-soan-thao-ckeditor-vao-mot-module-nukeviet-4x-49.html" title="Thêm trình soạn thảo Ckeditor vào một module NukeViet 4X">https://nukevietnam.com/huong-dan/savefile/lap-trinh-nukeviet/them-trinh-soan-thao-ckeditor-vao-mot-module-nukeviet-4x-49.html</a>
        </div>
        <div class="clear"></div>
        <div class="copyright">
            &copy; Thiết kế website Nukeviet 4.6 - Module Nukeviet - Giao Diện Nukeviet - Themes Nukeviet  - Block Nukeviet  - Diễn đàn Nukeviet
        </div>
        <div id="contact">
            <a href="mailto:nukeviet@tms.vn">nukeviet@tms.vn</a>
        </div>
    </div>
</div>
</div>
        <!-- Captcha-Modal Required!!! -->
        <div id="modal-img-captcha" class="modal fade" tabindex="-1" aria-hidden="true">
            <div class="modal-dialog">
                <div class="modal-content">
                    <div class="modal-header">
                        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                        <div class="modal-title">Xác minh &laquo;Tôi không phải người máy&raquo;</div>
                    </div>
                    <div class="modal-body text-center">
                        <div class="margin-bottom">
                            <img class="captchaImg mr-1" src="https://cdn.jsdelivr.net/gh/tmsholdings/thuongmaiso/assets/images/pix.svg" width="150" height="40" alt="" title="" /><span class="pointer" data-toggle="change_captcha" data-obj="#modal-captcha-value" title="Thay mới"><em class="fa fa-refresh"></em></span>
                        </div>
                        <div class="margin-bottom">
                            <div>
                                <p>Mã bảo mật</p>
                                <p><input type="text" id="modal-captcha-value" value="" class="form-control display-inline-block required" maxlength="6" style="width:200px" data-toggle="enterToEvent" data-obj="#modal-captcha-button" data-obj-event="click"/></p>
                                <div class="invalid-feedback"></div>
                            </div>
                        </div>
                        <p><button type="button" id="modal-captcha-button" class="btn btn-primary">Xác nhận</button></p>
                    </div>
                </div>
            </div>
        </div>
        <div id="timeoutsess" class="chromeframe">
            Bạn đã không sử dụng site, <a data-toggle="timeoutsesscancel" href="https://nukevietnam.com/#">Bấm vào đây để duy trì trạng thái đăng nhập</a>. Thời gian chờ: <span id="secField"> 60 </span> giây
        </div>
        <div id="openidResult" class="nv-alert" style="display:none"></div>
        <div id="openidBt" data-result="" data-redirect=""></div>
<script src="https://cdn.jsdelivr.net/gh/tmsholdings/thuongmaiso/assets/js/jquery/jquery.min.js"></script>
<script>var nv_base_siteurl="/",nv_assets_dir="assets",nv_lang_data="vi",nv_lang_interface="vi",nv_name_variable="nv",nv_fc_variable="op",nv_lang_variable="language",nv_module_name="huong-dan",nv_func_name="savefile",nv_is_user=0, nv_my_ofs=-4,nv_my_abbr="EDT",nv_cookie_prefix="tms",nv_check_pass_mstime=7738000,nv_area_admin=0,nv_safemode=0,theme_responsive=1,nv_recaptcha_ver=2,nv_recaptcha_sitekey="",nv_recaptcha_type="image",XSSsanitize=1;</script>
<script src="https://cdn.jsdelivr.net/gh/tmsholdings/thuongmaiso/assets/js/language/vi.min.js"></script>
<script src="https://cdn.jsdelivr.net/gh/tmsholdings/thuongmaiso/assets/js/DOMPurify/purify3.js"></script>
<script src="https://cdn.jsdelivr.net/gh/tmsholdings/thuongmaiso/assets/js/global.min.js"></script>
<script src="https://cdn.jsdelivr.net/gh/tmsholdings/thuongmaiso/assets/js/site.min.js"></script>
<script src="https://nukevietnam.com/themes/default/js/huong-dan.js"></script>
<script src="https://nukevietnam.com/themes/default/js/main.js"></script>
<script src="https://nukevietnam.com/themes/default/js/custom.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/gh/tmsholdings/thuongmaiso/assets/tms/js/swiper.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/gh/tmsholdings/thuongmaiso/assets/tms/js/tms_menu.js"></script>
<script async src="https://www.googletagmanager.com/gtag/js?id=G-RB45N968LV"></script>
<script>window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag('js',new Date);gtag('config','G-RB45N968LV');</script>
<script src="https://cdn.jsdelivr.net/gh/tmsholdings/thuongmaiso/assets/tms/js/bootstrap.min.js"></script>
</body>
</html>