Huỳnh Quốc Đạt

PGĐ, Đồng sáng lập
VUTAVN CO.,LTD

Nơi ghi chép và chia sẻ những trải nghiệm của mình trong quá trình học tập và làm việc. Hy vọng, ở đây bạn sẽ tìm thấy được những điều bạn cần tìm!


Hướng dẫn tùy biến Module Liên hệ

Hướng dẫn tùy biến Module Liên hệ
Mục lục

1. Bỏ yêu cầu bắt buộc một mục dữ liệu trong form

Để bỏ yêu cầu bắt buộc nhập của một mục dự liệu trong form liên hệ:
Đầu tiên, phía giao diện bạn tiến hành xóa phần html của mục đó (nếu không muốn hiển thị), còn nếu vẫn muốn giữ lại mục đó, ta sẽ mở file themes\<ten_giao_dien>\modules\contact\form.tpl, chỉnh phần input đó như sau:
  • Bỏ class: required
  • Bỏ attribute: data-pattern
  • Bỏ attribute: onkeypress
  • Bỏ attribute: data-mess
Tiếp theo, mở file modules\contact\funcs\main.php, tìm:
if (empty($fname))
Từ đoạn này trở xuống là phần kiểm tra các mục dữ liệu (validation) để báo lỗi, mặc định module Liên hệ của NukeViet CMS kiểm tra các mục: Họ tên (fname), Email (femail), Tiêu đề (ftitle), Nội dung (fcon), Captcha.
Bạn muốn bỏ yêu cầu bắt buộc mục nào thì xóa (hoặc comment/khóa) đoạn code mục đó lại: đoạn câu lệnh if.

Ví dụ: Bạn muốn bỏ yêu cầu bắt buộc nhập mục Email, thì xóa (hoặc comment/khóa) đoạn code sau:
if ($check_valid_email[0] != '') {
        nv_jsonOutput(array(
            'status' => 'error',
            'input' => 'femail',
            'mess' => $check_valid_email[0]
        ));
    }


Như vậy là bạn đã bỏ yêu cầu bắt buộc nhập một mục dữ liệu trong form liên hệ rồi. Tiếp theo, mình sẽ hướng dẫn bạn thêm một mục dữ liệu mới vào form liên hệ nhé!

2. Thêm một mục dữ liệu mới vào form

Thêm một mục dữ liệu mới vào form sẽ nhiều bước hơn một chút, tuy nhiên với một số bạn đã quen lập trình rồi thì không có gì phức tạp. Chúng sẽ thực hiện các bước:
  • Tạo thêm trường dữ liệu trong Cơ sở dữ liệu (Database)
  • Thêm Ô nhập liệu (input) vào form phía giao diện
  • Xử lý lưu dữ liệu khi khách Gửi liên hệ (Submit form)
  • Hiển thị thông tin khách đã nhập lên giao diện phía Quản trị
Để dễ hình dung, trong các bước bên dưới, mình sẽ lấy ví dụ: Thêm một mục Ghi chú vào Form liên hệ.

Bước 1: Tạo thêm trường dữ liệu trong Cơ sở dữ liệu (Database)

Bạn vào phpMyAdmin, mở CSDL của website lên, tìm bảng: nv4_vi_contact_send, chọn mục sửa bảng và thêm vào 1 trường dữ liệu (lưu ý: chọn kiểu dữ liệu cho phù hợp), ở đây mình sẽ thêm trường: sender_note, kiểu dữ liệu là text

Bước 2: Thêm Ô nhập liệu (input) vào form phía giao diện

Mở file: themes\<ten_giao_dien>\modules\contact\form.tpl, thêm html hiển thị phần nhập dữ liệu bạn cần. Ví dụ:

Ngoài giao diện sẽ hiển thị:

Bước 3: Xử lý lưu dữ liệu khi khách Gửi liên hệ (Submit form)

Khi khách Gửi liên hệ đi, ta phải xử lý để lấy nội dung khách đã nhập và lưu xuống cơ sở dữ liệu.
Mở file: modules\contact\funcs\main.php, tìm:
$faddress = '';
Thêm bên dưới dòng code sau:
$sender_note = '';
// hoặc tên biến như tên trường dữ liệu mà bạn thêm

Tìm:
$fphone = nv_substr($nv_Request->get_title('fphone', 'post', '', 1), 0, 100);
Thêm vào bên dưới dòng code sau:
$sender_note = $nv_Request->get_title('sender_note', 'post', '');

Tiếp tục tìm:
(cid, cat, title, content, send_time, sender_id, sender_name, sender_email, sender_phone, sender_address, sender_ip, is_read, is_reply) VALUES
Thay thế bằng:
(cid, cat, title, content, send_time, sender_id, sender_name, sender_email, sender_phone, sender_address, sender_ip, sender_note, is_read, is_reply) VALUES

Tìm:
(' . $fpart . ', :cat, :title, :content, ' . NV_CURRENTTIME . ', ' . $sender_id . ', :sender_name, :sender_email, :sender_phone, :sender_address, :sender_ip, 0, 0)';
Thay bằng:
(' . $fpart . ', :cat, :title, :content, ' . NV_CURRENTTIME . ', ' . $sender_id . ', :sender_name, :sender_email, :sender_phone, :sender_address, :sender_ip, :sender_note, 0, 0)';

Có thể thấy, tại 2 lần thay bên trên, mình đã thực hiện chỉnh sửa lệnh SQL để ghi dữ liệu vào DB, mình đã thêm sender_note sau sender_ip

Tiếp tục tìm:
$data_insert['sender_ip'] = $client_info['ip'];
Thêm vào phía bên dưới dòng code sau:
$data_insert['sender_note'] = $sender_note;

Lưu lại, hoàn thành bước 3.

Bước 4: Hiển thị thông tin khách đã nhập lên giao diện phía Quản trị

Ví dụ: Đây là một nội dung mẫu mà khách sẽ gửi liên hệ cho website


Bây giờ chúng ta sẽ hiển thị phần nội dung đó trong giao diện phía Quản trị.
Mở file: themes\admin_default\modules\contact\view.tpl, tìm:
<tr>
                <td>{LANG.cat}</td>
                <td>{DATA.cat}</td>
            </tr>

Thêm vào bên dưới đoạn code sau:
<tr>
                <td>Ghi chú</td>
                <td>{DATA.sender_note}</td>
            </tr>

Nội dung code phần đó sẽ dạng như sau:



Sau khi thêm xong, lưu file lại.
Quay lại phần danh sách liên hệ, mở xem liên hệ vừa được gửi lên, ta sẽ thấy nội dung khách nhập sẽ xuất hiện phía Quản trị:



Như vậy là chúng ta đã thêm một mục dữ liệu mới vào form liên hệ.
Chúc bạn thành công!

Tác giả: Huỳnh Quốc Đạt

Từ khóa được tìm kiếm nhiều nhất:  module nukeviet, module liên hệ, tùy biến module nukeviet, chia sẻ module nukeviet

Chú ý: Bài viết này thuộc bản quyền của Huỳnh Quốc Đạt, việc đăng lại bài viết trên ở website hoặc các phương tiện truyền thông khác mà không ghi rõ nguồn huynhquocdat.com là vi phạm bản quyền.
Đừng quên vote ở đây nè:
5 / 5 (11 phiếu bầu)
Xem nhiều gần đây
Series Khóa học NukeViet CMS cơ bản

  Hãy để lại ý kiến của bạn nhé!

  • Bình Cảnh Bình Cảnh 2 tháng trước
    Huỳnh Quốc Đạt, nếu cần thêm 1 trường file đính kèm thì làm thế nào bác có thể hướng dẫn thêm không?
  • Chuẩn Chuẩn 9 tháng trước
    Mình đã cài module Weblink vào rồi, nhưng không hiển thị được lên, có cần khai báo hay tùy biến gì nữa không vậy bạn. Thanks
    • Huỳnh Quốc Đạt Huỳnh Quốc Đạt 9 tháng trước
      @Chuẩn Bạn có đã thêm block weblink vào giao diện chưa?
  • khuc thuy du khuc thuy du 1 năm trước
    Thêm trường ngày tháng vào không gửi được, báo lỗi vì lý do kỹ thuật. Mong bạn giúp.
    • Huỳnh Quốc Đạt Huỳnh Quốc Đạt 1 năm trước
      @khuc thuy du bạn đã làm đủ các bước thêm trường mới chưa, có thể bạn chưa tạo field mới trong cơ sở dữ liệu?
  • Mạnh Tùng Mạnh Tùng 1 năm trước
    Râts hay. Nếu được bạn có thể hd bên module news? Ví dụ mỗi chuyên mục mình gán 1 color để ở ngoài site hiển thị màu đó đc. Cảm ơn bạn
    • Huỳnh Quốc Đạt Huỳnh Quốc Đạt 1 năm trước
      @Mạnh Tùng OK bạn, thời gian tới mình sẽ viết bài hướng dẫn chỉnh sửa module news
  • Huỳnh Quốc Đạt Huỳnh Quốc Đạt 1 năm trước
    Bạn có muốn tùy biến thêm module nào nữa không?