Hướng dẫn [Trang chủ]Hiển thị sản phẩm ngẫu nhiên và theo thứ tự ngày tạo

--= Roll With The Wind =--
Quản trị viên
+ Bối cảnh:
Muốn đưa sản phẩm mới lên trên.
Muốn sản phẩm hiển thị ngẫu nhiêu cho nó mới và đẹp.

+ Áp dụng:
Khu vực trang chủ(main) của module Shops.

+ Hướng dẫn:
Tìm file sau:
Code:
=> /modules/shops/funcs/main.php
Tìm:
Code:
    $html_pages = '';     $orderby = '';
Đối chiếu code và sửa trở thành như dưới đây ( id thành publtime):
Code:
    if ($sorts == 0) {         $orderby = ' publtime DESC ';     } elseif ($sorts == 1) {         $orderby = ' t1.product_price ASC, t1.publtime DESC ';     } else {         $orderby = ' t1.product_price DESC, t1.publtime DESC ';     }
Nếu muốn sửa thêm phần xem theo loại SP:
Tìm
Code:
elseif ($pro_config['home_view'] == 'view_home_cat') {
Sửa code bên dưới nó có dòng
Code:
->order('id DESC')
thành
Code:
->order('publtime DESC')
Đối với hiện theo nhóm SP
Tìm:
Code:
->order('t1.id DESC')
Sửa thành:
Code:
->order('t1.publtime DESC')
Khi đó, sản phẩm có thời gian cập nhật mới nhất sẽ hiển thị lên đầu, thay vì dùng cơ chế ID.
Khi đó, nếu muốn sản phẩm nào được đẩy lên cao, ta chỉ cần sửa lại phần "Thời gian đăng" là được.

+++ Đối với cách hiển thị ngẫu nhiên:


Ở bước tìm
Code:
->order('t1.id DESC')
Thì thay vì sửa như ở trên, ta sửa là:
Code:
->order('RAND()')
Cách hiển thị này có điểm cần chú ý:

+ Trang chủ shops vẫn cache, do đó cần Admin lưu ý dọn dẹp Website hoặc cấu hình Cronjob để hệ thống tự dọn dẹp và đảo sản phẩm.

Chúc bạn thành công !
 
Thành viên năng động
Bác có thể quá bộ sửa luôn cả trang loại sản phẩm, vì như rên mới chỉ hiện ở trang chủ thôi
cám ơn bác trước
 
--= Roll With The Wind =--
Quản trị viên
Bác có thể quá bộ sửa luôn cả trang loại sản phẩm, vì như rên mới chỉ hiện ở trang chủ thôi
cám ơn bác trước
Mình nhớ mà. Tại bê bài cũ qua thôi. Mai mình viết nốt phần chuyên mục nhe.
 
Thành viên năng động
Mình nhớ mà. Tại bê bài cũ qua thôi. Mai mình viết nốt phần chuyên mục nhe.
cám ơn bác
 
B
Bạch Ngọc Hải Dương
Guest
Vậy còn muốn sản phẩm hiển thị theo lượt xem nhiều nhất thì sao AD ơi :20:
 
--= Roll With The Wind =--
Quản trị viên
Vậy còn muốn sản phẩm hiển thị theo lượt xem nhiều nhất thì sao AD ơi :20:
Bạn dùng hitstotal nhé.
PHP:
->order('t1.hitstotal DESC')
Nó sẽ sắp thứ tự SP có nhiều lượt xem nhất.
 
--= Roll With The Wind =--
Quản trị viên
B
Bạch Ngọc Hải Dương
Guest
Bạn dùng hitstotal nhé.
PHP:
->order('t1.hitstotal DESC')
Nó sẽ sắp thứ tự SP có nhiều lượt xem nhất.
Sửa trong file .php nào vậy AD?
 
--= Roll With The Wind =--
Quản trị viên
Sửa trong file .php nào vậy AD?
Bạn đang xem bài hướng dẫn cho trang chủ của Shops. Ở đầu bài viết mình có ghi, đó là main.php của module.
 
B
Bạch Ngọc Hải Dương
Guest
Bạn đang xem bài hướng dẫn cho trang chủ của Shops. Ở đầu bài viết mình có ghi, đó là main.php của module.
Mình đã thay hàm nhưng hông được ạ
Code mình:

PHP:
<?php

/**
 * @Project NUKEVIET 4.x
 * @Author VINADES.,JSC (contact@vinades.vn)
 * @Copyright (C) 2014 VINADES., JSC. All rights reserved
 * @License GNU/GPL version 2 or any later version
 * @Createdate 3-6-2010 0:14
 */

if (! defined('NV_IS_MOD_SHOPS')) {
    die('Stop!!!');
}

$page_title = $module_info['custom_title'];
$key_words = $module_info['keywords'];

$nv_Request->get_int('sorts', 'session', 0);
$sorts = $nv_Request->get_int('sort', 'post', 0);
$sorts_old = $nv_Request->get_int('sorts', 'session', 0);
$sorts = $nv_Request->get_int('sorts', 'post', $sorts_old);

$compare_id = $nv_Request->get_string($module_data . '_compare_id', 'session', '');
$compare_id = unserialize($compare_id);

$contents = '';
$cache_file = '';

if ($nv_Request->isset_request('changesprice', 'post')) {
    $sorts = $nv_Request->get_int('sort', 'post', 0);
    $nv_Request->set_Session('sorts', $sorts, NV_LIVE_SESSION_TIME);
    $nv_Cache->delMod($module_name);
    die('OK');
}

if ($nv_Request->isset_request('changeviewtype', 'post')) {
    $viewtype = $nv_Request->get_string('viewtype', 'post', '');
    $nv_Request->set_Session('viewtype', $viewtype, NV_LIVE_SESSION_TIME);
    $nv_Cache->delMod($module_name);
    die('OK');
}

if (! defined('NV_IS_MODADMIN') and $page < 5) {
    $cache_file = NV_LANG_DATA . '_' . $module_info['template'] . '_' . $op . '_' . $page . '_' . NV_CACHE_PREFIX . '.cache';
    if (($cache = $nv_Cache->getItem($module_name, $cache_file)) != false) {
        $contents = $cache;
    }
}

if (empty($contents)) {
    $data_content = array();
    $html_pages = '';
    $orderby = '';
    if ($sorts == 0) {
        $orderby = ' id DESC ';
    } elseif ($sorts == 1) {
        $orderby = ' t1.product_price ASC, t1.id DESC ';
    } else {
        $orderby = ' t1.product_price DESC, t1.id DESC ';
    }

    if ($pro_config['home_view'] == 'view_home_all') {
        // Fetch Limit
        $db->sqlreset()->select('COUNT(*)')->from($db_config['prefix'] . '_' . $module_data . '_rows t1')->where('t1.inhome=1 AND t1.status =1 ');

        $num_items = $db->query($db->sql())->fetchColumn();

        $db->select('id, listcatid, publtime, ' . NV_LANG_DATA . '_title, ' . NV_LANG_DATA . '_alias, ' . NV_LANG_DATA . '_hometext, homeimgalt, homeimgfile, homeimgthumb, product_code, product_number, product_price, money_unit, discount_id, showprice,' . NV_LANG_DATA . '_gift_content, gift_from, gift_to')
            ->order($orderby)
            ->limit($per_page)
            ->offset(($page - 1) * $per_page);

        $result = $db->query($db->sql());

        while (list($id, $listcatid, $publtime, $title, $alias, $hometext, $homeimgalt, $homeimgfile, $homeimgthumb, $product_code, $product_number, $product_price, $money_unit, $discount_id, $showprice, $gift_content, $gift_from, $gift_to) = $result->fetch(3)) {
            if ($homeimgthumb == 1) {
                //image thumb

                $thumb = NV_BASE_SITEURL . NV_FILES_DIR . '/' . $module_upload . '/' . $homeimgfile;
            } elseif ($homeimgthumb == 2) {
                //image file

                $thumb = NV_BASE_SITEURL . NV_UPLOADS_DIR . '/' . $module_upload . '/' . $homeimgfile;
            } elseif ($homeimgthumb == 3) {
                //image url

                $thumb = $homeimgfile;
            } else {
                //no image

                $thumb = NV_BASE_SITEURL . 'themes/' . $module_info['template'] . '/images/' . $module_file . '/no-image.jpg';
            }

            $data_content[] = array(
                'id' => $id,
                'listcatid' => $listcatid,
                'publtime' => $publtime,
                'title' => $title,
                'alias' => $alias,
                'hometext' => $hometext,
                'homeimgalt' => $homeimgalt,
                'homeimgthumb' => $thumb,
                'product_price' => $product_price,
                'product_number' => $product_number,
                'product_code' => $product_code,
                'discount_id' => $discount_id,
                'money_unit' => $money_unit,
                'showprice' => $showprice,
                'newday' => $global_array_shops_cat[$listcatid]['newday'],
                'gift_content' => $gift_content,
                'gift_from' => $gift_from,
                'gift_to' => $gift_to,
                'link_pro' => NV_BASE_SITEURL . 'index.php?' . NV_LANG_VARIABLE . '=' . NV_LANG_DATA . '&amp;' . NV_NAME_VARIABLE . '=' . $module_name . '&amp;' . NV_OP_VARIABLE . '=' . $global_array_shops_cat[$listcatid]['alias'] . '/' . $alias . $global_config['rewrite_exturl'],
                'link_order' => NV_BASE_SITEURL . 'index.php?' . NV_LANG_VARIABLE . '=' . NV_LANG_DATA . '&amp;' . NV_NAME_VARIABLE . '=' . $module_name . '&amp;' . NV_OP_VARIABLE . '=setcart&amp;id=' . $id
            );
        }

        if (empty($data_content) and $page > 1) {
            Header('Location: ' . nv_url_rewrite(NV_BASE_SITEURL . 'index.php?' . NV_LANG_VARIABLE . '=' . NV_LANG_DATA . '&' . NV_NAME_VARIABLE . '=' . $module_name, true));
            exit();
        }

        $base_url = NV_BASE_SITEURL . 'index.php?' . NV_LANG_VARIABLE . '=' . NV_LANG_DATA . '&amp;' . NV_NAME_VARIABLE . '=' . $module_name;
        $html_pages = nv_alias_page($page_title, $base_url, $num_items, $per_page, $page);
    } elseif ($pro_config['home_view'] == 'view_home_cat') {
        foreach ($global_array_shops_cat as $catid_i => $array_info_i) {
            if ($array_info_i['parentid'] == 0 and $array_info_i['inhome'] != 0) {
                $array_cat = array();
                $array_cat = GetCatidInParent($catid_i, true);

                // Fetch Limit
                $db->sqlreset()->select('COUNT(*)')->from($db_config['prefix'] . '_' . $module_data . '_rows t1')->where('listcatid IN (' . implode(',', $array_cat) . ') AND inhome=1 AND status =1');

                $num_pro = $db->query($db->sql())->fetchColumn();

                $db->select('id, listcatid, publtime, ' . NV_LANG_DATA . '_title, ' . NV_LANG_DATA . '_alias, ' . NV_LANG_DATA . '_hometext, homeimgalt, homeimgfile, homeimgthumb, product_code, product_number, product_price, money_unit, discount_id, showprice, ' . NV_LANG_DATA . '_gift_content, gift_from, gift_to')
                    ->order('t1.hitstotal DESC')
                    ->limit($array_info_i['numlinks']);

                $result = $db->query($db->sql());
                $data_pro = array();

                while (list($id, $listcatid, $publtime, $title, $alias, $hometext, $homeimgalt, $homeimgfile, $homeimgthumb, $product_code, $product_number, $product_price, $money_unit, $discount_id, $showprice, $gift_content, $gift_from, $gift_to) = $result->fetch(3)) {
                    if ($homeimgthumb == 1) {
                        //image thumb

                        $thumb = NV_BASE_SITEURL . NV_FILES_DIR . '/' . $module_upload . '/' . $homeimgfile;
                    } elseif ($homeimgthumb == 2) {
                        //image file

                        $thumb = NV_BASE_SITEURL . NV_UPLOADS_DIR . '/' . $module_upload . '/' . $homeimgfile;
                    } elseif ($homeimgthumb == 3) {
                        //image url

                        $thumb = $homeimgfile;
                    } else {
                        //no image

                        $thumb = NV_BASE_SITEURL . 'themes/' . $module_info['template'] . '/images/' . $module_file . '/no-image.jpg';
                    }

                    $data_pro[] = array(
                        'id' => $id,
                        'listcatid' => $listcatid,
                        'publtime' => $publtime,
                        'title' => $title,
                        'alias' => $alias,
                        'hometext' => $hometext,
                        'homeimgalt' => $homeimgalt,
                        'homeimgthumb' => $thumb,
                        'product_code' => $product_code,
                        'product_number' => $product_number,
                        'product_price' => $product_price,
                        'discount_id' => $discount_id,
                        'money_unit' => $money_unit,
                        'showprice' => $showprice,
                        'gift_content' => $gift_content,
                        'gift_from' => $gift_from,
                        'gift_to' => $gift_to,
                        'newday' => $global_array_shops_cat[$listcatid]['newday'],
                        'link_pro' => NV_BASE_SITEURL . 'index.php?' . NV_LANG_VARIABLE . '=' . NV_LANG_DATA . '&amp;' . NV_NAME_VARIABLE . '=' . $module_name . '&amp;' . NV_OP_VARIABLE . '=' . $global_array_shops_cat[$catid_i]['alias'] . '/' . $alias . $global_config['rewrite_exturl'],
                        'link_order' => NV_BASE_SITEURL . 'index.php?' . NV_LANG_VARIABLE . '=' . NV_LANG_DATA . '&amp;' . NV_NAME_VARIABLE . '=' . $module_name . '&amp;' . NV_OP_VARIABLE . '=setcart&amp;id=' . $id
                    );
                }

                $data_content[] = array(
                    'catid' => $catid_i,
                    'subcatid' => $array_info_i['subcatid'],
                    'title' => $array_info_i['title'],
                    'link' => $array_info_i['link'],
                    'data' => $data_pro,
                    'num_pro' => $num_pro,
                    'num_link' => $array_info_i['numlinks']
                );
            }
        }

        if ($page > 1) {
            Header('Location: ' . nv_url_rewrite(NV_BASE_SITEURL . 'index.php?' . NV_LANG_VARIABLE . '=' . NV_LANG_DATA . '&' . NV_NAME_VARIABLE . '=' . $module_name, true));
            exit();
        }
    } elseif ($pro_config['home_view'] == 'view_home_group') {
        $num_links = $pro_config['per_row'] * 3;

        foreach ($global_array_group as $groupid_i => $array_info_i) {
            if ($array_info_i['parentid'] == 0 and $array_info_i['inhome'] != 0) {
                $array_group = array();
                $array_group = GetGroupidInParent($groupid_i, true);

                $sql_regexp = array();
                foreach ($array_group as $_gid) {
                    $sql_regexp[] = "( t3.group_id='" . $_gid . "' )";
                }
                $sql_regexp = "(" . implode(" OR ", $sql_regexp) . ")";

                // Fetch Limit
                $db->sqlreset()->select('DISTINCT id')
                    ->from($db_config['prefix'] . '_' . $module_data . '_rows t1')
                    ->join('INNER JOIN ' . $db_config['prefix'] . '_' . $module_data . '_group_items t3 ON t3.pro_id = t1.id')
                    ->where($sql_regexp . ' AND t1.inhome=1 AND t1.status =1');

                $num_pro = $db->query($db->sql())->rowCount();

                $db->select('DISTINCT t1.id, t1.listcatid, t1.publtime, t1.' . NV_LANG_DATA . '_title, t1.' . NV_LANG_DATA . '_alias, t1.' . NV_LANG_DATA . '_hometext, t1.homeimgalt, t1.homeimgfile, t1.homeimgthumb, t1.product_code, t1.product_number, t1.product_price, t1.money_unit, t1.discount_id, t1.showprice, t1.' . NV_LANG_DATA . '_gift_content, t1.gift_from, t1.gift_to')
                    ->order('t1.hitstotal DESC')
                    ->limit($num_links);

                $result = $db->query($db->sql());

                $data_pro = array();

                while (list($id, $listcatid, $publtime, $title, $alias, $hometext, $homeimgalt, $homeimgfile, $homeimgthumb, $product_code, $product_number, $product_price, $money_unit, $discount_id, $showprice, $gift_content, $gift_from, $gift_to) = $result->fetch(3)) {
                    if ($homeimgthumb == 1) {
                        //image thumb

                        $thumb = NV_BASE_SITEURL . NV_FILES_DIR . '/' . $module_upload . '/' . $homeimgfile;
                    } elseif ($homeimgthumb == 2) {
                        //image file

                        $thumb = NV_BASE_SITEURL . NV_UPLOADS_DIR . '/' . $module_upload . '/' . $homeimgfile;
                    } elseif ($homeimgthumb == 3) {
                        //image url

                        $thumb = $homeimgfile;
                    } else {
                        //no image

                        $thumb = NV_BASE_SITEURL . 'themes/' . $module_info['template'] . '/images/' . $module_file . '/no-image.jpg';
                    }

                    $data_pro[] = array(
                        'id' => $id,
                        'listcatid' => $listcatid,
                        'publtime' => $publtime,
                        'title' => $title,
                        'alias' => $alias,
                        'hometext' => $hometext,
                        'homeimgalt' => $homeimgalt,
                        'homeimgthumb' => $thumb,
                        'product_code' => $product_code,
                        'product_number' => $product_number,
                        'product_price' => $product_price,
                        'discount_id' => $discount_id,
                        'money_unit' => $money_unit,
                        'showprice' => $showprice,
                        'gift_content' => $gift_content,
                        'gift_from' => $gift_from,
                        'gift_to' => $gift_to,
                        'newday' => $global_array_shops_cat[$listcatid]['newday'],
                        'link_pro' => NV_BASE_SITEURL . 'index.php?' . NV_LANG_VARIABLE . '=' . NV_LANG_DATA . '&amp;' . NV_NAME_VARIABLE . '=' . $module_name . '&amp;' . NV_OP_VARIABLE . '=' . $global_array_shops_cat[$listcatid]['alias'] . '/' . $alias . $global_config['rewrite_exturl'],
                        'link_order' => NV_BASE_SITEURL . 'index.php?' . NV_LANG_VARIABLE . '=' . NV_LANG_DATA . '&amp;' . NV_NAME_VARIABLE . '=' . $module_name . '&amp;' . NV_OP_VARIABLE . '=setcart&amp;id=' . $id
                    );
                }

                $data_content[] = array(
                    'groupid' => $groupid_i,
                    'title' => $array_info_i['title'],
                    'link' => $array_info_i['link'],
                    'data' => $data_pro,
                    'num_pro' => $num_pro,
                    'num_link' => $num_links
                );
            }
        }

        if ($page > 1) {
            Header('Location: ' . nv_url_rewrite(NV_BASE_SITEURL . 'index.php?' . NV_LANG_VARIABLE . '=' . NV_LANG_DATA . '&' . NV_NAME_VARIABLE . '=' . $module_name, true));
            exit();
        }
    } else {
        include NV_ROOTDIR . '/includes/header.php';
        echo nv_site_theme('');
        include NV_ROOTDIR . '/includes/footer.php';
        exit();
    }

    $contents = call_user_func($pro_config['home_view'], $data_content, $compare_id, $html_pages, $sorts);

    if (! defined('NV_IS_MODADMIN') and $contents != '' and $cache_file != '') {
        $nv_Cache->setItem($module_name, $cache_file, $contents);
    }
}

if ($page > 1) {
    $page_title .= ' ' . NV_TITLEBAR_DEFIS . ' ' . $lang_global['page'] . ' ' . $page;
    $description .= ' ' . $page;
}

include NV_ROOTDIR . '/includes/header.php';
echo nv_site_theme($contents);
include NV_ROOTDIR . '/includes/footer.php';
 
--= Roll With The Wind =--
Quản trị viên
^
File của bạn sửa thiếu.
Còn đoạn này chưa sửa :

PHP:
    if ($sorts == 0) {
        $orderby = ' id DESC ';
    } elseif ($sorts == 1) {
        $orderby = ' t1.product_price ASC, t1.id DESC ';
    } else {
        $orderby = ' t1.product_price DESC, t1.id DESC ';
    }
tìm thay id thành
hitstotal
Thử lại nhé.
 
B
Bạch Ngọc Hải Dương
Guest
^
File của bạn sửa thiếu.
Còn đoạn này chưa sửa :

PHP:
    if ($sorts == 0) {
        $orderby = ' id DESC ';
    } elseif ($sorts == 1) {
        $orderby = ' t1.product_price ASC, t1.id DESC ';
    } else {
        $orderby = ' t1.product_price DESC, t1.id DESC ';
    }
tìm thay id thành
hitstotal
Thử lại nhé.
Mình làm được rồi. Cảm ơn bạn :)
 
Thích: anhyeuviolet
Thành viên năng động
Nhôm giỏi quá!
 
Thành viên mới
anhyeuviolet cho em hỏi ở ngoài trang chủ em cho nó hiển thị sản phẩm theo danh mục sản phẩm bằng cách tạo Block danh mục sản phẩm kéo thả.
Kiểu hiển như thế này anh. Thì sửa file nào anh. Em sửa main.php như hướng dẫn không được ạ.

2.png
1.png
 
--= Roll With The Wind =--
Quản trị viên
anhyeuviolet cho em hỏi ở ngoài trang chủ em cho nó hiển thị sản phẩm theo danh mục sản phẩm bằng cách tạo Block danh mục sản phẩm kéo thả.
Kiểu hiển như thế này anh. Thì sửa file nào anh. Em sửa main.php như hướng dẫn không được ạ.

View attachment 1826
View attachment 1825
Mình không có block bạn đang dùng, chắc là hàng chế lại. Bạn thử tìm file PHP nào đó có tên giống giống global.block_cate ... xem sao.
Logo thì là hàng Vinagon nên có khi không giống với code gốc, nên hướng dẫn của mình chưa chắc phù hợp với code của bạn.
 
Thành viên mới
Mình không có block bạn đang dùng, chắc là hàng chế lại. Bạn thử tìm file PHP nào đó có tên giống giống global.block_cate ... xem sao.
Logo thì là hàng Vinagon nên có khi không giống với code gốc, nên hướng dẫn của mình chưa chắc phù hợp với code của bạn.
File global.block_cate_product.php đây anh đường dẫn /modules/shops/blocks/global.block_cate_product.php

PHP:
<?php

/**
* @Project NUKEVIET 4.x
* @Author VINADES.,JSC ([EMAIL]contact@vinades.vn[/EMAIL])
* @Copyright (C) 2014 VINADES., JSC. All rights reserved
* @License GNU/GPL version 2 or any later version
* @Createdate 3/9/2010 23:25
*/

if( ! defined( 'NV_MAINFILE' ) ) die( 'Stop!!!' );

if( ! nv_function_exists( 'nv_cate_product' ) )
{
/**
* nv_block_config_relates_blocks()
*
* @param mixed $module
* @param mixed $data_block
* @param mixed $lang_block
* @return
*/
function nv_block_config_cate_blocks( $module, $data_block, $lang_block )
{
global $nv_Cache,$db_config, $site_mods;

$html = "<tr>";
$html .= "<td>" . $lang_block['blockid'] . "</td>";
$html .= "<td><select name=\"config_blockid\" class=\"form-control w200\">\n";
$sql = "SELECT catid, " . NV_LANG_DATA . "_title," . NV_LANG_DATA . "_alias,lev FROM " . $db_config['prefix'] . "_" . $site_mods[$module]['module_data'] . "_catalogs ORDER BY `sort` ASC";
//print_r($sql);exit();

$list = $nv_Cache->db($sql, 'catid', $module);
//print_r($list);exit();
/*foreach( $list as $l )
{
$sel = ( $data_block['blockid'] == $l['bid'] ) ? ' selected' : '';
$html .= "<option value=\"" . $l['bid'] . "\" " . $sel . ">" . $l[NV_LANG_DATA . '_title'] . "</option>\n";
}*/
foreach ( $list as $l )
{
$lev_i  = $l['lev'];
$xtitle_i = "";
if ( $lev_i > 0 )
{
for ( $i = 1; $i <= $lev_i; $i ++ )
{
$xtitle_i .= "     ";
}
}
$sel = ( $data_block['catid'] == $l['catid'] ) ? ' selected' : '';
$html .= "<option value=\"" . $l['catid'] . "\" " . $sel . ">" . $xtitle_i. $l[NV_LANG_DATA . '_title'] . "</option>\n";
}
$html .= "</select></td>\n";
$html .= "</tr>";

$html .= "<tr>";
$html .= "<td>" . $lang_block['numrow'] . "</td>";
$html .= "<td><input class=\"form-control w100\" type=\"text\" name=\"config_numrow\" size=\"5\" value=\"" . $data_block['numrow'] . "\"/></td>";
$html .= "</tr>";

$html .= "<tr>";
$html .= "<td>" . $lang_block['cut_num'] . "</td>";
$html .= "<td><input class=\"form-control w100\" type=\"text\" name=\"config_cut_num\" size=\"5\" value=\"" . $data_block['cut_num'] . "\"/></td>";
$html .= "</tr>";

return $html;
}

/**
* nv_block_config_relates_blocks_submit()
*
* @param mixed $module
* @param mixed $lang_block
* @return
*/
function nv_block_config_cate_blocks_submit( $module, $lang_block )
{
global $nv_Request;
$return = array();
$return['error'] = array();
$return['config'] = array();
$return['config']['catid'] = $nv_Request->get_int( 'config_blockid', 'post', 0 );
$return['config']['numrow'] = $nv_Request->get_int( 'config_numrow', 'post', 0 );
$return['config']['cut_num'] = $nv_Request->get_int( 'config_cut_num', 'post', 0 );
return $return;
}

if( !nv_function_exists( 'nv_get_price_tmp' ) )
{
function nv_get_price_tmp( $module_name, $module_data, $module_file, $pro_id )
{
global $db, $db_config, $module_config, $discounts_config;

$price = array();
$pro_config = $module_config[$module_name];

if( file_exists( NV_ROOTDIR . '/modules/' . $module_file . '/site.functions.php' ) )
{
require_once NV_ROOTDIR . '/modules/' . $module_file . '/site.functions.php';
$price = nv_get_price( $pro_id, $pro_config['money_unit'], 1, false, $module_name );
}

return $price;
}
}

/**
* nv_relates_product()
*
* @param mixed $block_config
* @return
*/
function nv_cate_product( $block_config )
{
global $nv_Cache,$site_mods, $global_config, $lang_module, $module_config, $module_config, $module_name, $module_info, $global_array_shops_cat, $db_config, $my_head, $db, $pro_config, $money_config,$module_upload;

$module = $block_config['module'];
$mod_data = $site_mods[$module]['module_data'];
$mod_file = $site_mods[$module]['module_file'];

if( file_exists( NV_ROOTDIR . '/themes/' . $global_config['site_theme'] . '/modules/' . $mod_file . '/block.cate_product.tpl' ) )
{
$block_theme = $global_config['site_theme'];
}
else
{
$block_theme = 'default';
}

if( $module != $module_name )
{
$sql = 'SELECT catid, parentid, lev, ' . NV_LANG_DATA . '_title AS title, ' . NV_LANG_DATA . '_alias AS alias, viewcat, numsubcat, subcatid, numlinks, ' . NV_LANG_DATA . '_description AS description, inhome, ' . NV_LANG_DATA . '_keywords AS keywords, groups_view, typeprice FROM ' . $db_config['prefix'] . '_' . $mod_data . '_catalogs ORDER BY sort ASC';
// print_r($sql);exit();
$list = $nv_Cache->db($sql, 'catid', $module);
foreach( $list as $row )
{
$global_array_shops_cat[$row['catid']] = array(
'catid' => $row['catid'],
'parentid' => $row['parentid'],
'title' => $row['title'],
'alias' => $row['alias'],
'link' => NV_BASE_SITEURL . 'index.php?' . NV_LANG_VARIABLE . '=' . NV_LANG_DATA . '&' . NV_NAME_VARIABLE . '=' . $module . '&' . NV_OP_VARIABLE . '=' . $row['alias'],
'viewcat' => $row['viewcat'],
'numsubcat' => $row['numsubcat'],
'subcatid' => $row['subcatid'],
'numlinks' => $row['numlinks'],
'description' => $row['description'],
'inhome' => $row['inhome'],
'keywords' => $row['keywords'],
'groups_view' => $row['groups_view'],
'lev' => $row['lev'],
'typeprice' => $row['typeprice']
);
}
unset( $list, $row );

// Css
if( file_exists( NV_ROOTDIR . '/themes/' . $block_theme . '/css/' . $mod_file . '.css' ) )
{
$my_head .= '<link rel="StyleSheet" href="' . NV_BASE_SITEURL . 'themes/' . $block_theme . '/css/' . $mod_file . '.css" type="text/css" />';
}

// Language
if( file_exists( NV_ROOTDIR . '/modules/' . $mod_file . '/language/' . NV_LANG_DATA . '.php' ) )
{
require_once NV_ROOTDIR . '/modules/' . $mod_file . '/language/' . NV_LANG_DATA . '.php';
}

$pro_config = $module_config[$module];

// Lay ty gia ngoai te
$sql = 'SELECT code, currency, exchange, round, number_format FROM ' . $db_config['prefix'] . '_' . $mod_data . '_money_' . NV_LANG_DATA;
$cache_file = NV_LANG_DATA . '_' . md5( $sql ) . '_' . NV_CACHE_PREFIX . '.cache';
if( ($cache = nv_get_cache( $module, $cache_file )) != false )
{
$money_config = unserialize( $cache );
}
else
{
$money_config = array();
$result = $db->query( $sql );
while( $row = $result->fetch() )
{
$money_config[$row['code']] = array(
'code' => $row['code'],
'currency' => $row['currency'],
'exchange' => $row['exchange'],
'round' => $row['round'],
'number_format' => $row['number_format'],
'decimals' => $row['round'] > 1 ? $row['round'] : strlen( $row['round'] ) - 2,
'is_config' => ($row['code'] == $pro_config['money_unit']) ? 1 : 0
);
}
$result->closeCursor();
$cache = serialize( $money_config );
$nv_Cache->setItem($module, $cache_file, $cache);
}
}

$link = NV_BASE_SITEURL . 'index.php?' . NV_LANG_VARIABLE . '=' . NV_LANG_DATA . '&' . NV_NAME_VARIABLE . '=' . $module . '&' . NV_OP_VARIABLE . '=';
$array_cat_list = GetCatidInParent( $block_config['catid'] );
$xtpl = new XTemplate( 'block.cate_product.tpl', NV_ROOTDIR . '/themes/' . $block_theme . '/modules/' . $mod_file );
$xtpl->assign( 'LANG', $lang_module );
$xtpl->assign( 'WIDTH', $pro_config['homewidth'] );
$xtpl->assign('TEMPLATE', $module_info['template']);
$image_upload = NV_BASE_SITEURL . NV_UPLOADS_DIR . '/' . $module_upload . '/';
$xtpl -> assign('TITLE_CATALOG', $global_array_shops_cat[$block_config['catid']]['title']);
$xtpl -> assign('LINK_CATALOG', $global_array_shops_cat[$block_config['catid']]['link']);
$xtpl -> assign('IMG_CATALOG', $image_upload.$global_array_shops_cat[$block_config['catid']]['image']);
$xtpl -> assign('IMG_CATALOG2', $image_upload.$global_array_shops_cat[$block_config['catid']]['image2']);
$xtpl -> assign('IMG_CATALOG3', $image_upload.$global_array_shops_cat[$block_config['catid']]['image3']);
$xtpl -> assign('IMG_CATALOG4', $image_upload.$global_array_shops_cat[$block_config['catid']]['image4']);
$xtpl -> assign('IMG_CATALOG5', $image_upload.$global_array_shops_cat[$block_config['catid']]['image5']);
$xtpl -> assign('ICON_CATALOG', $image_upload.$global_array_shops_cat[$block_config['catid']]['icon']);
$xtpl -> assign('keywords', $global_array_shops_cat[$block_config['catid']]['keywords']);

$array_sub = explode("," , $global_array_shops_cat[$block_config['catid']]['subcatid'] );
//print_r($global_array_shops_cat[$block_config['catid']]);exit();

$i= 0;
if(!empty ($global_array_shops_cat[$block_config['catid']]['image'])){
$xtpl->parse( 'main.img' );
}
if(!empty ($global_array_shops_cat[$block_config['catid']]['image2'])){
$xtpl->parse( 'main.img2' );
}
if(!empty ($global_array_shops_cat[$block_config['catid']]['image3'])){
$xtpl->parse( 'main.img3' );
}
if(!empty ($global_array_shops_cat[$block_config['catid']]['image4'])){
$xtpl->parse( 'main.img4' );
}
foreach ( $array_sub as $sub )
{
if ( $i >= 5 ) break;
if ( !empty ($global_array_shops_cat[$sub]) )
{
//print_r($global_array_shops_cat[$sub]);exit();
$xtpl->assign( "SUB", $global_array_shops_cat[$sub] );
$xtpl->parse( 'main.sub' );
$i++;
}
}
/*$db->sqlreset()
->select( 't1.id, t1.listcatid, t1.' . NV_LANG_DATA . '_title AS title, t1.' . NV_LANG_DATA . '_alias AS alias, t1.addtime, t1.homeimgfile, t1.homeimgthumb, t1.product_price, t1.money_unit, t1.discount_id, t1.showprice, t1.' . NV_LANG_DATA . '_hometext AS hometext' )
->from( $db_config['prefix'] . '_' . $mod_data . '_rows t1' )
->join( 'INNER JOIN ' . $db_config['prefix'] . '_' . $mod_data . '_catalogs t2 ON t1.id = t2.catid' )
->where( 't2.catid IN (" . implode(',',$array_cat_list) . ") AND t1.status =1' )
->order( 't1.addtime DESC, t2.weight ASC' )
->limit( $block_config['numrow'] );*/

$sql = "SELECT  t1.id, t1.listcatid, t1." . NV_LANG_DATA . "_title as title, t1." . NV_LANG_DATA . "_alias as alias, t1.addtime,t1.homeimgfile,t1.homeimgthumb,t1.product_number,t1.product_price,t1.money_unit,t1.discount_id,t1.showprice,t1." . NV_LANG_DATA . "_hometext as hometext, t1.product_code FROM `" . $db_config['prefix'] . "_" . $mod_data . "_rows` as t1 WHERE listcatid IN (" . implode(',',$array_cat_list) . ") ORDER BY t1.addtime DESC LIMIT 0 , " . $block_config['numrow'] . "";

//print_r($sql);exit();
$list = $nv_Cache->db($sql, 'id', $module);

$i = 1;
$cut_num = $block_config['cut_num'];

foreach( $list as $row )
{
//print_r($row);exit();
if( $row['homeimgthumb'] == 1 ) //image thumb
{
$src_img = NV_BASE_SITEURL . NV_FILES_DIR . '/' . $site_mods[$module]['module_upload'] . '/' . $row['homeimgfile'];
}
elseif( $row['homeimgthumb'] == 2 ) //image file
{
$src_img = NV_BASE_SITEURL . NV_UPLOADS_DIR . '/' . $site_mods[$module]['module_upload'] . '/' . $row['homeimgfile'];
}
elseif( $row['homeimgthumb'] == 3 ) //image url
{
$src_img = $row['homeimgfile'];
}
else //no image
{
$src_img = NV_BASE_SITEURL . 'themes/' . $global_config['site_theme'] . '/images/shops/no-image.jpg';
}
$xtpl->assign('id', $row['id']);
$xtpl->assign( 'link', $link . $global_array_shops_cat[$row['listcatid']]['alias'] . '/' . $row['alias'] . $global_config['rewrite_exturl'] );
$xtpl->assign('title', $row['title']);
$xtpl->assign('title0', nv_clean60($row['title'], $cut_num));
$xtpl->assign('product_code', $row['product_code']);
$xtpl->assign( 'hometext', nv_clean60( $row['hometext'], 200 ) );
$xtpl->assign( 'src_img', $src_img );
$xtpl->assign( 'time', nv_date( 'd-m-Y h:i:s A', $row['addtime'] ) );
if( $pro_config['active_price'] == '1' )
{
if( $row['showprice'] == '1' )
{
$price = nv_get_price_tmp( $module, $mod_data, $mod_file, $row['id'] );
//var_dump($price); die;
$xtpl->assign( 'PRICE', $price );
// print_r($price);exit();
if( $row['discount_id'] and $price['discount_percent'] > 0 )
{
$xtpl->assign( 'sale', $row['discount_id'] );
$xtpl->parse( 'main.loop.price.discounts' );
$xtpl->parse( 'main.loop.discounts1' );
}
else
{
$xtpl->parse( 'main.loop.price.no_discounts' );
}
$xtpl->parse( 'main.loop.price' );
}
else
{
$xtpl->parse( 'main.loop.contact' );
}
}
$xtpl->assign( 'so', $i );
if ($pro_config['active_order'] == '1' and $pro_config['active_order_non_detail'] == '1') {
if ($row['showprice'] == '1') {
if ($row['product_number'] > 0) {
// Kiem tra nhom bat buoc chon khi dat hang
$listgroupid = GetGroupID($row['id']);
$group_requie = 0;
if (!empty($listgroupid) and !empty($global_array_group)) {
foreach ($global_array_group as $groupinfo) {
if ($groupinfo['in_order']) {
$group_requie = 1;
break;
}
}
}
$group_requie = $pro_config['active_order_popup'] ? 1 : $group_requie;
$xtpl->assign('GROUP_REQUIE', $group_requie);

$xtpl->parse('main.loop.order');
} else {
$xtpl->parse('main.loop.product_empty');
}
}
}

$xtpl->parse( 'main.loop' );
++$i;
}

$xtpl->parse( 'main' );
return $xtpl->text( 'main' );
}
}

if( defined( 'NV_SYSTEM' ) )
{
$content = nv_cate_product( $block_config );
}
 
Last edited by a moderator: Sáu 23, 2017 lúc 10:41 AM
Thành viên năng động
có cách nào cho block nó chạy random luôn không anh, web e cho hiện thị bằng lock ạ