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}-->
 
分享給小伙伴們:
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM