推56论坛

 找回密码
 立即注册(限中文)

QQ登录

只需一步,快速开始

    查看: 78|回复: 0

    [ECshop教程] ECSHOP调用指定DEDECMS织梦栏目文章列表

      [复制链接]
    发表于 2018-4-28 13:22:59 | 显示全部楼层 |阅读模式
    系统: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;//返回记录数

    学建站、学推广、学赚钱,上56站长论坛就够了!个性签名请到个人资料里面修改……

    本版积分规则

    关闭

    推56站长论坛推荐上一条 /3 下一条

    站长QQ
    在线咨询
    咨询热线
    QQ:405327411
    站长

    QQ|广告合作|关于我们|联系我们|免责声明|网站导航|站长论坛 ( 豫ICP备11018337号-5

    王宝臣旗下网站 推56论坛(www.tui56.com|ask.tui56.com|blog.tui56.com|daohang.tui56.com)

    Powered by Discuz! X3.4 Licensed

    ©2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表