phpcms v9外链文章获取点击量

默认phpcms v9的外链文章因为直接跳转(不进入详情页模板),导致外链文章的点击量一直是0,而我们有时需要按点击量排行或者排序的时候,就有问题了。

这里我们借助系统自带的点击量接口api来获取:
一、前台JS部分添加:

//点击外链执行文章点击量增加
$(".out_link").click(function(){
    $.get('api.php?op=count', {'id':$(this).attr("dataid"),'modelid':$(this).attr("mid")}, function (data) {
        console.log("数据: " + data);
  });
});

二、前台模板a链接标签中添加{if $r["islink"]} class="out_link" mid="{$CATEGORYS[$r['catid']]['modelid']}" dataid="{$r["id"]}"{/if}

{pc:content action="lists" catid="$catid" num="20" order="listorder DESC,inputtime DESC" page="$page"}
    <ul class="newslist">
{loop $data $r}
        <li class="clearfix">
{if $r['thumb']}
            <a class="thumbnail-link{if $r["islink"]} out_link{/if}" href="{$r['url']}"{if $r["islink"]} mid="{$CATEGORYS[$r['catid']]['modelid']}" dataid="{$r["id"]}"{/if} target="_blank">
                <div class="of"><img width="300" height="180" src="{$r['thumb']}" alt="{$r['title']}"></div>
            </a>
{/if}
            <div class="entry-header">
                <h2 class="entry-title">
                    <a href="{$r['url']}" title="{$r['title']}"{if $r["islink"]} class="out_link" mid="{$CATEGORYS[$r['catid']]['modelid']}" dataid="{$r["id"]}"{/if} target="_blank">{$r['title']}</a></h2>
                <div class="entry-meta"><span class="iconfont">&#xe604;</span>{date('Y-m-d',$r['inputtime'])}</div>
            </div>
            <div class="entry-summary">{$r['description']}</div>
        </li>
{/loop}
    </ul>
    <div id="pages" class="flex_c">{$pages}</div>
{/pc}

三、给推荐位中的a链接标签也添加{if $r["islink"]} class="out_link" mid="{$CATEGORYS[$r['catid']]['modelid']}" dataid="{$r["id"]}"{/if}
注:由于推荐位中无法判断链接是否是外链,所以这里我们改造下系统的推荐位方法函数(基于之前《phpcms v9未审核推荐信息出现在推荐列表中【BUG修复】》对该方法函数的改造),如下所示增加$rlink = $this->db->get_one(array('id'=>$info['id']), '`islink`');
$array[$key]['islink'] = $rlink['islink'];

文件位置:phpcms/modules/content/classes/content_tag.class.php

/**
	 * 推荐位
	 * WY EDIT AT 2024-01-09 已修复未审核信息出现在推荐列表中的问题
	 * @param $data
	 */
	public function position($data) {
		$sql = '';
		$array = array();
		$posid = intval($data['posid']);
$position = $this->position->get_one(array('posid'=>$posid));
$this->db->set_model($position['modelid']);
$this->tablename = $this->db->table_name;
$result = $this->db->select("status=99 AND posids=1", '*', '', '', '');
foreach ($result as $r) {
	$ids_array[] = $r['id'];
}
$ids = implode(',', $ids_array);
if($ids) {
	$sql = "id IN ($ids) AND ";
} else {
	$sql = '1<>1 AND';
}
		$order = $data['order'];
		$thumb = (empty($data['thumb']) || intval($data['thumb']) == 0) ? 0 : 1;
		$siteid = $GLOBALS['siteid'] ? intval($GLOBALS['siteid']) : 1;
		$catid = (empty($data['catid']) || $data['catid'] == 0) ? '' : intval($data['catid']);
		if($catid) {
			$siteids = getcache('category_content','commons');
			if(!$siteids[$catid]) return false;
			$siteid = $siteids[$catid];
			$this->category = getcache('category_content_'.$siteid,'commons');
		}
		if($catid && $this->category[$catid]['child']) {
			$catids_str = $this->category[$catid]['arrchildid'];
			$pos = strpos($catids_str,',')+1;
			$catids_str = substr($catids_str, $pos);
			$sql .= "`catid` IN ($catids_str) AND ";
		}  elseif($catid && !$this->category[$catid]['child']) {
			$sql .= "`catid` = '$catid' AND ";
		}
		if($thumb) $sql .= "`thumb` = '1' AND ";
		if(isset($data['where'])) $sql .= $data['where'].' AND ';
		if(isset($data['expiration']) && $data['expiration']==1) $sql .= '(`expiration` >= \''.SYS_TIME.'\' OR `expiration` = \'0\' ) AND ';
		$sql .= "`posid` = '$posid' AND `siteid` = '".$siteid."'";
		$pos_arr = $this->position_data->select($sql, '*', $data['limit'],$order);
		if(!empty($pos_arr)) {
			foreach ($pos_arr as $info) {
				$key = $info['catid'].'-'.$info['id'];
				$array[$key] = string2array($info['data']);
				$array[$key]['url'] = go($info['catid'],$info['id']);
				$rlink = $this->db->get_one(array('id'=>$info['id']), '`islink`');//给推荐位添加是否外链虚拟字段
				$array[$key]['islink'] = $rlink['islink'];
				$array[$key]['id'] = $info['id'];
				$array[$key]['catid'] = $info['catid'];
				$array[$key]['listorder'] = $info['listorder'];
			}
		}
		return $array;
	}
  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大海哪蓝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值