#185844 gửi bởi yuti
Ngày 02 Tháng 08 2017 , 03:41
Xin chào,
Mình có thêm phần live search cho chức năng tìm kiếm của Nukeviet 4.1.00 bằng plugin jQuery Typeahead (https://www.npmjs.com/package/jquery-typeahead)

Demo: https://chogotamauonline.com
(Chỉ hoạt động ở phiên bản desktop)

Với plugin này, mình chỉ làm được javascript và html, với dữ liệu search là 1 file .js thêm/bớt bằng thủ công.
Vậy cho mình hỏi là có cách nào truy xuất bảng dữ liệu nào đó trong Nukeviet để nó tự động thêm/bớt sản phẩm khi mình thêm hay xóa sản phẩm trong trang hay không?
Xin cám ơn đã đọc, hi vọng là được anh/chị/em giúp đỡ.
Sửa lần cuối bởi yuti vào Ngày 02 Tháng 08 2017 , 03:50, với tổng số 2 lần sửa.

:)
#185845 gửi bởi thuvp
Ngày 02 Tháng 08 2017 , 05:25
Cái này theo mình thì từ file js bạn gọi đến một file lấy dữ liệu (file PHP). Ở file php thì bạn lấy dữ liệu ra từ cơ sở dữ liệu của site trả về kết quả để hiển thị gợi ý tìm kiếm.
#185848 gửi bởi hoaquynhtim99
Ngày 02 Tháng 08 2017 , 07:31
Cái này bạn nên sử dụng jquery UI auto complete đã có sẵn trong NukeViet, bạn tham khảo cách sử dụng, cách truy xuất ở module news khi thêm bài viết trong admin, phần Tags

Hãy sống là chính mình, bình thường nhưng không tầm thường.
#185849 gửi bởi yuti
Ngày 02 Tháng 08 2017 , 08:19
Cám ơn 2 bạn thuvp và hoaquynhtim99 đã trả lời!
Mình sẽ tìm hiểu sau, nhưng đang làm dang dở cái này coi như là học thêm chút kiến thức :)

Có thêm một vấn đề là ô tìm kiếm đã có thể sử dụng live search của plugin jQuery Typeahead. Nhưng chức năng tìm kiếm chính của Nukeviet thì bị lỗi.
Trong tag input của plugin có dòng:

name="game_v1[query]"

Khi mình nhập 1 từ (watch) để tìm kiếm xong ấn enter hoặc click vào nút tìm kiếm thì nó ra đường dẫn trên trình duyệt là http://domain.com/?game_v1[query]=watch <- cái này không chạy được vì đường dẫn đúng phải là http://domain.com/seek/?q=watch

Mình cố dùng .htaccess để redirect url đó bằng:

RewriteCond %{QUERY_STRING} ^/?game_v1[query]=(.*)$
RewriteRule ^seek/?q=$ /?game_v1[query]=%1 [R,L]

Redirect ^seek/?q=$ /?game_v1[query]=$1 [NC,L]

Nhưng nó không hoạt động, có lẽ đã viết sai trong việc redirect.

Mong mọi người giúp mình viết dòng lệnh redirect trong .htaccess sao cho ra được http://domain.com/seek/?q={query string}

Xin cám ơn!

:)
#185854 gửi bởi yuti
Ngày 02 Tháng 08 2017 , 12:34
Đã tìm ra cách viết redirect trong file .htaccsess
Mình muốn chuyển từ http://domain.com/?q={QUERY_STRING}
thành http://domain.com/seek/?q={QUERY_STRING}
nên mình thêm 2 dòng này vào .htaccess thì nó chuyển được

RewriteCond %{QUERY_STRING} ^q=(.*)$
RewriteRule ^$ /seek/?q=%1 [R=301]

Có điều nó chỉ chạy ở trang chủ :-$
Còn đang đứng ở vị trí một sản phẩm/bài viết cụ thể thì lại không chạy :-S
Có ai có thời gian rảnh, chỉ mình sửa ở đâu đó một chút nữa không?
Xin cám ơn!

:)
#185855 gửi bởi yuti
Ngày 02 Tháng 08 2017 , 12:40
À cũng tìm ra được rồi,
2 dòng trong .htaccess viết lại như sau:

RewriteCond %{QUERY_STRING} ^q=(.*)$
RewriteRule ^(.*)$ /seek/?q=%1 [R=301]

Rất cám ơn mọi người, xin lỗi vì làm tốn tài nguyên diễn đàn, mình sẽ sớm xóa chủ đề này.

:)
#185856 gửi bởi hongoctrien
Ngày 02 Tháng 08 2017 , 20:19
Cứ để lại đi bạn không cần xóa làm gì.
NukeViet có thư viện select2, cũng hỗ trợ ajax search rất tiện, bạn có thể tham khảo
Sửa lần cuối bởi hongoctrien vào Ngày 02 Tháng 08 2017 , 20:19, với tổng số 1 lần sửa.

Hỏi nhanh đáp gọn tất tần tật mọi thứ liên quan đến NukeViet ==> https://mynukeviet.net/hoi-dap/
#185859 gửi bởi hoaquynhtim99
Ngày 02 Tháng 08 2017 , 23:55

name="game_v1[query]"

Cái này bạn đừng nên cố sửa vào code NukeViet hay file .htaccess mà hãy thay đổi thiết lập của plugin để nó nhận
 [name="q"]
Chẳng hạn, nếu plugin không thể thay đổi thì bạn nên từ bỏ nó, không đáng để sử dụng

Hãy sống là chính mình, bình thường nhưng không tầm thường.
#185865 gửi bởi yuti
Ngày 03 Tháng 08 2017 , 02:53
Xin chào,
Theo lời bạn hongoctrien, mình đang cố sử dụng select2 để làm auto complete cho chức năng search cho trang của mình.
Do select2 có thể đọc từ file .json, cho nên mình dự định làm theo cách sau:
- Dùng file .php để truy xuất vào table trong database.
- Dùng file .php ghi ra file.json.
- Dùng select2 để load file .json.
Mình tìm được hướng dẫn dùng file .php để ghi database ra file .json như sau:

<?php
//open connection to mysql db
$connection = mysqli_connect("hostname","username","password","nv4_database") or die("Error " . mysqli_error($connection));

//fetch table rows from mysql db
$sql = "select vi_title,vi_alias from nv4_dac_san_an_giang_rows";
$result = mysqli_query($connection, $sql) or die("Error in Selecting " . mysqli_error($connection));

//create an array
$emparray = array();
while($row =mysqli_fetch_assoc($result))
{
$emparray[] = $row;
}
echo json_encode($emparray);

//close the db connection
mysqli_close($connection);
?>
<?php
//write to json file
$fp = fopen('/patch/datasearch.json', 'w');
fwrite($fp, json_encode($emparray));
fclose($fp);
?>

Nhưng nó không hoạt động, chỉ tạo ra được file datasearch.json trống.
Làm ơn chỉ mình với, xin cám ơn!

:)