zoukankan      html  css  js  c++  java
  • ecshop调用指定ID分类下的文章列表(指定分类下的文章)

    我们先打开根目录下的article_cat.php这个文件,
    在第19行      require(dirname(__FILE__) . '/includes/init.php')

    这是一个加载includes目录下的init.php这个文件,init.php是一个初始化文件,在里边定义的很多初始页面的文章。
    而我们的article_cat.php是文章分类页面的程序,但是并没有调用指定ID分类的文章这个程序,所以我们需要自己写一个这样功能的程序。
    添加的程序可以添加在article_cat.php文件里,也可以添加在init.php文件下。

    我们在这里只介绍在init.php中添加,在article_cat.php中添加的方法类似,只是在article_cat.php中添加的就只能在文章分类下调用这个添加的函数。

    打开init.php之后,在php代码结束符?>之前添加一下代码:
     
    //指定分类指定分类模板指向----------请先看完下面说明再动手复制
    $smarty->assign('class_articles_5', index_get_class_articles(5,3));// 分类调用文章
    $smarty->assign('class_articles_6', index_get_class_articles(6,3)); // 分类调用文章
    //指定分类指定分类模板指向----------请先看完下面说明再动手复制
     
    function index_get_class_articles($cat_aid, $cat_num)
    {
      $sql = "SELECT article_id, title,open_type,cat_id,file_url FROM " .$GLOBALS['ecs']->table('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;
    }
     
    //这里建议最好修改下上面那句也就是文章链接的调用,因为本人测试如果调用了文章缩略图(后台文章那个上传文件当做文章缩略图调用),有的文链接章路径就会出错,会变成图片路径
    //把
        $arr[$idx]['url'] = $row['open_type'] != 1 ?
        build_uri('article', array('aid' => $row['article_id']), $row['title']) : trim($row['file_url']);
    //改成
        $arr[$idx]['url'] = build_uri('article', array('aid' => $row['article_id']), $row['title']);
     

    现在说明一下这个函数的调用
    $smarty->assign('class_articles_5', index_get_class_articles(5,3));// 分类调用文章
    中的5是文章的分类ID,3是该分类下调用的文章总数。
     
    在这里特别说明下 (//指定分类模板指向,也就是函数调用:$smarty->assign('class_articles_5', index_get_class_articles(5,3));// 分类调用文章) 这一段最好放到所需要显示的php里面,比如index.php、article.php 、article_cat.php
    经过本人测试,指定分类模板指向放到init.php最后这里,会导致前台验证码无法显示。就算注释掉那断 /* 判断是否支持 Gzip 模式...*/ 代码也不管用,其他人不知道有没有出现这种情况
     
    1、如在文章内容模板调用 先打开article.php,
    先找到 if (!$smarty->is_cached('article.dwt', $cache_id)),大概45行,
    把 $smarty->assign('class_articles_5', index_get_class_articles(5,3));// 分类调用文章
    复制到 if (!$smarty->is_cached('article.dwt', $cache_id)) 之前一行,之后会出错啊
    2、如在文章列表模板调用 先打开article_cat.php,
    找到 $smarty->display('article_cat.dwt', $cache_id); 就在最后吧,
    把 $smarty->assign('class_articles_5', index_get_class_articles(5,3));// 分类调用文章
    复制到 $smarty->display('article_cat.dwt', $cache_id); 之前一行,之后会出错啊

    如何在ecshop中查看文章分类的ID号

    上边是程序里定义的代码,接下来就是说一下是怎么在前台调用出来
    只需要在模板里添加下边的代码就OK了。

    <!--{foreach from=$class_articles_5 item=article}-->
    <a href="{$article.url}" title="{$article.title|escape:html}"><!--{$article.short_title|truncate:15:true}--></a>
    <!--{/foreach}-->
     
    分享给小伙伴们:
     
  • 相关阅读:
    PHP数组(数组正则表达式、数组、预定义数组)
    面向对象。OOP三大特征:封装,继承,多态。 这个讲的是【封存】
    uvalive 3938 "Ray, Pass me the dishes!" 线段树 区间合并
    LA4329 Ping pong 树状数组
    HDU 1257 最少拦截系统
    HDU 1260 Tickets
    codeforce 621D
    codeforce 621C Wet Shark and Flowers
    codeforce 621B Wet Shark and Bishops
    codeforce 621A Wet Shark and Odd and Even
  • 原文地址:https://www.cnblogs.com/zhicheng/p/4387608.html
Copyright © 2011-2022 走看看