phpcms v9全站最新文章调用几个方法

修改 phpcms/modules/content/classes/content_tag.class.php  在最后面的 }

上面添加以下代码:

 代码如下 复制代码
public function newcontent($data){
  $num = intval($data['limit']) ? intval($data['limit']) : '20';
  // 设置排序
  switch($data['order']){
  case '1':
  $order = ' `id` ASC ';
  break;
  case '2':
  $order = ' `id` DESC ';
  break;
  case '3':
  $order = ' `inputtime` ASC ';
  break;
  case '4':
  $order = ' `inputtime` DESC ';
  break;
  case '5':
  $order = ' `updatetime` ASC ';
  break;
  case '6':
  $order = ' `updatetime` DESC ';
  break;
  default:
  $order = ' `id` DESC ';
  }
  if($data['catid']){
  $catids = explode(',', $data['catid']);
  foreach($catids as $catid){
  $catid = intval($catid);
  if(empty($catid))continue;
  $this->set_modelid($catid);
  $where = $this->category[$catid]['child'] ? ' `catid` IN ('.$this->category[$catid]['arrchildid'].')' : " `catid` = $catid";
  $datas = $this->db->select($where, '*', $num, $order);
  $data[$catid]['data'] = $datas;
  // 记录本次的文章数
  $data['num'][] = count($datas);
  $model_num++;
  }
  }else{
  $models = getcache('model', 'commons');
  foreach($models as $model){
  $this->db->set_model($model['modelid']);
  $datas = $this->db->select('', '*', $num, $order);
  $data[$model['modelid']]['data'] = $datas;
  // 记录本次的文章数
  $data['num'][] = count($datas);
  $model_num++;
  }
  }
  if($data){
  // 获取每个模型应该截取的条数
  $num = ceil($num/$model_num);
  // 循环条数记录用于找出条数不满足的数量然后进行平均
  $w_num = $w_num_t = '';
  foreach($data['num'] as $num_t){
  if($num_t < $num){
  $w_num += $num-$num_t;
  $w_num_t++;
  }
  }
  // 判断是否有不满足平均数的 如果有那么就增加平均值
  if($w_num_t){
  $num += ceil($w_num/($model_num-$w_num_t));
  }
  $datas = array();
  foreach($data as $r){
  $r_n = '';
  if(is_array($r['data']))
  foreach($r['data'] as $r_t){
  $datas[] = $r_t;
  if(++$r_n == $num)break;
  }
  }
  return $datas;
  }else{
  return false;
  }
  }

 

然后我们在需要调用全站最新的页面中调用下面的标签:

 代码如下 复制代码
{pc:content action=”newcontent”  num=15}
<ul >
{loop $data $r}<li><span class=”date”>{date(‘m-d’,$r[inputtime])}</span> <a href=”{$r['url']}” target=”_blank”>{str_cut($r[title],57,”)}</a></li>{/loop}
</ul>
{/pc}

这样就可以获取到全站最新的15条数据。默认是调用20条最新,如果不设置。

catid: 可有可无  加了就只调用指定栏目的信息  多个栏目请使用英文半角的 ,间隔

order:排序 参数值:1-7  具体的含义在代码里面很容易看明白 不祥述

num:调用数量  不指定默认调用20条

还有一种方案,代码放置的位置是不一样的。

V9的模型使用分表储存,调用多个模型下的最新内容使用GET来IN catid却要连表查询十分麻烦,所以使用下面的办法即可:

第一步:

phpcms/libs/functions/extention.func.php

里面增加

 代码如下 复制代码
function news($limit="",$modelid="",$where="")
{
  $db=pc_base::load_model('content_model');
  if((strpos($modelid,",")>=0))
  {
   $modelid=explode(",",$modelid);
   $midarr=$dot='';
   foreach($modelid as $mid)
   {
    $midarr=$midarr.$dot.$mid;
    $dot=',';
   }
   $sq="`modelid` IN ({$midarr})";
  }
  else
  {
   $sq="`modelid`={$modelid}";
  }
  $db->table_name='v9_model';
  $models=$db->select($sq,"tablename");
  $sql='';
  $lianhe='';
  foreach($models as $name)
  {
   $sql=$sql.$lianhe."SELECT id,catid,title,url,inputtime FROM v9_{$name['tablename']}";
   $lianhe=' UNION ALL ';
  }
 
  $time=time();
  $sql=$sql." ".$where." order by inputtime desc limit  ".$limit;
 
  $allnews=$db->query($sql);
  while($r = $db->fetch_array($allnews))
  {
   if($keyfield)
   {
    $key = $r[$keyfield];
    $array[$key] = $r;
   }
   else
   {
    $array[] = $r;
   }
  }
  return $array[0];
}

 

以上代码需要注意的是里面表前缀,这里是V9,使用的时候改成你自己的表前缀,默认是V9

第二步:

调用的方式为:

 代码如下 复制代码
<?php $recent=news(“0,8“,”1,12“);?>
{loop $recent $r}
<li><a href=”{$r['url']}” target=”_blank” title=”{$r['title']}”>{str_cut($r[title],54,”)}</a></li>
{/loop}
{/pc}

解释:
红色数字是调用条数,从0开始调用8条
蓝色数字模型ID,不是栏目的ID,多个模型用,分开

时间: 2024-07-31 04:56:42

phpcms v9全站最新文章调用几个方法的相关文章

phpcms中用get调取全站最新文章

在phpcms中调用全站最新文章,好像没有现成的标签可用,可以用以下这个方法直接写sql语句调取:  代码如下 复制代码 {pc:get sql="SELECT * FROM `v95_soft` order by id DESC " num="10"}        {loop $data $r}        <li><a href="{$CATEGORYS[$r['catid']]['url']}" class="

Dedecms频道,列表页,内容页中调用全站最新文章

利用dede建站时经常要调用全站的最新文章,本文讲方法总结如下: 1.如果是在首页调用全站的最新文章,标签如下:  代码如下 复制代码 {dede:arclist row=10} <a href="[field:arcurl/]">[field:title/]</a> {/dede:arclist} 2.如果是在频道页列表页调用全站最新文章,标签如下:  代码如下 复制代码 {dede:arclist typeid='top' row='10'} <a h

如何彻底解决phpcms v9升级后文章发布出现Mysql 1267错误

彻底解决phpcms v9升级后,文章发布出现:MySQL Query : SELECT * FROM `withli_a`.`v9_keyword` WHERE `keyword` = '吼吼' AND `siteid` = '1' LIMIT 1 MySQL Error : Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (gbk_chinese_ci,COERCIBLE) for operation '=' MySQL

dedecms artlist读取全站最新文章

我们先看dedecms 首页模板的调用方法如下  代码如下 复制代码 {dede:arclist  row=6  }       <li><a href="[field:arcurl/]">[field:title/]</a>           </li> {/dede:arclist} 那么如果我们需要在列表页面或者文章页面调用全站的最新文章怎么办了,查了一下手册我们可以使用 type='top'来实现. 实例  代码如下 复制代码

PHPCMS V9中QQ登录网站失败问题解决方法

这个故障的原因是PHPCMS V9的QQ登录功能代码中,使用了file_get_contents函数来获取腾讯的https网址,这类网址是通过ssl加密传输的.虽然,我们可以通过为PHP安装openssl扩展,让file_get_contents函数可以获取到内容,但获取到的内容还是加密的,无法正常的解密. 我的解决思路是自己编写一个通过curl读取数据的方法,替换掉PHPCMS原有的方法,具体如下: 首先,找到phpcmsmodulesmemberclassesqqapi.class.php文

phpcms v9设置何修改seo标题分隔符方法

phpcms v9的标题分隔符默认是" - ",如设置seo标题为"web开发",在网页的标题栏则显示"web开发 - 网志博客",据说," - "分隔符对谷歌搜索引擎比较友好,但百度却更青莱于" _ "分隔符,可能它更符合中国人的使用习惯吧.随着谷哥在中国市场的消退,前不久我看了一篇关于搜索引擎在中国市场所点市场分额的报道,谷哥只占6%,而百度却占到64%!所以站长们要做SEO优化,主其主要目的只能是讨好

动易首页调用最新文章图片向上滚动方法

动易|向上滚动 <DIV id=demo> <div id=demo1>  <IMG SRC=http://www.webjx.com/htmldata/2005-11-10/o.jpg><BR> <IMG src=http://www.webjx.com/htmldata/2005-11-10/1.jpg><BR> </div><div id=demo2></div></div> &l

phpcms v9 内容搜索不完全显示解决方法

这个bug原来是这个程序在开发的时候没有考虑周全.在升级后把原来的搜索功能原有的搜索分词进行了整合和改动导致的.所以当我们使用搜索功能的时候有的就搜不到或者搜索不全.这样就不能从数据库中调出在前台显示出来了. 解决的办法如下: 首先连接 FTP到空间,进入到phpcms/modules/search/index.php文件. 找到以下代码: if (!empty($segment_q)) {    $sql = "`siteid`= '$siteid' AND `typeid` = '$type

Phpcms V9随机文章的调用方法

以下代码只有 order="rand()",其它与正常调用一样.  代码如下 复制代码 {pc:content action="lists" catid="$catid" num="8" order="rand()" return="info"}      <ul class="list lh24 f13">      {loop $info $v}