ecshop自带函数就可以实现这个功能,函数如下:

include/lib_goods.php 中的 get_category_recommend_goods($type = '', $cats = '', $brand = 0, $min =0, $max = 0, $ext='') 函数。

调用步骤:

第一步:在根目录 index.php 文件 $smarty->assign('shop_notice', $_CFG['shop_notice']); // 商店公告 下方(约128行),插入如下代码:

$smarty->assign('category_recommend_goods22',    get_category_recommend_goods('hot',22)); //调用指定分类下推荐商品

其中 category_recommend_goods22 为在模板中调用的名称,hot 为要调用的推荐类型,22 为指定分类的分类id。

第二步:打开你的首页模板文件,在需要调用的地方插入下边代码:

<!--{foreach from=$category_recommend_goods22 item=goods name="category_recommend_goods"}-->			
    <!-- {if $smarty.foreach.category_recommend_goods.iteration < 7} **商品显示数量 -->
        <li><a href="{$goods.url}"><img src="{$goods.thumb}" width="194" height="172" /></a><div><br />
            <a href="{$goods.url}">{$goods.name|truncate:10:"...":true}</a><br />{$goods.brief}<br /> 
            {$goods.shop_price}</div>
        </li>
    <!--{/if}-->  
<!--{/foreach}--> 

完成上边两部基本上就大功告成了,但是有个问题,就是不能获取到该指定分类的子分类下的推荐商品,这样就需要对默认的函数进行改造,方法见第三步。

第三步:找到第一步用到的函数 get_category_recommend_goods,查找

    if (!empty($cats))
    {
        $sql .= " AND (" . $cats . " OR " . get_extension_goods($cats) .")";
    }

替换为:

if (!empty($cats))
{	
    //获取指定分类的所有子分类id cjm 20141111
    $cat_tree =  get_children($cats);		
    $sql .= " AND (".$cat_tree." OR " . get_extension_goods($cats) .")";
}

通过以上三步,就是可以实现在首页调用任意分类下的推荐商品了。