获取某个栏目下的内容
相比标签的参数繁琐,fun函数还是非常适用数据的获取,缺点是需要开发者了解php自己获取所需数据,优点是垂直获取直接需要的特有数据。
下面代码可以获取某个栏目下独立的数据,不需要考虑子栏目和父栏目的冗余内容,把代码保存名为Takedata的php文件放入fun目录application\common\fun\Takedata.php调用即可:
<?php
namespace app\common\fun;
use think\Db;
class Takedata
{
/**
* @param int $fid
* @param string $module
* @return false|\PDOStatement|string|\think\Collection
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
*/
public static function getSortData($fid=0,$module='cms',$detail = false){
if($fid==0) return '无此栏目';
$fiddb = Db::name($module.'_content')->where('fid',$fid)->select();
if(!$fiddb) return '此栏目无内容';
if($detail == false){
return $fiddb;
}else{
foreach($fiddb AS $value){
$info[] = fun("Content@info",$value['id'],$module);
}
return $info;
}
}
}
参数一:fid 栏目id;
参数二:模块名称 比如cms
参数三:是否获取详细数据 默认不获取false,需要详细数据设置true
模板案列
<!-- 简单版,只有标题链接数据-->
<div>
{volist name=":fun('Takedata@getSortData',10)" id="vo"}
<p><a href="{:urls('cms/content/show',['id'=>$vo.id])}">{$vo.title}</a></p>
{/volist}
</div>
<!-- 详细版,所有字段数据-->
<div>
{volist name=":fun('Takedata@getSortData',10,'cms',true)" id="vo"}
<p><a href="{:urls('cms/content/show',['id'=>$vo.id])}">{$vo.title}</a></p>
<p>{$vo.xxx}</p>
{/volist}
</div>
未登录,登录后评论