NHÀ CUNG CẤP DỊCH VỤ CHUYÊN NGHIỆP
PHÁT TRIỂN
Luôn đồng hành cùng bạn!
Chuyên: WEBDESIGN - HOSTING - DOMAIN - CCTV
Hotline: 0903 880 905 - 0931 435 998


Hiển thị các bài đăng có nhãn thiết kế website. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn thiết kế website. Hiển thị tất cả bài đăng
Bạn có nhu cầu tuỳ biến publtime thành dạng 'vừa xong', 'x phút trước', 'x giờ trước', 'x tháng trước',.... Dưới đây là hướng dẫn các bước thực hiện.

1. Thêm hàm nv_publtime_text vào global.functions.php hoặc functions.php của module (Tuỳ vào module cụ thể để thêm cho phù hợp)
 
function nv_publtime_text($timestamp, $full = false)
{
    $now = new DateTime;
    $ago = new DateTime('@' . $timestamp);
    $diff = $now->diff($ago);
    $diff->w = floor($diff->d / 7);
    $diff->d -= $diff->w * 7;
    $string = [
        'y' => 'năm',
        'm' => 'tháng',
        'w' => 'tuần',
        'd' => 'ngày',
        'h' => 'giờ',
        'i' => 'phút',
        's' => 'giây'
    ];

    foreach ($string as $k => &$v) {
        if ($diff->$k) {
            $v = $diff->$k . ' ' . $v;
        } else {
            unset($string[$k]);
        }
    }

    if (!$full) $string = array_slice($string, 0, 1);
    return $string ? implode(', ', $string) . ' trước' : 'Vừa xong';
}

2. Thực hiện gọi hàm 
 
$row['publtime'] = nv_publtime_text($row['publtime']);
 

Chúc các bạn thành công

NHÀ CUNG CẤP DỊCH VỤ CHUYÊN NGHIỆP
PHÁT TRIỂN
WEBDESIGN - HOSTING - DOMAIN

Cách thêm một tiện ích widget thông thường


Ở cách thêm tiện ích widget thông thường này thì khi thêm tiện ích sẽ xuất hiện toàn bộ web, từ trang chủ, bài viết, label ...

CODE:
<b:section class='sidebar' id='sidebar1' preferred='yes'>
<b:widget id='HTML99' locked='false' title='Bài Viết Xem Nhiều' type='HTML'>
<b:includable id='main'>
<b:if cond='data:title != ""'>
<div class='title-left'><data:title/></div>
</b:if>
<div class='box-left'>
<data:content/>
</div>
<b:include name='quickedit'/>
</b:includable>
</b:widget>
</b:section>

Bài Viết Xem Nhiều là tiêu đề bạn đặt cho tiện ích

sidebar1, HTML99 là thứ tự của các layer wiget. nếu save nó báo đỏ thì đổi số cho khác vì nó rùng lặp. khi tạo cái khác cũng thế

VD: tiện ích 1 là sidebar1, HTML99 thì tiện ích 2 là sidebar2, HTML100
HTML là tên của tiện ích

VD HTML là HTML/Javascript, nếu bạn muốn thêm nhãn thì thay Bằng Label. phần này hơi phức tạp nếu bạn mà làm không được thì cứ commen vào bên giới mình sẽ chỉ rỏ cho

Ở những cách sau đây là những cách chỉ thêm tiện ích vào một vị trí bất kỳ ví dụ như trang chủ hoặc là label, bài viết, trang...

1. Chỉ cho phép widget hiển thị ở trang chủ


CODE:
<b:section class='sidebar' id='sidebar1' preferred='yes'>
<b:widget id='HTML3' locked='false' title='Thêm tiện ích ở trang chủ' type='HTML'>
<b:includable id='main'>
<b:if cond='data:blog.url == data:blog.homepageUrl'>
<!-- only display title if it's non-empty -->
<b:if cond='data:title != ""'>
<h2 class='title'><data:title/></h2>
</b:if>
<div class='widget-content'>
<data:content/>
</div>
<b:include name='quickedit'/>
</b:if>
</b:includable>
</b:widget>
</b:section>

Để thêm bạn đầu tiên là phải xác định vị trí muốn thêm, như head, footer....(nếu không xác địch được thì sau khi thêm vào một vị trí cùng với các tiện ích có sẵn trên web (thêm vào đầu hoặc cuối các tiện ích có sẵn sau này cho dể chĩnh sữa) rồi bạn vào bố cụng để di chuyển đến nơi thích hợp)
sau khi xác định vị trí muốn thêm thì bạn hãy copy cã đoạn mã trên rồi dán vào

2. Chỉ cho phép widget hiển thị ở từng bài viết


CODE:
<b:section class='sidebar' id='sidebar1' preferred='yes'>
<b:widget id='HTML3' locked='false' title='Thêm tiện ích ở từng bài viết' type='HTML'>
<b:includable id='main'>
<b:if cond='data:blog.pageType == "item"'>
<!-- only display title if it's non-empty -->
<b:if cond='data:title != ""'>
<h2 class='title'><data:title/></h2>
</b:if>
<div class='widget-content'>
<data:content/>
</div>
<b:include name='quickedit'/>
</b:if>
</b:includable>
</b:widget>
</b:section>

Đây là thủ thuật nhằm thêm tiện ích trên toàn bộ các bài viết:

3. Chỉ cho phép widget hiển thị ở những trang nhất định:


CODE:
<b:section class='sidebar' id='sidebar1' preferred='yes'>
<b:widget id='HTML3' locked='false' title='Thêm tiện ích ở trang nhất định' type='HTML'>
<b:includable id='main'>
<b:if cond='data:blog.url == "Link của bạn"'>
<!-- only display title if it's non-empty -->
<b:if cond='data:title != ""'>
<h2 class='title'><data:title/></h2>
</b:if>
<div class='widget-content'>
<data:content/>
</div>
<b:include name='quickedit'/>
</b:if>
</b:includable>
</b:widget>
</b:section>

Đây là code thêm tiện ích vào một trang nhất định, bạn có thể xem demo tại link Danh Mục ở phần này áp dụng vào tạo một danh mục các label trên một trang thay vì các label xuất hiện trên toàn ộ trang gây ra tốn nhiều khoảng trống của web.

4. Widget chỉ hiển thị trên các trang Label


CODE:
<b:section class='sidebar' id='sidebar1' preferred='yes'>
<b:widget id='HTML3' locked='false' title='Thêm tiện ích ở trên các label' type='HTML'>
<b:includable id='main'>
<b:if cond='data:blog.searchLabel'>
<!-- only display title if it's non-empty -->
<b:if cond='data:title != ""'>
<h2 class='title'><data:title/></h2>
</b:if>
<div class='widget-content'>
<data:content/>
</div>
<b:include name='quickedit'/>
</b:if>
</b:includable>
</b:widget>
</b:section>

5. Widget chỉ hiển thị trên các trang Static pages


CODE:
<b:section class='sidebar' id='sidebar1' preferred='yes'>
<b:widget id='HTML3' locked='false' title='Thêm tiện ích ở static pages' type='HTML'>
<b:includable id='main'>
<b:if cond='data:blog.pageType == "static_page"'>
<!-- only display title if it's non-empty -->
<b:if cond='data:title != ""'>
<h2 class='title'><data:title/></h2>
</b:if>
<div class='widget-content'>
<data:content/>
</div>
<b:include name='quickedit'/>
</b:if>
</b:includable>
</b:widget>
</b:section>

6. Widget hiển thị trên trang tìm kiếm


CODE:
<b:section class='sidebar' id='sidebar1' preferred='yes'>
<b:widget id='HTML3' locked='false' title='Thêm tiện ích ở trang tìm kiếm' type='HTML'>
<b:includable id='main'>
<b:if cond='data:blog.searchQuery>
<!-- only display title if it's non-empty -->
<b:if cond='data:title != ""'>
<h2 class='title'><data:title/></h2>
</b:if>
<div class='widget-content'>
<data:content/>
</div>
<b:include name='quickedit'/>
</b:if>
</b:includable>
</b:widget>
</b:section>

7. Widget chỉ hiển thị tại trang lưu trữ


CODE:
<b:section class='sidebar' id='sidebar1' preferred='yes'>
<b:widget id='HTML3' locked='false' title='Thêm tiện ích ở trang lưu trữ' type='HTML'>
<b:includable id='main'>
<b:if cond='data:blog.pageType == "archive"'>
<!-- only display title if it's non-empty -->
<b:if cond='data:title != ""'>
<h2 class='title'><data:title/></h2>
</b:if>
<div class='widget-content'>
<data:content/>
</div>
<b:include name='quickedit'/>
</b:if>
</b:includable>
</b:widget>
</b:section>


NHÀ CUNG CẤP DỊCH VỤ CHUYÊN NGHIỆP
PHÁT TRIỂN
WEBDESIGN - HOSTING - DOMAIN
Cấu trúc link chi tiết bài viết của module News trên CMS NukeViet mặc định có dạng rất dài. Bài viết này sẽ hướng dẫn các bạn loại bỏ alias chuyên mục khỏi link, nếu bạn chọn tính năng loại bỏ tên module news khỏi url thì link chi tiết sẽ rất gọn gàng.
Loại bỏ alias chuyên mục khỏi link bài viết trong module News


Cấu trúc link chi tiết bài viết của module News trên CMS NukeViet mặc định có dạngdomain.com/news/<alias-category>/<alias-detail>-<id>.html
Bài viết này sẽ hướng dẫn các bạn loại bỏ <alias-category> khỏi link, nếu bạn chọn tính năng loại bỏ tên module news khỏi url thì link chi tiết sẽ rất gọn gàng.

Chúng ta cùng bắt đầu nhé!
1. Xử lý $op
Mở file: modules\news\functions.php
Tìm:  if ($count_op > 1 or $catid > 0) {

thay bằng:
$array_page = explode('-', $array_op[0]);        $id = intval(end($array_page));        $number = strlen($id) + 1;        $alias_url = substr($array_op[0], 0, -$number);        if ($id > 0 and $alias_url != '' and $alias_url != 'page') {            $_row = $db->query('SELECT * FROM ' . NV_PREFIXLANG . '_' . $module_data . '_rows WHERE id = ' . $id)->fetch();            if (!empty($_row) and isset($global_array_cat[$_row['catid']])) {                $catid = $_row['catid'];                $op = 'detail';            }        } elseif ($count_op > 1 or $catid > 0) {
  


2. Thêm link_detail cho $global_array_cat

Cũng trong file: modules\news\functions.php

Tìm đoạn: (Line 34)
$global_array_cat[$l['catid']]['link'] = NV_BASE_SITEURL . 'index.php?' . NV_LANG_VARIABLE . '=' . NV_LANG_DATA . '&amp;' . NV_NAME_VARIABLE . '=' . $module_name . '&amp;' . NV_OP_VARIABLE . '=' . $l['alias'];

Thêm bên dưới:
$global_array_cat[$l['catid']]['link_detail'] = NV_BASE_SITEURL . 'index.php?' . NV_LANG_VARIABLE . '=' . NV_LANG_DATA . '&amp;' . NV_NAME_VARIABLE . '=' . $module_name . '&amp;' . NV_OP_VARIABLE . '=';

3. Thay thế link chi tiết bài viết
Mở file: modules\news\funcs\detail.php
Tìm đoạn: 
$base_url = NV_BASE_SITEURL . 'index.php?' . NV_LANG_VARIABLE . '=' . NV_LANG_DATA . '&amp;' . NV_NAME_VARIABLE . '=' . $module_name . '&amp;' . NV_OP_VARIABLE . '=' . $global_array_cat[$news_contents['catid']]['alias'] . '/' . $news_contents['alias'] . '-' . $news_contents['id'] . $global_config['rewrite_exturl'];

Thay bằng:
$base_url = NV_BASE_SITEURL . 'index.php?' . NV_LANG_VARIABLE . '=' . NV_LANG_DATA . '&amp;' . NV_NAME_VARIABLE . '=' . $module_name . '&amp;' . NV_OP_VARIABLE . '=' . $news_contents['alias'] . '-' . $news_contents['id'] . $global_config['rewrite_exturl'];

4. Xử lý link detail trong các file liên quan

- Mở file: modules\news\funcs\main.php

Tìm và thay thế tất cả các đoạn như sau:
$global_array_cat[$item['catid']]['link'] . '/' . $item['alias']

thay bằng:
$global_array_cat[$item['catid']]['link_detail'] . $item['alias']

Tìm và thay thế tất cả các đoạn như sau:
$array_cat_i['link'] . '/' . $item['alias']

thay bằng:
$array_cat_i['link_detail'] . $item['alias']

- Mở file: modules\news\funcs\viewcat.php

Tìm và thay thế tất cả các đoạn như sau:
$global_array_cat[$item['catid']]['link'] . '/' . $item['alias']

thay bằng:
$global_array_cat[$item['catid']]['link_detail'] . $item['alias']

- Mở file: modules\news\blocks\global.block_news_cat.php
Tìm:
$module_array_cat[$l['catid']]['alias'] . '/' . $l['alias']

thay bằng:
$l['alias']

- Mở file: modules\news\blocks\global.block_tophits.php
Tim:
$module_array_cat[$catid]['alias'] . '/' . $alias
thay bằng:
$alias

- Mở file: modules\news\blocks\module.block_news.php
Tìm:
$module_array_cat[$catid]['alias'] . '/' . $alias
thay bằng:
$alias


Vậy là hoàn thành, chúc bạn thành công nhé!
Theo: https://vuta.vn/blog/loai-bo-alias-chuyen-muc-khoi-link-bai-viet-trong-module-news-48.html


Trong bài viết này, mình sẽ hướng dẫn các bạn cách tùy biến module Liên hệ theo mong muốn, bao gồm việc loại bỏ yêu cầu bắt buộc nhập một mục và thêm một mục dữ liệu mới vào form.

Trong bài viết này, mình sẽ hướng dẫn các bạn cách tùy biến module Liên hệ theo mong muốn, bao gồm việc loại bỏ yêu cầu bắt buộc nhập một mục và thêm một mục dữ liệu mới vào form.

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ệnhif.

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àophpMyAdmin, 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à mình đã hướng dẫn các bạn cách tùy biến module Liên hệ theo mong muốn, bao gồm việc loại bỏ yêu cầu bắt buộc nhập một mục và thêm một mục dữ liệu mới vào form.

Chúc bạn thành công!
Theo: https://vuta.vn/blog/tuy-bien-module-lien-he-nv4-57.html


Translate

Quan tâm nhiều

Theo thời gian

Biểu mẫu liên hệ

Tên

Email *

Thông báo *