哆麦CMS文章循环调用标签教程

2025年07月08日8

文章调用是指在页面主循环之外的地方按要求调用指定数量的文章,例如在侧边栏或文章下方随着展示文章。Domai CMS可以通过两个常用的标签来进行文章调用,get_posts函数或DM_Query类,本文重点介绍如果使用它们获取文章列表。

使用get_posts方法

get_posts接收一个数组参数,返回文章对象数组,所有可接受的参数如下:

'numberposts' => 5, //调用的文章数量

'number' => 5, //调用的文章数量,number的优先级更高

'category' => 0,        //调用的栏目ID

'category__in' => array(), //包含哪些栏目

'post_type' => 'post', //调用的post类型,默认为文章,支持post, page, topic

'post_status' => 'publish', //调用的post状态

'orderby' => 'post_date', //列表排序项

'order' => 'DESC', //列表排序规则

'include' => array(), //要包含的文章ID

'exclude' => array(), //排除的文章ID

 'meta_key' => '', //包含的meta键名

'meta_value' =>'', //包含的meta键值


1.获取栏目id为2的文章,显示6默认时间排序

<?php
$posts = get_posts(array('category'=>2, 'number'=>6));
foreach($posts as $post){
?>
<div class="item">
  <a class="figure" href="<?php echo $post->get_permalink();?>"><img src="<?php echo $post->post_thumbnail;?>" width="400" height="300" alt="<?php echo $post->post_subtitle;?>" loading="lazy"/></a>
  <div class="content">
    <h3 class="caption-ns"><a href="<?php echo $post->get_permalink();?>"><?php echo $post->post_subtitle;?></a></h3>
    <p class="describe text-row-6"><?php echo dm_substr($post->post_excerpt, 0, 710)?></p>
    <a class="more" role="button" href="<?php echo $post->get_permalink();?>">Learn More</a> </div>
</div>
<?php } ?>

2.获取多个栏目ID,如1,2,3;显示6条,默认时间排序

$posts = get_posts(array('category__in'=>array(1,2,3),'number'=>6));

3.自定义排列顺序,自定义字段post_order排序因子,根据数字大小排序

$posts = get_posts(array('category'=>9, 'number'=>6, 'data_key'=>'order', 'orderby'=>'post_order'));

4.显示设置为推荐的文章,自定义字段post_recommend,设为推荐的显示,推荐值为1,默认时间排序

$posts = get_posts(array('category__in'=>array(2,3,4,5,6,7), 'data_key'=>'recommend', 'data_value'=>'1', 'number'=>6));

5.根据浏览量大小排序

$posts = get_posts(array('category__in'=>array(1,2,3), 'meta_key'=>'views', 'orderby'=>'meta_value_num', 'number'=>6));

6.获取栏目id为1的文章显示6随机排序的文章

<?php
$posts = get_posts(array('number'=>6,'category'=>1,'orderby'=rand));
foreach($posts as $post){
sprintf('<li><a href="%s" title="%s">%s</a></li>', $post->get_permalink(), $post->title, $post->subtitle);
}
?

上述函数的参数也可以写为'number=6&category=1&orderby=rand'这样的字符串。

使用DM_Query方法

DM_Query是系统查询类,用来查询文章,并把文章绑定到全局对象上,以便于更好的调用,用法为:

<?php
$posts = new DM_Query($args);
while($posts->have_posts()){
    $posts->the_post();
    //列表展示代码
}
dm_reset_postdata();
?>

和get_posts不同的是,DM_Query会把查询到的数据绑定到全局对象上,这意味着可以在列表展示代码里调用所有文章调用标签。

DM_Query接受的参数$args,为数组,常见参数如下:

cat, 栏目ID

category_name, 栏目别名

category__in, 多个栏目的栏目ID,栏目名或栏目slug

tag, 标签别名

tag_id, 标签id

p, 文章id

name, 文章slug

title, 文章标题

page_id, 页面id

pagename, 页面slug

topic_id, 专题id

topic_name, 专题slug

post__in, 一个包含文章ID的数组,在这些ID中查找文章

post__not_in, 一个包含ID的数组,排序这些ID的的文章

post_type, 文章类型 post, page, topic,默认为post

post_status, 文章状态,publish, pending,默认为publish

posts_per_page, 每页调用多少文章

has_thumbnail, 调用有缩略图的文章

nopagination, 不分页

paged, 显示第几页

offset, 偏移数量

s, 搜索文章


order,排序规则

orderby, 排序项目


no_found_rows, 设置为true时,可以帮助提高查询速度。

点赞0

喜欢这篇文章?打赏一下作者吧

  • 支付宝

    支付宝二维码

  • 微信

    微信二维码

你觉得文章内容怎么样

您的评论会在审核后被公开。

8 人参与,0 条评论

TOP