phpcms V9调用多个模型中的最新内容的解决方法

简介:

很多时候,希望调用多个模型下的最新内容,但是因为V9的模型使用分表储存,使用GET来IN catid却要连表查询十分麻烦,所以使用下面的办法即可搞定:

第一步:

phpcms\libs\functions\extention.func.php

里面增加

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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

第二步:

调用的方式为:

1
2
3
4
5
<?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,多个模型用,分开


本文转自 gutaotao1989 51CTO博客,原文链接:http://blog.51cto.com/taoyouth/1609769


相关文章
利用OllyDbg对程序内容进行修改实验
利用OllyDbg对程序内容进行修改实验
|
9月前
|
人工智能 Python
【Python实用技能】建议收藏:自动化实现网页内容转PDF并保存的方法探索(含代码,亲测可用)
【Python实用技能】建议收藏:自动化实现网页内容转PDF并保存的方法探索(含代码,亲测可用)
299 0
|
9月前
百度搜索:蓝易云【ModStart安装环境检测提示缺少 xxx 扩展解决方法。】
如果以上方法仍未解决问题,建议参考ModStart的官方文档、社区论坛或联系技术支持,寻求进一步的帮助和指导。不同的应用和环境可能有不同的解决方法,确保按照官方指南和文档的建议进行操作。
56 0
jira学习案例39-加载中和错误的处理
jira学习案例39-加载中和错误的处理
118 0
jira学习案例39-加载中和错误的处理
|
SQL 数据库 数据库管理
织梦DEDECMS系统模型不允许删除的解决方法
织梦一个非常好用的原因就在于二次开发非常简单,我们可以任意修改新建内容模型,来达到我们的建站要求,但是我们发现织梦的系统模型是不能删除的。
|
存储 JSON 前端开发
只需百来行代码,为你的Web页面增加本地文件操作能力,确定不试试吗?
笔者开源了一个`Web`思维导图[mind-map](https://github.com/wanglin2/mind-map),数据默认是存储在`localstorage`里,如果想保存到本地文件,需要使用导出功能,下次打开再使用导入功能,编辑完如果又想保存到文件,那么又需要从重新导出覆盖原来的文件,不得不说,可以但不优雅,所以最近增加了直接编辑本地文件的能力,体验了一下,还是不错的,并且就是调调`API`的事情,很简单,何乐而不为。
252 0
|
SQL 安全 前端开发
百度快照被改成博彩内容的解决办法
那如何确定网站是否被快照劫持?SINE安全老于给大家详细的介绍一下,首先可以打开百度站长工具,看下近期的收录是否异常,像收录突然猛增,百度的蜘蛛抓取次数是否多了很多,再一个看下site:www.***.com自己的网站,看最近一个月的收录,是否收录大量的世界杯体育,菠菜、QP等恶意内容的百度快照。再一个快照劫持的特征是,直接访问网站是不会出现跳转,从百度点击进入网站,会直接跳转到违规网站上去。我们sinesafe以实际的客户案例给大家看下,像下面这种收录内容,基本上就是网站快照被劫持了,也可以说是网站被黑客攻击了。
253 0
百度快照被改成博彩内容的解决办法
|
开发者 智能硬件
我们帮你测试了 Google Home,它会是你想要的完美助手吗?
Google Home 是谷歌在 2016 年 I/O 开发者大会上推出的一款智能硬件产品。时隔一年,Google Home 新增了 5 个特性:全新的通知功能、拨打电话、增加日历和提醒、电视操作界面、支持更多流媒体服务。
486 0
我们帮你测试了 Google Home,它会是你想要的完美助手吗?
Redmine系统通过bug号解析页面内容及下载附件
Redmine系统通过bug号解析页面内容及下载附件
131 0