如上图,就是基于这个功能,实现的轮播图,填写了文章cid
,获取了文章标题,描述,缩略图和链接。
其实这个功能,应该有很多人发过,不过大多都是需要写查询函数的,我呢因为懒,所以经过试验发现了这种不用自己写函数的写法。
代码
如下代码,其中cid=1
就是获取cid
为1的文章信息,可以改成你需要获取的文章cid
。
<?php $this->widget('Widget_Archive@indexxiu', 'pageSize=1&type=post', 'cid=1')->to($ji); ?>
标题:<?php $ji->title(); ?>
链接:<?php $ji->permalink(); ?>
描述:<?php $ji->description(); ?>
...
获取多个
上边的截图,就是获取了三个文章,来实现的,代码如下,其中166,163,160
就是对应的三个文章的cid
<?php
$lunbo="166,163,160";
$hang = explode(",", $lunbo);
$n=count($hang);
$html="";
for($i=0;$i<$n;$i++){
$this->widget('Widget_Archive@lunbo'.$i, 'pageSize=1&type=post', 'cid='.$hang[$i])->to($ji);
if($ji->fields->thumb){$img=$ji->fields->thumb;}
if($i==0){$no=" sx_no";}else{$no="";}
$html=$html.'<div class="sx_vt'.$no.'" name="'.$i.'" title="'.$ji->title.'" intro="'.$ji->description.'" hsrc="'.$ji->permalink.'"><img src="./images/load.jpg" bsrc="'.$img.'" alt="'.$ji->title.'"></div>';
}
echo $html;
?>
原理就是利用for
循环,来实现的多次点播。
关于调用时间
文章创建时间:gmdate('Y-m-d', $ji->created + Typecho_Widget::widget('Widget_Options')->timezone)
文章修改时间:gmdate('Y-m-d', $ji->modified + Typecho_Widget::widget('Widget_Options')->timezone)
提示
代码中的Widget_Archive@
后面的参数可以随便写,同一个页面多次使用时参数不能相同,否则会重复输出同一条数据。
2020年6月3日补充说明
代码中的type=post
可以改成type=single
,这样填写独立页面的cid
也行了
版权属于:泽泽社长
本文链接:https://blog.zezeshe.com/archives/typecho-cidgetinfo.html
本站未注明转载的文章均为原创,并采用
CC BY-NC-SA 4.0 授权协议,转载请注明来源,谢谢!
Widget_Archive后边跟着的@indexxiu是什么啊,怎么改成什么都生效的,不加又不得
区分码,你在同一个页面下使用同一个
Widget
调用不同文章时,就需要使用不同的@xxx,这样才能完成调用,否则第二段代码调用的内容会和第一段相同,我在这里说过你可以看下https://qqdie.com/archives/typecho-changjianwenti-1.html看了有人中间写成type=post也能正常运行,感觉这个调用好乱的样子,这种是不是还不如直接调用数据来的快点?
看需求啊,你用的时候觉得什么好就用什么就行了呀
调用'.$ji->date.'就直接什么都不显示了。。其他都正常,站长知道原因吗。。。
这个没办法输出date的,需要根据原理魔改一下才行
我把date的输出值放到缓冲区。。再用ob_get_contents获取,也行,23333
时间那个我补充上了,最近刚好又用到这个东西所以正好把时间这个试出来了
多谢已用到我的主题上了
我已转载地址:https://www.aiqizhi.com/typecho/431.html
嘿嘿,这个确实挺实用的,无意间发现可以这么写
想问一下,时间怎么填?
和正常调用文章一样,就是把this换成ji,如
<?php $ji->date(); ?>
按这篇内容的话,是要这样改吗?'.$ji->date.'
恩,也可以自行改变我的那个代码写法
那就奇怪了,为什么我设置的这样的'.$ji->date.',获取到的时间会跳出本来的位置,显示在其他位置了,还有栏目名称这样的,'.$ji->category().' 也是一样的问题,可能是()缺少参数的问题,但是我对语法不太熟悉,博主可以写个案例让我参考一下吗?
没有例子,我又不是搞教学...你可以参考文章上调用单个文章的代码,研究明白那个自己写for循环引用多个文章就好了
不是,我只是想问获取时间'.$ji->date().'的时候,会显示在的前面是什么原因
你加了括号,加了括号就直接echo了,不会参与赋值,所以在循环开始时就直接输出了,没有参与后面的循环赋值,所以我建议你修改我的代码写法
实用
是啊,我也觉得超级实用