排行榜 统计
  • 文章总数:1688 篇
  • 评论总数:5 条
  • 分类总数:8 个
  • 最后更新:昨天 21:09

typecho热门文章按访问量排序的自定义扩展

本文阅读 1 分钟
首页 资讯 正文

首先,配置文件里面的functions.php,我的是这样的

  1. /
  2. *阅读统计
  3. *调用<?phpget_post_view($this); ?>
  4. */
  5. functionPostviews($archive){
  6. $db = Typecho_Db::get();
  7. $cid = $archive->cid;
  8. if (!array_key_exists('views', $db->fetchRow($db->select()->from('table.contents')))) {
  9. $db->query('ALTER TABLE `'.$db->getPrefix().'contents` ADD `views`INT(10)DEFAULT0;');
  10. }
  11. $exist = $db->fetchRow($db->select('views')->from('table.contents')->where('cid = ?', $cid))['views'];
  12. if ($archive->is('single')) {
  13. $cookie = Typecho_Cookie::get('contents_views');
  14. $cookie = $cookie ? explode(',', $cookie) : array();
  15. if (!in_array($cid, $cookie)) {
  16. $db->query($db->update('table.contents')
  17. ->rows(array('views' => (int)$exist+1))
  18. ->where('cid = ?', $cid));
  19. $exist = (int)$exist+1;
  20. array_push($cookie, $cid);
  21. $cookie = implode(',', $cookie);
  22. Typecho_Cookie::set('contents_views', $cookie);
  23. }
  24. }
  25. echo $exist == 0 ? '0' : $exist.' ';
  26. }

获取文章的统计代码如下:

  1. functiontheMostViewed($limit=10,$before='<br/>- ( 热度: ',$after=' 度 ) ')
  2. {
  3. $db = Typecho_Db::get();
  4. $options = Typecho_Widget::widget('Widget_Options');
  5. $limit = is_numeric($limit) ? $limit : 5;
  6. $posts = $db->fetchAll($db->select()->from('table.contents')
  7. ->where('type = ?ANDstatus = ?ANDpasswordISNULL', 'post', 'publish')
  8. ->order('views', Typecho_Db::SORT_DESC)
  9. ->limit($limit)
  10. );
  11. if ($posts) {
  12. foreach ($posts as $post) {
  13. $result = Typecho_Widget::widget('Widget_Abstract_Contents')->push($post);
  14. $post_views = number_format($result['views']);
  15. $post_title = htmlspecialchars($result['title']);
  16. $permalink = $result['permalink'];
  17. echo "<li><div class='widget-posts-text'><a class='widget-posts-title' href='$permalink' title='$post_title'>$post_title</a><div class='widget-posts-meta'><i>$post_views°c</i></div></div></li>";
  18. }
  19. } else {
  20. echo "<li>N/A</li>\n";
  21. }

}

这样就可以直接获取了, 可以获取到标题,链接,阅读统计

如果获取图片的话,因为图片是自定义字段,不能直接调出来,写法如下:

  1. //热门访问量文章
  2. functiontheMostViewed($limit=3,$before='<br/>- ( views: ',$after=' times ) ')
  3. {
  4. $db = Typecho_Db::get();
  5. $options = Typecho_Widget::widget('Widget_Options');
  6. $limit = is_numeric($limit) ? $limit : 5;
  7. $posts = $db->fetchAll($db->select()->from('table.contents')
  8. ->where('type = ?ANDstatus = ?ANDpasswordISNULL', 'post', 'publish')
  9. ->order('views', Typecho_Db::SORT_DESC)
  10. ->limit($limit)
  11. );
  12. if ($posts) {
  13. foreach ($posts as $post) {
  14. $result = Typecho_Widget::widget('Widget_Abstract_Contents')->push($post);
  15. $post_views = number_format($result['views']);
  16. $post_title = htmlspecialchars($result['title']);
  17. $permalink = $result['permalink'];
  18. $created = date('m-d', $result['created']);
  19. $img = $db->fetchAll($db->select()->from('table.fields')->where('name = ?ANDcid = ?','img',$result['cid']));
  20. if(count($img) !=0){
  21. //();
  22. $img=$img['0']['str_value'];
  23. if($img){}
  24. else{
  25. $img="/usr/themes/spimes/images/thumbs/other_thumbnail.png";
  26. }
  27. }
  28. //();
  29. //(){
  30. //=;
  31. // }
  32. echo "<div class='py-2'><div class='list-itemlist-overlay-content'><div class='media media-2x1'><a class='media-content' href='$permalink' style='background-image:url(".$img.");'><span class='overlay'></span></a></div><div class='list-content'><div class='list-body'><a href='$permalink' class='list-title h-2x'>$post_title</a></div><div class='list-footer'><div class='text-muted text-xs'>$post_views阅读 ,<time class='d-inline-block'>$created</time></div></div></div></div></div>";
  33. }
  34. } else {
  35. echo "<li>N/A</li>\n";
  36. }
  37. }

前端调用代码:

  1. <?php theMostViewed(); ?>
本文来自投稿,不代表本站立场,如若转载,请注明出处:https://typecho.firshare.cn/archives/1233.html
免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。避免网络欺诈,本站不倡导任何交易行为。如您私自与本站转载自公开互联网中的资讯内容中提及到的个人或平台产生交易,则需自行承担后果。本站在注明来源的前提下推荐原文至此,仅作为优良公众、公开信息分享阅读,不进行商业发布、发表及从事营利性活动。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。
-- 展开阅读全文 --
pycharm基本安装和使用方法
« 上一篇 11-18
JetBrains 推出编程字体 Mono:开源、免费、可商用
下一篇 » 11-22