Hướng dẫn hiệu chỉnh module liên hệ

Ở module liên hệ, có một điều khiến không ít người khó chịu khi gửi phản hồi, tại form điền thông tin có các trường như email, tên...Và trường email này đã bị mờ đi và không thể chỉnh sửa. Vậy phải làm thế nào để nhập được nội dung email khác. Trong bài viết ngày hôm nay mình sẽ hướng dẫn chi tiết cách bỏ đi ràng buộc này nhé

1. Hướng dẫn bỏ đi ràng buộc email  có video dưới cùng bài viết

Đây là giao diện trang liên hệ mặc định.

emailrequire

Đầu tiên chúng ta sẽ làm cho phần email này hiển thị ra ở giao diện có thể nhấn vào để chỉnh sửa được.
Phần hiển thị sẽ nằm tại đường dẫn: C:\Program Files (x86)\Ampps\www\canhbinh\themes\default\modules\contact. Ở đây mình cài nukeviet tại C:\Program Files (x86)\Ampps\www\ và tên thư mục là canhbinh.
đường dẫn file form

Tại đây chúng ta mở file form.tpl để chỉnh sửa giao diện tại phần email
Inkedcodeform LI

Tại thẻ input type="email" chúng ta bỏ đi thuộc tính disabled, onkeypress, data-mess, sẽ được giao diện mới như sau
emailnorequire

Giờ chúng ta có thể nhấp vào để chỉnh sửa email. Tuy nhiên khi bấm gửi thì sẽ không thể gửi được bởi vì ở phần ràng buộc vẫn còn. Để bỏ đi ràng buộc này chúng ta vào thư mục modules\contact\funcs và mở file main.php lên.
dkmain

Inkedrequireemail LI

Tại file này chúng ta xóa đi đoạn code sau:
if (($check_valid_email = nv_check_valid_email($femail)) != '') {
        nv_jsonOutput(array(
            'status' => 'error',
            'input' => 'femail',
            'mess' => $check_valid_email));
    }

Bấm lưu lại và ra ngoài site kiểm tra kết quả,
Như vậy là chúng ta đã bỏ được yêu cầu nhập email.

2. Bỏ chức năng nhập captcha:

Tương tự như trên, chúng ta vào file form.tpl để loại bỏ phần giao diện hiển thị captcha
deletecapcha

Chúng ta xóa từ đoạn BEGIN: captcha đến hết đoạn END: recaptcha.
Được giao diện như sau:

nocapcha

Phần captcha đã không còn hiển thị, giờ chỉ cần vào file main.php để xóa đi ràng buộc nhập captcha.

captcha

Chúng ta xóa đoạn code sau:
if (!nv_capcha_txt(($global_config['captcha_type'] == 2 ? $nv_Request->get_title('g-recaptcha-response', 'post', '') : $nv_Request->get_title('fcode', 'post', '')))) {
        nv_jsonOutput(array(
            'status' => 'error',
            'input' => ($global_config['captcha_type'] == 2 ? '' : 'fcode'),
            'mess' => ($global_config['captcha_type'] == 2 ? $lang_global['securitycodeincorrect1'] : $lang_global['securitycodeincorrect'])));
    }


Và đây là kết quả:

send

sendss

Đã gửi thành công và bạn không cần phải nhập captcha

3. Thêm vào một trường bất kì:


Mặc định ở phần gửi phản hồi có các trường: Chủ đề bạn quan tâm, tiêu đề, tên người dùng, email, số điện thoại, địa chỉ, nội dung. Nhưng nếu bạn muốn thêm một trường dữ liệu nữa thì làm như thế nào?
Các bạn chỉ cần thực hiện theo các bước sau:
Bước 1: Thêm vào giao diện để nhập thêm trường dữ liệu mới.
Tương tự như trên, bạn mở file form.tpl lên để thêm một thẻ div mới chứa những gì bạn cần thêm. Ở đây mình sẽ copy đoạn code hiển thị địa chỉ và chỉnh sửa lại một chút.
adddiv

Mình vừa thêm sao chép thêm 1 đoạn code hiển thị email:
<div class="input-group">
                <span class="input-group-addon">
                    <em class="fa fa-home fa-lg fa-horizon"></em>
                </span>
                <input type="text" maxlength="60" value="{CONTENT.faddress}" name="faddress" class="form-control" placeholder="{LANG.address}" />
            </div>


doubleemail

Sau khi thêm đoạn trên ta được hai khung nhập địa chỉ, giờ chỉ cần sửa lại theo ý muốn ( bạn cũng có thể viết mới hoàn toàn).

{CONTENT.faddress} dùng để lấy giá trị email, {LANG.address} dùng để hiển thị nội dung gợi ý tại khung nhập email, Chúng ta sẽ đổi {LANG.address} thành {LANG.test} để hiển thị cho trường dữ liệu mới và được khai báo tại modules\contact\language\vi.php.
addname

formadd

Giao diện đã hiển thị khung nhập là "Thêm trường", Vậy là đã xử lý xong giao diện, giờ cần xử lý để có thể thêm dữ liệu vào database.
Tại đoạn code phía trên {CONTENT.faddress} bạn sẽ đổi lại thành {CONTENT.adddb}, Ở đây mình đặt tên là adddb bạn có thể đặt tên khác tùy ý.
Bước 2:
Để chèn thêm trường vào thì trong database bạn cần thêm 1 trường mới để chứa dữ liệu. Ở đây mình tạo một trường có tên là sender_adddb vào trong bảng cb_vi_contact_send.

adđb

db

Bước 3:
Tiếp theo bạn vào modules\contact\funcs\main.php thêm vào các đoạn code sau:

khaibao

Bạn sẽ khai báo một biến
$adddb = ' ';

insert

Và thêm một đoạn để insert dữ liệu
 
$fcon = nv_nl2br($fcon);
    $fphone = nv_substr($nv_Request->get_title('fphone', 'post', '', 1), 0, 100);
    $faddress = nv_substr($nv_Request->get_title('faddress', 'post', '', 1), 0, 100);
    $adddb = nv_substr($nv_Request->get_title('adddb', 'post', '', 1), 0, 100);
    $fsendcopy = ((int)$nv_Request->get_bool('sendcopy', 'post') and $sendcopy);
    $sender_id = intval(defined('NV_IS_USER') ? $user_info['userid'] : 0);

    $sql = 'INSERT INTO ' . NV_PREFIXLANG . '_' . $module_data . '_send
    (cid, cat, title, content, send_time, sender_id, sender_name, sender_email, sender_phone, sender_address,sender_adddb, sender_ip, is_read, is_reply) VALUES
    (' . $fpart . ', :cat, :title, :content, ' . NV_CURRENTTIME . ', ' . $sender_id . ', :sender_name, :sender_email, :sender_phone, :sender_address, :sender_adddb, :sender_ip, 0, 0)';
    $data_insert = array();
    $data_insert['cat'] = $fcat;
    $data_insert['title'] = $ftitle;
    $data_insert['content'] = $fcon;
    $data_insert['sender_name'] = $fname;
    $data_insert['sender_email'] = $femail;
    $data_insert['sender_phone'] = $fphone;
    $data_insert['sender_address'] = $faddress;
    $data_insert['sender_adddb'] = $adddb;
    $data_insert['sender_ip'] = $client_info['ip'];
    $row_id = $db->insert_id($sql, 'id', $data_insert);


Giờ bạn chỉ cần vào trang liên hệ để xem kết quả:
add


themthanhcong

Sau khi gửi thì dữ liệu đã được chèn vào trong database.

Mọi người thắc mắc hay có câu hỏi nào thì bình luận bên dưới nhé!

 

Tác giả bài viết: Bình Thạch

Chia sẻ bài viết:

Tổng số điểm của bài viết là: 5 trong 1 đánh giá

Xếp hạng: 5 - 1 phiếu bầu
Click để đánh giá bài viết

  Trao đổi thảo luận