Zen Cart是一款强大的开源购物车软件,其首页默认情况下会随机获取所有最近添加的产品进行展示。然而,有时希望在首页只展示特定分类下的新进产品,这样可以更好地引导用户浏览感兴趣的商品。在本文中,将分享如何通过修改Zen Cart模板中的代码实现个性化定制首页新进产品的展示方式,从而提高用户体验和购物效果。

第一步:打开includes/modules/new_products.php文件。

首先,需要打开includes/modules/new_products.php这个模块文件,该文件负责在首页展示新进产品的功能。将通过修改这个文件的代码来实现个性化的展示。

第二步:定位新进产品查询的代码。

includes/modules/new_products.php文件中,需要找到$new_products_query这个变量,它控制了查询最新产品的SQL语句。该变量决定了首页将显示哪些新进产品,需要在其中加入一些条件来指定只在某些特定分类下展示新进产品。

找到以下代码段:

php

Copy code

if ( (($manufacturers_id > 0 && $_GET['filter_id'] == 0) || $_GET['music_genre_id'] > 0 || $_GET['record_company_id'] > 0) || (!isset($new_products_category_id) || $new_products_category_id == ’0′) ) {

    $new_products_query = “select distinct p.products_id, p.products_image, p.products_tax_class_id, pd.products_name,

    p.products_date_added, p.products_price, p.products_type, p.master_categories_id

    from ” . TABLE_PRODUCTS . ” p, ” . TABLE_PRODUCTS_DESCRIPTION . ” pd

    where p.products_id = pd.products_id

    and pd.language_id = ‘” . (int)$_SESSION['languages_id'] . “‘

    and p.products_status = 1 ” . $display_limit;

} else {

    // get all products and cPaths in this subcat tree

    $productsInCategory = zen_get_categories_products_list( (($manufacturers_id > 0 && $_GET['filter_id'] > 0) ? zen_get_generated_category_path_rev($_GET['filter_id']) : $cPath), false, true, 0, $display_limit);

 

    if (is_array($productsInCategory) && sizeof($productsInCategory) > 0) {

        // build products-list string to insert into SQL query

        foreach($productsInCategory as $key => $value) {

            $list_of_products .= $key . ‘, ‘;

        }

        $list_of_products = substr($list_of_products, 0, -2); // remove trailing comma

 

        $new_products_query = “select distinct p.products_id, p.products_image, p.products_tax_class_id, pd.products_name,

        p.products_date_added, p.products_price, p.products_type, p.master_categories_id

        from ” . TABLE_PRODUCTS . ” p, ” . TABLE_PRODUCTS_DESCRIPTION . ” pd

        where p.products_id = pd.products_id

        and pd.language_id = ‘” . (int)$_SESSION['languages_id'] . “‘

        and p.products_status = 1

        and p.products_id in (” . $list_of_products . “)”;

    }

}

第三步:修改代码实现个性化定制。

为了实现只在特定分类下展示新进产品,需要在代码中加入条件。具体步骤如下:

在代码中添加新的变量$filter_cate=”;,该变量用于存储要显示的特定分类ID

$filter_cate变量后面添加$cate_IDS=”22″;的代码,将22替换为要显示的特定分类ID。如果有多个分类,请用逗号分隔,例如:$cate_IDS=”22, 25, 30″;

if条件判断语句中,添加代码块:if($this_is_home_page){ $filter_cate=” and p.master_categories_id in($cate_IDS) “; }。这段代码将在首页显示新进产品时生效。

最后,将$filter_cate变量添加到$new_products_querySQL语句后面,以实现只在指定分类下显示新进产品。

代码修改后如下:

php

Copy code

$filter_cate=”;

$cate_IDS=”22″; // 要显示的分类ID,如果有父分类,请输入子分类的ID

if($this_is_home_page){

    $filter_cate=” and p.master_categories_id in($cate_IDS) “;

}

if ( (($manufacturers_id > 0 && $_GET['filter_id'] == 0) || $_GET['music_genre_id'] > 0 || $_GET['record_company_id'] > 0) || (!isset($new_products_category_id) || $new_products_category_id == ’0′) ) {

    $new_products_query = “select distinct p.products_id, p.products_image, p.products_tax_class_id, pd.products_name,

    p.products_date_added, p.products_price, p.products_type, p.master_categories_id

    from ” . TABLE_PRODUCTS . ” p, ” . TABLE_PRODUCTS_DESCRIPTION . ” pd

    where p.products_id = pd.products_id

    and pd.language_id = ‘” . (int)$_SESSION['languages_id'] . “‘

    and p.products_status = 1 ” . $display_limit . $filter_cate; ///添加到SQL语句后面

} else {

    // get all products and cPaths in this subcat tree

    $productsInCategory = zen_get_categories_products_list( (($manufacturers_id > 0 && $_GET['filter_id'] > 0) ? zen_get_generated_category_path_rev($_GET['filter_id']) : $cPath), false, true, 0, $display_limit);

 

    if (is_array($productsInCategory) && sizeof($productsInCategory) > 0) {

        // build products-list string to insert into SQL query

        foreach($productsInCategory as $key => $value) {

            $list_of_products .= $key . ‘, ‘;

        }

        $list_of_products = substr($list_of_products, 0, -2); // remove trailing comma

 

        $new_products_query = “select distinct p.products_id, p.products_image, p.products_tax_class_id, pd.products_name,

        p.products_date_added, p.products_price, p.products_type, p.master_categories_id

        from ” . TABLE_PRODUCTS . ” p, ” . TABLE_PRODUCTS_DESCRIPTION . ” pd

        where p.products_id = pd.products_id

        and pd.language_id = ‘” . (int)$_SESSION['languages_id'] . “‘

        and p.products_status = 1

        and p.products_id in (” . $list_of_products . “)” . $filter_cate; ///添加到SQL语句后面

    }

}

第四步:保存并测试效果。

完成以上代码修改后,请保存文件并重新加载网站首页,查看是否成功实现个性化定制首页新进产品的展示。确保特定分类ID正确,以及首页展示的新进产品符合预期。

结语:

通过本文的指导,已经学会了如何通过修改Zen Cart模板中的代码,实现个性化定制首页新进产品的展示。通过仅在指定分类下展示新进产品,可以更好地引导用户,提高用户体验,增加网站流量和转化率。请记得备份文件并仔细核对代码,以确保修改正确无误。希望本文对定制化Zen Cart首页展示的新进产品有所帮助,让网站更加个性化,吸引更多的目标受众。

(本文内容根据网络资料整理,出于传递更多信息之目的,不代表连连国际赞同其观点和立场)