Lưu ý 2 vấn đề:
input[type=submit]
của các html-form không được có thuộc tính [name=submit]
[name=submit]
Do đó bạn cần tìm và đổi tên các nút submit của form, và tìm các thẻ input của form nếu có [name=submit]
cần đổi sang giá trị khác
Lưu ý: Phần này không bắt buộc phải thực hiện
Các biến $page_url và $canonicalUrl cần được xác định ở tất cả các khu vực hiển thị ra bên ngoài site, biến $base_url cần được xác định nếu khu vực đó có phân trang.
Bắt buộc sử dụng hàm getCanonicalUrl để xác định $canonicalUrl. Hàm này cũng có chức năng kiểm tra chuỗi truy vấn REQUEST_URI với url chính tắc. (Chi tiết về hàm getCanonicalUrl tại https://github.com/nukeviet/nukeviet/blob/0749136b86bcc8cca9711fbcfdf51dc2354aef1e/includes/functions.php#L1773-L1821)
Ví dụ về thiết lập URL chính tắc:
$page_url = $base_url = NV_BASE_SITEURL . 'index.php?' . NV_LANG_VARIABLE . '=' . NV_LANG_DATA . '&' . NV_NAME_VARIABLE . '=' . $module_name;$page = 1;if (isset($array_op[0]) and substr($array_op[0], 0, 5) == 'page-') { $page = intval(substr($array_op[0], 5));}if ($page > 1) { $page_url .= '&' . NV_OP_VARIABLE . '=page-' . $page;}$canonicalUrl = getCanonicalUrl($page_url);
Bắt buộc sử dụng betweenURLs - hàm kiểm tra việc đánh số trang và xác định trang trước, trang sau. Ở trang cần đánh số trang, sau khi tính được tổng số item để chia trang xong, cần thêm ngay xuống dưới:
$urlappend = '&' . NV_OP_VARIABLE . '=page-';betweenURLs($page, ceil($num_items/$per_page), $base_url, $urlappend, $prevPage, $nextPage);
Trong đó:
Tìm tất cả:
nv_rss_generate($channel, $items);
Thay bằng:
$atomlink = NV_BASE_SITEURL . "index.php?" . NV_LANG_VARIABLE . "=" . NV_LANG_DATA . "&" . NV_NAME_VARIABLE . "=" . $module_name . "&" . NV_OP_VARIABLE . "=" . $module_info['alias']['rss'];nv_rss_generate($channel, $items, $atomlink);
Việc quản lý captcha di chuyển từ cấu hình chung toàn site đến cấu hình từng module. Do đó sẽ không còn 2 biến toàn cục $global_config['captcha_type'] và $global_config['gfx_chk']. Thêm biến toàn cục mới $global_config['recaptcha_ver'] có giá trị là phiên bản recaptcha được áp dụng (2 hay 3). Nếu module có sử dụng captcha, cần sửa lại như hướng dẫn sau:
INSERT INTO `nv4_config` (`lang`, `module`, `config_name`, `config_value`) VALUES ('vi', 'ten-module', 'captcha_type', 'captcha');
Sau đó chỉnh sửa files, tương tự như ở đây:
// Xác định có áp dụng reCaptcha hay không$reCaptchaPass = (!empty($global_config['recaptcha_sitekey']) and !empty($global_config['recaptcha_secretkey']) and ($global_config['recaptcha_ver'] == 2 or $global_config['recaptcha_ver'] == 3));
Tìm đến khu vực xác thực captcha, thường là ở quanh khu vực có từ khóa "nv_capcha_txt", sửa thành:
unset($fcaptcha); if ($module_config[$module_name]['captcha_type'] == 'recaptcha' and $reCaptchaPass) { // Xác định giá trị của captcha nhập vào nếu sử dụng reCaptcha $fcaptcha = $nv_Request->get_title('g-recaptcha-response', 'post', ''); } elseif ($module_config[$module_name]['captcha_type'] == 'captcha') { // Xác định giá trị của captcha nhập vào nếu sử dụng captcha hình $fcaptcha = $nv_Request->get_title('fcode', 'post', ''); } // Kiểm tra tính hợp lệ của captcha nhập vào, nếu không hợp lệ => thông báo lỗi if (isset($fcaptcha) and !nv_capcha_txt($fcaptcha, $module_config[$module_name]['captcha_type'])) { nv_jsonOutput([ 'status' => 'error', 'input' => ($module_config[$module_name]['captcha_type'] == 'recaptcha') ? '' : 'fcode', 'mess' => ($module_config[$module_name]['captcha_type'] == 'recaptcha') ? $lang_global['securitycodeincorrect1'] : $lang_global['securitycodeincorrect'] ]); }
if ($global_config['captcha_type'] == 2) { ... $xtpl->parse('main.recaptcha'); }
Thay bằng:
// Thêm vào global 3 biến toàn cục này (nếu chưa có) global $global_config, $module_config, $module_name; // Xác định có áp dụng reCaptcha hay không $reCaptchaPass = (!empty($global_config['recaptcha_sitekey']) and !empty($global_config['recaptcha_secretkey']) and ($global_config['recaptcha_ver'] == 2 or $global_config['recaptcha_ver'] == 3)); // Nếu dùng reCaptcha v3 if ($module_config[$module_name]['captcha_type'] == 'recaptcha' and $reCaptchaPass and $global_config['recaptcha_ver'] == 3) { $xtpl->parse('main.recaptcha3'); } // Nếu dùng reCaptcha v2 elseif ($module_config[$module_name]['captcha_type'] == 'recaptcha' and $reCaptchaPass and $global_config['recaptcha_ver'] == 2) { ... $xtpl->parse('main.recaptcha'); }
<form action="{USER_LOGIN}" method="post" onsubmit="return login_validForm(this);" autocomplete="off" novalidate>
Thay bằng:
<form action="{USER_LOGIN}" method="post" onsubmit="return login_validForm(this);" autocomplete="off" novalidate<!-- BEGIN: recaptcha3 --> data-recaptcha3="1"<!-- END: recaptcha3 -->>
Tìm đến đoạn kiểu như:
<!-- BEGIN: recaptcha -->...<div id="{RECAPTCHA_ELEMENT}"></div>...<!-- END: recaptcha -->
div có chứa id="{RECAPTCHA_ELEMENT}" thay bằng:
<div id="{RECAPTCHA_ELEMENT}" data-toggle="recaptcha" data-pnum="4" data-btnselector="[type=submit]"></div>
Trong đó giá trị của data-pnum bằng số bước ngược lên kể từ phần tử này đến khi gặp thẻ FORM (chính là pnum của nv_recaptcha_elements.push ngay dưới), data-btnselector là selector nhận diện nút submit của FORM. Xóa toàn bộ đoạn mã javascript ở dưới (<script type="text/javascript">...</script>)
(Không bắt buộc làm việc này nếu code của bạn chỉ có 1 hosting duy nhất)
Tìm tất cả:
NV_BASE_SITEURL . NV_ASSETS_DIR
Nếu đó là đường dẫn đến file tĩnh (js, css, jpg, png, gif...) thay bằng:
NV_STATIC_URL . NV_ASSETS_DIR
Tìm tất cả:
NV_BASE_SITEURL . 'themes
Nếu đó là đường dẫn đến file tĩnh (js, css, jpg, png, gif...) thay bằng:
NV_STATIC_URL . 'themes
Tìm tất cả:
NV_BASE_SITEURL . NV_EDITORSDIR
Nếu đó là đường dẫn đến file tĩnh (js, css, jpg, png, gif...) thay bằng:
NV_STATIC_URL . NV_EDITORSDIR
Tìm tất cả:
{NV_BASE_SITEURL}{NV_ASSETS_DIR}
Nếu đó là đường dẫn đến file tĩnh (js, css, jpg, png, gif...) thay bằng:
/{NV_ASSETS_DIR}
Tìm tất cả:
{NV_BASE_SITEURL}assets/editors
Nếu đó là đường dẫn đến file tĩnh (js, css, jpg, png, gif...) thay bằng:
/assets/editors
Tìm tất cả:
{NV_BASE_SITEURL}themes
Nếu đó là đường dẫn đến file tĩnh (js, css, jpg, png, gif...) thay bằng:
/themes
Vì lý do bảo mật, hệ thống tự động thêm rel="noopener noreferrer nofollow" vào các link chuyển hướng đến một site khác. Để tránh việc thêm này bạn cần tự thêm vào link đoạn sau:
rel="dofollow"
Nếu module của bạn có chức năng bình luận, tức trong file action_mysql.php có dòng này
$sql_create_module[] = 'INSERT INTO ' . NV_CONFIG_GLOBALTABLE . " (lang, module, config_name, config_value) VALUES ('" . $lang . "', '" . $module_name . "', 'auto_postcomm', '1')";
Bổ sung vào file action_mysql.php
$sql_create_module[] = 'INSERT INTO ' . NV_CONFIG_GLOBALTABLE . " (lang, module, config_name, config_value) VALUES ('" . $lang . "', '" . $module_name . "', 'captcha_area_comm', '1')";$sql_create_module[] = 'INSERT INTO ' . NV_CONFIG_GLOBALTABLE . " (lang, module, config_name, config_value) VALUES ('" . $lang . "', '" . $module_name . "', 'captcha_type_comm', 'captcha')";
Những tin mới hơn
Những tin cũ hơn