Share Xử lý JavaScript khi nâng cấp lên bản mới

--= Roll With The Wind =--
Quản trị viên
Xin chào !
NukeViet 4.1 Beta được công bố cùng với nhiều nâng cấp đáng giá.

Tuy vậy còn một số khó khăn nhỏ tồn tại khiến cho các Webmaster thấy ngấy ...
Từ kinh nghiệm của bản thân thì sau khi nâng cấp NukeViet lên 4.1, cùng với việc jQuery được nâng lên tầm cao mới ( 3.x.x) thì nhiều plugin JavaScript (JS) chết không kịp trối.
Chính đến file main.js của NukeViet cũng không được viết lại cho chuẩn mực (hệ quả là phần gọi lib JS của Facebook, G+ và Twitter bị hỏng) nên nhiều plugin slider cũng tèo.

Mình có một biện pháp tình thế giải quyết các vấn đề trên, nếu bạn nào vẫn đang gặp rắc rối thì có thể xem thêm.
+++ Ghi chú 1:
Đây là bài viết từ kinh nghiệm cá nhân. Do đó không dám chắc 100% plugin của bạn sẽ hồi sinh.
+++ Ghi chú 2:
Hãy đảm bảo bạn đã hoàn tất các phần sửa giao diện được khuyến cáo từ NukieViet.
=> https://github.com/nukeviet/update#chỉnh-sửa-tương-thích-jquery-3

Phương thức:
Chúng ta gọi thêm 1 file JavaScript khác, gọi là jQuery Migrate. Plugin này cho phép các API, hàm đã bị loại bỏ khỏi jQuery 3 có thể được dùng tiếp.
Mục đích mình hướng đến là gọi plugin này trên toàn bộ Website. Các bạn có thể xem và chỉ gọi tại một số khu vực tuỳ ý cũng không sao.

+++ jQuery 3 migrate:
Bạn có thể dùng CDN từ link sau hoặc dowload về và đặt trong /themes/theme_dang_dung/js/
=> https://github.com/jquery/jquery-migrate

Hoặc dùng CDN:

<script src="https://code.jquery.com/jquery-migrate-3.0.0.js"></script>
Ý kiến của mình thì nên tải file này về và lưu trong web của bạn để đảm bảo an toàn cũng như tốc độ tải trang.
Sau đó ta tiến hành sửa theme.


Cách 1: chỉnh sửa theme.php của theme đang dùng.
Hãy mở /themes/theme_dang_dung/theme.php
Tìm dòng sau:

Code:
   $html_js = nv_html_site_js(false);     $html_js[] = array(         'ext' => 1,         'content' => NV_BASE_SITEURL . 'themes/' . $global_config['module_theme'] . '/js/main.js'
    );

Giả như các bạn đã tải file bên trên về và lưu tại thư mục js của theme đang dùng. Ta sẽ thêm vào bên dưới nó như sau:

Code:
   $html_js[] = array(         'ext' => 1,         'content' => NV_BASE_SITEURL . 'themes/' . $global_config['module_theme'] . '/js/jquery-migrate-3.0.0.js'
    );

Cách 2: chỉnh sửa header_only.tpl của theme đang dùng.

Chúng ta cũng có thể gọi file này thông qua cách truyền thống, gọi JS từ trước thẻ </head>
Hãy mở /themes/theme_dang_dung/layout/header_extend.tpl
Tìm dòng:
<!-- BEGIN: js -->
<script<!-- BEGIN: ext --> src="{JS_SRC}"<!-- END: ext -->><!-- BEGIN: int -->{JS_CONTENT}<!-- END: int --></script>
<!-- END: js -->

Hãy thêm vào bên dưới nó:
<script src="https://code.jquery.com/jquery-migrate-3.0.0.js"></script>
Phần src, các bạn nên điều chỉnh cho phù hợp với đường dẫn file migrate hiện tại của site mình.
Nếu làm đúng, khi kiểm tra bằng Console của Website, bạn sẽ thấy 1 thông báo nhỏ nữa:
j.png

Hoặc đơn giản hơn là khởi chạy Website và thấy các slider hoạt động là được.

Chúc các bạn thành công !
 
Thành viên quá tích cực
Quản trị viên
em nói ngu chứ hệ thống nukeviet được nâng cấp thì các plugin, modules của người dùng viết riêng cho phiên bản trước thì có thể phiên bản sau không tương thích thì ko bực. Đằng này chính những block,plugin của nukeviet nó tự chết ấy chứ trong khi những plugin của người dùng thì lại sống được. Cũng lạ.
 
--= Roll With The Wind =--
Quản trị viên
Cũng vấn đề này, một số module như Slider/ các block trượt ngang dọc trái phải..... dùng thư viện BXslider sẽ gặp phải lỗi không tương thích với NukeViet 4.1 trở lên.
Vấn đề này do:
+ BX Slider tương thích với jQuery thấp hơn phiên bản 3.
+ NukeViet 4.1 dùng jQuery 3 =__=
+ BX Slider đã bị ngưng cập nhật từ chính tác giả ban đầu.

May mắn là cộng đồng vẫn thích thư viện này và đã nâng cấp để tương thích với jQuery cao hơn.

Chúng ta có thể tải về từ link sau:
https://github.com/stevenwanderski/bxslider-4

Link thẳng đến file JS cần cập nhật:
https://github.com/stevenwanderski/bxslider-4/blob/master/dist/jquery.bxslider.min.js

Hoặc tải về từ đính kèm của diễn đàn (Nguyên cục).
----------------------
Sau đó, lấy file JS cần thiết, thay thế cho JS tương ứng của module hoặc block.
Thông thường là
jquery.bxslider.min.js
hoặc
jquery.bxslider.min

Sau đó tiến hành dọn dẹp hệ thống, xoá cache của trình duyệt nếu cần thiết và thử lại xem Slider đã hoạt động chưa nhé.
 

Attachments

Thành viên năng động
Thế này có hay không chứ..Thank cụ Nhôm nha!
 
Thích: anhyeuviolet