文章调用是指在页面主循环之外的地方按要求调用指定数量的文章,例如在侧边栏或文章下方随着展示文章。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键值
如,获取栏目ID为1,5条随机排序的文章,并显示连接,代码可以如下:
<?php $posts = get_posts(array('number'=>5,'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=5&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时,可以帮助提高查询速度。
列入,查询ID为1,5条随机排序的文章,并展示出来
<?php $posts = new DM_Query(array('cat'=>1, 'orderby'=>'rand', 'posts_per_page'=>5)); while($posts->have_posts()){ $posts->the_post(); ?> <li><a href="<?php the_permalink();?>" title="<?php the_title()?>"><?php the_subtitle();?></a></li> <?php } dm_reset_postdata(); ?>
上述调用的参数也可以写为"cat=1&orderby=rand&posts_per_page=5"。
评论列表