Phpcms V9.5.4调用最新文章列表和多栏目调用

本文介绍了如何在PHPCMS V9.5.4中调用最新文章列表,包括使用GET标签方式和修改标签代码实现。详细讲述了GET标签调用的代码片段,以及通过修改核心代码实现多栏目文章调用,解决了PHPCMS默认标签只能调用单一主栏目问题。

PHPCMS调用默认表最新文章有一下两种方法:

1. get标签形式调用

2. 修改标签代码实现最新文章调用


下面我们看看具体是实现方法:

第一种方法 用GET标签调用

这种方法不用修改PHPCMS的核心代码,就可以达到模型表的最新数据调用,具体代码片段如下:

{pc:get sql="SELECT * from v9_news where status=99 and catid in(21,22,23,24,25) order by id DESC" start=="7" num="7" return="data"}
{loop $data $r}
<li><a href="{$r[url]}" title="{$r[title]}" target="_blank">{str_cut($r['title'],40)}({date('m-d',$r[inputtime])})</span></a></li>
{/loop}
{/pc}


第二种方法 修改标签代码

PHPCMS的标签默认只能调用单个主栏目下面的子栏目的文章,如果不填写栏目则无法调用数据,填写多个栏目ID只调取首个栏目ID的文章,为什么这么说呢?看看代码就知道原因所在了。

	/**
	 * 列表页标签
	 * @param $data
	 */
	public function lists($data) {
		$catid = intval($data['catid']);
		if(!$this->set_modelid($catid)) return false;
		if(isset($data['where'])) {
			$sql = $data['where'];
		} else {
			$thumb = intval($data['thumb']) ? " AND thumb != ''" : '';
			if($this->category[$catid]['child']) {
				$catids_str = $this->category[$catid]['arrchildid'];
				$pos = strpos($catids_str,',')+1;
				$catids_str = substr($catids_str, $pos);
				$sql = "status=99 AND catid IN ($catids_str)".$thumb;
			} else {
				$sql = "status=99 AND catid='$catid'".$thumb;
			}
		}
		$order = $data['order'];

		$return = $this->db->select($sql, '*', $data['limit'], $order, '', 'id');
						
		//调用副表的数据
		if (isset($data['moreinfo']) && intval($data['moreinfo']) == 1) {
			$ids = array();
			foreach ($return as $v) {
				if (isset($v['id']) && !empty($v['id'])) {
					$ids[] = $v['id'];
				} else {
					continue;
				}
			}
			if (!empty($ids)) {
				$this->db->table_name = $this->db->table_name.'_data';
				$ids = implode('\',\'', $ids);
				$r = $this->db->select("`id` IN ('$ids')", '*', '', '', '', 'id');
				if (!empty($r)) {
					foreach ($r as $k=>$v) {
						if (isset($return[$k])) $return[$k] = array_merge($v, $return[$k]);
					}
				}
			}
		}
		return $return;
	}

修改为添加所以栏目ID来查询全表数据。这样和GET方法几乎没什么区别,只是标签形式不同而已

	/**
	 * 列表页标签
	 * @param $data
	 */
	public function lists($data) {
		$catid = $data['catid'];
		$cid = intval( $catid );
		if(!$this->set_modelid($cid)) return false;
		if(isset($data['where'])) {
			$sql = $data['where'];
		} else {
			$thumb = intval($data['thumb']) ? " AND thumb != ''" : '';
			if($cat_array=explode(',',$catid) ){  
				$catids_str = $catid;  
				foreach($cat_array as $k => $v){  
					if($this->category[$v]['child']) {  
						$catids_str .= ','.$this->category[$v]['arrchildid'];  
					}  
				}  
				$sql = "status=99 AND catid IN ($catids_str)".$thumb;  
			}else {
				$sql = "status=99 AND catid='$catid'".$thumb;
			}
		}
		$order = $data['order'];

		$return = $this->db->select($sql, '*', $data['limit'], $order, '', 'id');
						
		//调用副表的数据
		if (isset($data['moreinfo']) && intval($data['moreinfo']) == 1) {
			$ids = array();
			foreach ($return as $v) {
				if (isset($v['id']) && !empty($v['id'])) {
					$ids[] = $v['id'];
				} else {
					continue;
				}
			}
			if (!empty($ids)) {
				$this->db->table_name = $this->db->table_name.'_data';
				$ids = implode('\',\'', $ids);
				$r = $this->db->select("`id` IN ('$ids')", '*', '', '', '', 'id');
				if (!empty($r)) {
					foreach ($r as $k=>$v) {
						if (isset($return[$k])) $return[$k] = array_merge($v, $return[$k]);
					}
				}
			}
		}
		return $return;
	}

标签调用形式,默认第一个栏目ID为模型表:

{pc:content action="lists" catid="1,2,3,4,5" order="listorder DESC,inputtime DESC,id DESC" moreinfo="1"  start="7" num="7"}
 {loop $data $k $v} 
  <li><a href="{$v[url]}" title="{$v[title]}" target="_blank"{title_style($v[style])}>{str_cut($v[title], 100)}</a></li>
 {/loop}
{/pc}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值