这个教程以及相关代码是在3.0.1.6版本基础上写的,如果后面的版本,可能有些代码或者路径写法不一样,需要自己参考相关文件代码修改。
此教程分两个部分,第一部分是教程,第二部分是相关文件的代码。
第一部分:
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>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第二部分
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;
}
}
总共增加3个文件。此教程完。