ecshop调用指定栏目下的文章的方法

ecshop调用指定栏目下的文章的方法

1.打开 /index.php (手机端在mobile/index.php)添加 fun函数一个,需放在php开始符与结束符?>中间。

/**
 * 获得指定栏目的文章列表。
 * @param   int      $cat_aid   栏目ID
 * @param   int      $cat_num   条数
 * @return array
 */
function index_get_articles($cat_aid= 0, $cat_num= 10){
    $ta = $GLOBALS['ecs']->table('article');
    $tac = $GLOBALS['ecs']->table('article_cat');
    $sql = "
         SELECT a.article_id, a.title, ac.cat_name, a.add_time, a.file_url, a.open_type, ac.cat_id, ac.cat_name
         FROM $ta AS a, $tac AS ac
         WHERE a.cat_id = ac.cat_id AND a.cat_id = $cat_aid
         ORDER BY a.article_type DESC, a.add_time DESC LIMIT $cat_num
     ";
    $res = $GLOBALS['db']->getAll($sql);

    $arr = array();
    foreach ($res AS $idx => $row){
        $arr[$idx]['id']          = $row['article_id'];
        $arr[$idx]['title']       = $row['title'];
        $arr[$idx]['short_title'] = $GLOBALS['_CFG']['article_title_length'] > 0 ?
                                        sub_str($row['title'], $GLOBALS['_CFG']['article_title_length']) : $row['title'];
        $arr[$idx]['cat_name']    = $row['cat_name'];
        $arr[$idx]['add_time']    = local_date($GLOBALS['_CFG']['date_format'], $row['add_time']);
        $arr[$idx]['url']         = $row['open_type'] != 1 ?
                                        build_uri('article', array('aid' => $row['article_id']), $row['title']) : trim($row['file_url']);
        $arr[$idx]['cat_url']     = build_uri('article_cat', array('acid' => $row['cat_id']), $row['cat_name']);
          $arr[$idx]['cat_id']      = $row['cat_id'];
    }
    return $arr;
}

2.第二步,在/includes/lib_goods.php(手机端在/mobile/includes/lib_goods.php)查找以下代码,并添加代码所示内容:

$smarty->assign('invoice_list',    index_get_invoice_query());  // 发货查询
$smarty->assign('new_articles',    index_get_new_articles());   // 最新文章
$smarty->assign('group_buy_goods', index_get_group_buy());      // 团购商品
$smarty->assign('auction_list',    index_get_auction());        // 拍卖活动
$smarty->assign('shop_notice',     $_CFG['shop_notice']);       // 商店公告
// 找到上边的代码,添加下边这行(8是栏目ID,9是条数):
$smarty->assign('service_article', index_get_articles(8,9));    //售后服务文章

3.第三步,在你需要调用的dwt文件或者lib文件里加入以下代码:

<ul class="arcList">
<!--{foreach from=$service_article name=service_article item=article}-->
    <li><a href="{$article.url}" title="{$article.title|escape:html}">{$article.title}</a></li>
<!--{/foreach}-->
</ul>

备注:如果只是查一个单独表,例如“ecsmart_article”中的文章;可以将 第二步中的方法里面的sql语句改一下,也可以参照下面代码:

/** 
* 获得指定栏目最新的文章列表。 
* 
* @access private 
* @return array 
*/ 
function index_get_class_articles($cat_aid, $cat_num) 
{ 
    $sql = "SELECT article_id, title,open_type,cat_id,file_url FROM " .$GLOBALS['ecs']->table('ecsmart_article'). " WHERE cat_id = ".$cat_aid." and is_open = 1 LIMIT " . $cat_num; 

    $res = $GLOBALS['db']->getAll($sql); 
    $arr = array(); 
    foreach ($res AS $idx => $row) 
    { 
        $arr[$idx]['id'] = $row['article_id']; 
        $arr[$idx]['title'] = $row['title']; 
        $arr[$idx]['short_title'] = $GLOBALS['_CFG']['article_title_length'] > 0 ? 
        sub_str($row['title'], $GLOBALS['_CFG']['article_title_length']) : $row['title']; 
        $arr[$idx]['cat_name'] = $row['cat_name']; 
        $arr[$idx]['add_time'] = local_date($GLOBALS['_CFG']['date_format'], $row['add_time']); 
        $arr[$idx]['url'] = $row['open_type'] != 1 ? 
        build_uri('article', array('aid' => $row['article_id']), $row['title']) :   trim($row['file_url']); 
        $arr[$idx]['cat_url'] = build_uri('article_cat', array('acid' => $row['cat_id'])); 
    } 
    return $arr; 
    } 

为避免方法名冲突可以将第二步的“service_article”改成 “class_articles_18”(自己定义),第一步循环调用中“from”和“name”也改成同样的名字即可,第一步参考代码:

<!--{foreach from=$class_articles_18 name=class_articles_18 item=article}-->
   <a class="aaa">{$article.title}</a> 
<!--{/foreach}-->

第二步改动代码:

$smarty->assign('class_articles_18', index_get_articles(18,1)); 

这就是我今天遇到的问题,同样也是亲自测试过得,这是别人的成果,我只是梳理成自己更容易理解的内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值