用户信息
帖子内容
1 楼
weeya
钻石会员
积分 1164
注册 2010-10-28
     
3.016版本添加文章点击量功能
本来不想做这个点击量的教程,既然有人问到了,我就放出来吧。

先说明,这个教程以及相关代码是在3.0.1.6版本基础上写的,如果后面的版本,可能有些代码或者路径写法不一样,需要自己参考相关文件代码修改。

此教程分两个部分,1楼是教程,2楼是相关文件的代码。

1、数据库jtbc_news添加n_count字段,类型INT,长度11

2、头部模板引入main.js文件

<script type="text/javascript" src="{$=$global.assetspath}/js/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="{$=$global.assetspath}/js/main.js"></script>
<script type="text/javascript" src="{$=$global.assetspath}/js/jtbc.js"></script>

3、news模块详情页模板修改

  3.1底部添加js代码

  <script type="text/javascript">
function innerCOUNT(strers)
{
  if (strers != "$error$") get_id("count").innerHTML = strers;
};
igets("../universal/count/?type=action&action=count&genre={$>genre}&id={$id}", innerCOUNT);
</script>
{$=take('.public.footer')}

  3.2需要显示点击量的位置添加标签
<span id="count">0</span>

2018-11-20 22:27:51 东莞网站建设 http://www.yiisu.com/
2 楼
weeya
钻石会员
积分 1164
注册 2010-10-28
     
回复: 3.016版本添加文章点击量功能
1、增加universal/count/index.php文件,代码如下

<?php
header('content-type: text/html; charset=utf-8');
function p($p){return is_file($p)? $p: p('../' . $p);}
require_once(p('common/incfiles/jtbc.php'));
echo require_inc_and_get_result(__FILE__);
?>


2、增加universal/count/common/incfiles/index.inc.php文件,代码如下

<?php
namespace jtbc;
class ui extends page {
  public static function moduleActionCount()
  {
    $id = base::getNum(request::getHTTPPara('id', 'get'), 0);
    $genre = request::getHTTPPara('genre', 'get');
    $db = self::db();
    if (!is_null($db))
    {
      $table = tpl::take('global.' . $genre . ':config.db_table', 'cfg');
      $prefix = tpl::take('global.' . $genre . ':config.db_prefix', 'cfg');
      $sqlstr = "select " . $prefix . "count from " . $table . " where " . $prefix . "delete=0 and " . $prefix . "publish=1 and " . $prefix . "id=" . $id;
      $rq = $db -> query($sqlstr);
      $rs = $rq -> fetch();
      if (is_array($rs))
      {
        $sqlstr = "update " . $table . " set " . $prefix . "count=" . $prefix . "count +1 where " . $prefix . "id=" . $id;
        $rq = $db -> query($sqlstr);
        echo $rs[0];
      }
    }
  }
}
?>



3、增加common/assets/js/main.js文件,代码如下

var agt = navigator.userAgent.toLowerCase();
var isie = (agt.indexOf("msie")!= -1 && document.all);
var client_test;

if (document.getElementById)
{ client_test = "a"; }
else if (document.all)
{ client_test = "b"; }
else if (document.layers)
{ client_test = "c"; }

var request = new function()
{
  var iname,ivalue,icount;
  var urlstr = location.href;
  var inum = urlstr.indexOf("?")
  urlstr = urlstr.substr(inum + 1);
  var arrtmp = urlstr.split("&");
  for(icount = 0; icount < arrtmp.length; icount++)
  {
    inum = arrtmp[icount].indexOf("=");
    if(inum > 0)
    {
      iname = arrtmp[icount].substring(0, inum);
      ivalue = arrtmp[icount].substr(inum + 1);
      this[iname] = ivalue;
    }
  }
}

var xmlhttp = function()
{
  var xmlObj = null;
  if(window.XMLHttpRequest){
      xmlObj = new XMLHttpRequest();
  } else if(window.ActiveXObject){
      xmlObj = new ActiveXObject("Microsoft.XMLHTTP");
  } else {
      return;
  }
  return xmlObj;
}

function click_return(strt)
{
  var tmpvar = strt;
  var tmptrue = window.confirm(tmpvar);
  if (tmptrue) { return true; }
  return false;
}

function get_id(strname)
{
  switch (client_test)
  {
    case "a":
      return document.getElementById(strname);
      break;
    case "b":
      return document.layers[strname];
      break;
    default :
      return document.all(strname);
      break;
  }
}

function get_num(strers)
{
  if (isNaN(strers) || strers == "")
  {
    return 0;
  }
  else
  {
    return parseInt(strers);
  }
}

function get_sel_id()
{
  var frm = eval("document.sel_form");
  if (frm.sel_id.length)
  {
    var sel_ids = '';
    var slength = frm.sel_id.length;
    for (var i = 0; i < slength; i++)
    {
      if (frm.sel_id[i].checked)
      {
        if (sel_ids == '')
        {
          sel_ids = frm.sel_id[i].value;
        }
        else
        {
          sel_ids = sel_ids + ',' + frm.sel_id[i].value;
        }
      }
    }
  }
  else
  {
    if (frm.sel_id.value)
    {
      if (frm.sel_id.checked) sel_ids = frm.sel_id.value;
    }
  }
  document.sel_form.sel_ids.value = sel_ids;
}

function get_selects_list(strid)
{
  var tobj = strid;
  if (tobj)
  {
    var ti,tstr;
    tstr = "";
    for (ti = 0; ti < tobj.options.length; ti ++)
    {
      if (tstr == "")
      {tstr = tobj.options[ti].value;}
      else
      {tstr += "|" + tobj.options[ti].value;}
    }
    return tstr;
  }
}

function iget(strers)
{
  var nxmlhttp = new xmlhttp();
  nxmlhttp.open("get", strers, false);
  nxmlhttp.send(null);
  return nxmlhttp.responseText;
}

function igets(strers, callback)
{
  var nxmlhttp = new xmlhttp();
  nxmlhttp.onreadystatechange = function()
  {
    if (nxmlhttp.readyState == 4)
    {
      if (nxmlhttp.status == 200 || nxmlhttp.status == 304)
      {
        callback(nxmlhttp.responseText);
      }
      else
      {
        callback("$error$")
      }
    }
  }
  nxmlhttp.open("get", strers, true);
  nxmlhttp.send(null);
}

function igets_xml(strers, callback)
{
  var nxmlhttp = new xmlhttp();
  nxmlhttp.onreadystatechange = function()
  {
    if (nxmlhttp.readyState == 4)
    {
      if (nxmlhttp.status == 200 || nxmlhttp.status == 304)
      {
        callback(nxmlhttp.responseXML);
      }
      else
      {
        callback("$error$")
      }
    }
  }
  nxmlhttp.open("get", strers, true);
  nxmlhttp.send(null);
}

function itextner(strid, strers)
{
  var tobj;
  tobj = get_id(strid);
  if (isie)
  {
    tobj.focus();
    document.selection.createRange().text = strers;
  }
  else
  {
    tobj.focus();
    tobj.value += strers;
  }
}

function iresize(stro, stra, strv)
{
  switch(stra)
  {
    case 1:
      if (stro.width > strv) stro.width = strv;
      break;
    case 2:
      if (stro.height > strv) stro.height = strv;
      break;
    default:
      if (stro.width > strv) stro.width = strv;
  }
}

function location_href(strers)
{
  var tburl = strers;
  var tbbase = get_id("base");
  if (tbbase)
  {
    var tbhref = get_id("base").href;
    if (tbhref) tburl = tbhref + tburl;
  }
  location.href = tburl;
}

function nhrefstate()
{
  var nhref = request["hspan"];
  if(!nhref == "")
  {
    var nhrefobj = get_id(nhref);
    if (nhrefobj)
    {
      nhrefobj.className = "red";
    }
  }
}

function nll(strers)
{}

function pop_win(strurl, strname, strwidth, strheight, strscroll)
{
  var nwidth = strwidth;
  var nheight = strheight;
  var leftsize = 0;
  var topsize = 0;
  if (nwidth == 0 || nheight == 0)
  {
    nwidth = screen.width - 8;
    nheight = screen.height - 55;
  }
  else
  {
    leftsize = (screen.width) ? (screen.width - nwidth)/2 : 0;
    topsize = (screen.height) ? (screen.height - nheight)/2 : 0;
  }
  window.open(strurl, strname, 'width=' + nwidth + ',height=' + nheight + ',left=' + leftsize + ',top=' + topsize + ',toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=' + strscroll + ',resizable=no' );
}

function switch_display(strers)
{
  var tobj = get_id(strers);
  if(tobj.style.display == 'none')
  {
    tobj.style.display = '';
  }
    else
  {
    tobj.style.display = 'none';
  }
}

function select_all()
{
  var frm = eval("document.sel_form");
  var slength = 0;
  if (frm.sel_id == null) { return false; }
  var sall = frm.sel_all.checked;
  if (frm.sel_id.length)
  {
    slength = frm.sel_id.length;
    for (var i = 0; i < slength; i++) { frm.sel_id[i].checked = sall; }
  }
  else { frm.sel_id.checked = sall; }
}
function insert_images2(strid, strurl, strntype, strtype, strbase)
{
  var tstrtype;
  if (strtype == -1)
  {tstrtype = strntype;}
  else
  {
    var thtype = request["htype"];
    if (thtype == undefined)
    {tstrtype = strtype;}
    else
    {tstrtype = get_num(thtype);}
  }
  switch (tstrtype)
  {
    case 0:
      editor_insert(strid, "<img src=\"" + strbase + "/" + strurl + "\" border=\"0\">");
      break;
    case 1:
      itextner(strid, "[img]" + strurl + "[/img]");
      break;
    case 3:
      itextner(strid,  "<img src=\"" + strurl + "\" border=\"0\">");
      break;
  }
}
2018-11-20 22:29:07 东莞网站建设 http://www.yiisu.com/
3 楼
weeya
钻石会员
积分 1164
注册 2010-10-28
     
回复: 3.016版本添加文章点击量功能
这个代码目前还是有点BUG,第一次点击文章也是0,望高手路过改善一下。
2018-11-20 22:33:15 东莞网站建设 http://www.yiisu.com/
4 楼
jetiben
管理人员
积分 8006
注册 2006-06-28
     
回复: 3.016版本添加文章点击量功能
拷贝大侠,给你一个简便方法,detail 的 php 里面合适位置加上以下语句即可:

$dal -> update(array('count' => (base::getNum($dal -> val('count')) + 1)));
2018-11-21 09:03:34 十年磨一剑,还没磨完那就再来十年!
5 楼
qihui
注册会员
积分 236
注册 2011-11-05
     
回复: 3.016版本添加文章点击量功能
jetiben 发表于 2018-11-21 09:03:34 拷贝大侠,给你一个简便方法,detail 的 php 里面合适位置加上以下语句即可:

$dal -> update(array('count' => (base::getNum($dal -> val('count')) + 1)));
果然出手不凡,老大就是老大
2018-11-21 19:41:50 QQ:470271565 / 微信:w470271565
6 楼
shadoweb
钻石会员
积分 982
注册 2014-11-27
     
回复: 3.016版本添加文章点击量功能
JT终于看不下去了
2018-11-22 12:06:56 JTBC教程网 https://jtbc.com.cn/ 客服QQ858512104
7 楼
tuotuo
钻石会员
积分 1420
注册 2008-03-21
     
回复: 3.016版本添加文章点击量功能

JT终于看不下去了
JT说一个访问计数功能 被多多吧1.0的代码整个的翻了出来 真是心疼

2018-11-23 10:35:48 乐山来易科技 WWW.0833S.COM
8 楼
大象
钻石会员
积分 342
注册 2008-11-13
     
回复: 3.016版本添加文章点击量功能
duo duo  ni zui bang!
2018-11-26 12:29:33 认识,了解,相知,相爱,jtbc3.0 华丽蜕变!
9 楼
lynnpbl
钻石会员
积分 102
注册 2008-07-30
     
回复: 3.016版本添加文章点击量功能
多多好样的
2018-11-27 15:05:47 Benny