官方微博: 腾讯  
首页 > ECSHOP教程 > ECSHOP二次开发 > ECSHOP二次开发教程 > ECSHOP调用指定DEDECMS织梦栏目文章列表

ECSHOP调用指定DEDECMS织梦栏目文章列表

ECSHOP教程 / ecshop 教程网(www.ecshop119.com) 2013-06-29

系统:dedecms + ecshop
 
实现步骤:
1.在文章模版goods.dwt添加一个新的库文件dede_articles.lbi
themes/default/goods.dwt,请根据你的目录结构修改,如果是首页,请在index.php中添加,栏目页在category.php中添加

<!-- #BeginLibraryItem "/library/dede_articles.lbi" --><!-- #EndLibraryItem -->

2.themes/default/library/dede_articles.lbi

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<!-- {if $dede_articles} -->
<div class="h3Title"><h3>相关资讯</h3></div>
<ul class="brandList">
<!-- {foreach from=$dede_articles item=article} -->
<li><a href="{$article.url}" title="{$article.title}" rel="external">{$article.short_title|escape:html}

</a> </li>
<!-- {/foreach} -->
</ul>
<!-- {/if} -->

 3.goods.php载入dede,请根据你的目录结构修改,如果是首页,请在index.php中添加,栏目页在category.php中添加。

    define('IN_ECS', true);
    /*载入dede*/
    require_once(dirname(__FILE__)."/luxury/include/common.inc.php");

 4.goods.php调用dede数据,如果是首页,请在index.php中添加,栏目页在category.php中添加

    $smarty->assign('dede_articles', get_dede_articles()); //dede文章列表

 

5.get_dede_articles函数简单实现,如果是首页,请在index.php中添加,栏目页在category.php中添加。

    /**
     *
     * 获取dedecms的文章
     * @author http://www.heui.org
     * @return 文章列表
     */
     
    function get_dede_articles() {  
     
        //文档排序的方式
        $orderby = 'rand';
        $ordersql = '';
        if($orderby=='hot' || $orderby=='click') $ordersql = " ORDER BY arc.click $orderWay";
        else if($orderby == 'sortrank' || $orderby=='pubdate') $ordersql = " ORDER BY arc.sortrank $orderWay";
        else if($orderby == 'id') $ordersql = "  ORDER BY arc.id $orderWay";
        else if($orderby == 'near') $ordersql = " ORDER BY ABS(arc.id - ".$arcid.")";
        else if($orderby == 'lastpost') $ordersql = "  ORDER BY arc.lastpost $orderWay";
        else if($orderby == 'scores') $ordersql = "  ORDER BY arc.scores $orderWay";
        else if($orderby == 'rand') $ordersql = "  ORDER BY rand()";
        else $ordersql = " ORDER BY arc.sortrank $orderWay";
     
        //limit条件
        $line = 10;
        $limit = trim(preg_replace('#limit#is', '', $limit));
        if($limit!='') $limitsql = " LIMIT $limit ";
        else $limitsql = " LIMIT 0,$line ";
     
        $orwhere = '';
        if(isset($orwheres[0])) {
            $orwhere = join(' And ',$orwheres);
            $orwhere = preg_replace("#^ And#is", '', $orwhere);
            $orwhere = preg_replace("#And[ ]{1,}And#is", 'And ', $orwhere);
        }
        if($orwhere!='') $orwhere = " WHERE $orwhere ";
     
        $addfieldsSql = '';
        $addfieldsSqlJoin = '';
     
        $sql =  "SELECT 
     
    arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule,tp.namerule2,tp.ispart,
                tp.moresite,tp.siteurl,tp.sitepath
                $addfieldsSql
                 FROM `dede_archives` arc left join `dede_arctype` tp on arc.typeid=tp.id
                 $addfieldsSqlJoin
                 $orwhere $ordersql $limitsql";
     
        $res = $GLOBALS['db']->query($sql);
        $arr = array();
        while ($row = $GLOBALS['db']->fetchRow($res))
        {
            $row['url']         = GetFileUrl($row['id'],$row['typeid'],$row['senddate'],$row['title'],$row['ismake'],
                    $row['arcrank'],$row['namerule'],$row['typedir'],$row['money'],$row['filename'],$row
     
    ['moresite'],$row['siteurl'],$row['sitepath']);
     
            $row['short_title'] = $GLOBALS['_CFG']['article_title_length'] > 0 ?
                sub_str($row['title'], $GLOBALS['_CFG']['article_title_length']) : $row['title'];
     
            $arr[] = $row;
        }
     
        return $arr;
     
    }


 总结:最主要是需要实现获取文章路径, 在这个案例中我们载入dede, 直接调用GetFileUrl
 
提示:把$orwhere = '';改为$orwhere = 'arc.typeid=1';//表示调用栏目ID为1的文章列表
$line = 10;//返回记录数

转载请注明:ECshop119模板屋-ECshop教程网(全国最专业的ECSHOP插件制作商-专业ECSHOP二次开发)

帮助目录

在线反馈

可以将问题或建议反馈给我们。

提交在线反馈

与网友交流ECSHOP开发修改。

加入QQ群交流