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


相关文章
|
10月前
|
PHP
PHP实现自制随机图片API- 调用文件夹和引用网络图片
PHP实现随机图片API- 调用文件夹和引用网络图片
113 0
|
文件存储
Yii2.0框架提供了内置的文件访问组件,可以通过配置只允许访问指定的目录,防止非法文件的包含。这个如何使用?
Yii2.0框架提供了内置的文件访问组件,可以通过配置只允许访问指定的目录,防止非法文件的包含。这个如何使用?
115 0
jira学习案例39-加载中和错误的处理
jira学习案例39-加载中和错误的处理
64 0
jira学习案例39-加载中和错误的处理
DEDECMS织梦更改include目录重命名后,后台属性编辑无法加载的解决方法
织梦dedecms是新手站长使用得比较多的一个建站开源程序,正因如此,也是被被入侵挂马比较多的程序。下面就来跟大家说一下重新命名dedecms的include文件夹后后台属性编辑无法加载的问题
DEDECMS织梦更改include目录重命名后,后台属性编辑无法加载的解决方法
|
PHP
laravel的错误提示页面优化(封装到error文件夹)
laravel的错误提示页面优化(封装到error文件夹)
135 0
laravel的错误提示页面优化(封装到error文件夹)
一分钟学会使用ApiPost中的全局参数和目录参数
一分钟学会使用ApiPost中的全局参数和目录参数
一分钟学会使用ApiPost中的全局参数和目录参数
|
前端开发 PHP
如何解决Joomla提示消息:“找不到AJAX加载错误”
尝试更新Joomla网站时您是否看到此消息?“AJAX加载错误:找不到” 。在本教程中,我将向您展示一些消除该错误并平稳运行Joomla更新的选项。
如何解决Joomla提示消息:“找不到AJAX加载错误”
|
PHP
YII2 配置gii之后页面404 解决 2点=1 要加载model,2 要设置环境为dev,如下截图 3次要---有时候可能需要 执行composer dump-autoload 重新加载类
YII2 配置gii之后页面404  解决 2点=1 要加载model,2 要设置环境为dev,如下截图 解决成功     我的是这么解决的
1139 0