给自己Typecho加上一个焦点图轮播可能瓶颈主要在图片,因为其它地方和我们调用的列表没有任何区别。

让typecho可以调文章中的第一张图或者附件图片

function img_postthumb($cid) {//by minirizhi.com
   $db = Typecho_Db::get();
   $rs = $db->fetchRow($db->select('table.contents.text')
       ->from('table.contents')
       ->where('table.contents.cid=?', $cid)
       ->order('table.contents.cid', Typecho_Db::SORT_ASC)
       ->limit(1));
   preg_match_all("//<img.*?src/=/"(.*?)/"[^>]*>/i", $rs['text'], $thumbUrl);  //通过正则式获取图片地址
   $img_src = $thumbUrl[1][0];  //将赋值给img_src
   $img_counter = count($thumbUrl[0]);  //一个src地址的计数器
   switch ($img_counter > 0) {
       case $allPics = 1:
           echo $img_src;  //当找到一个src地址的时候,输出缩略图
           break;
       default:
           echo "";  //没找到(默认情况下),不输出任何内容
   };
}

请添加到你模版文件夹中的【functions.php】文件中,直接往文件后面空白处插。

让typecho单独调用一个分类或者标签的文章列表

<ul>
<?php $this->widget('Widget_Archive@indexfocus', 'pageSize=6&type=tag', 'slug=focus')->to($indexfocus); ?><?php while($indexfocus->next()): ?>
    <li><a href="<?php $indexfocus->permalink(); ?>" target="_blank"><img src="<?php echo img_postthumb($indexfocus->cid); ?>" alt="<?php $indexfocus->title() ?>" /><strong><?php $indexfocus->title() ?></strong></a></li>
<?php endwhile; ?>
</ul>

这里用到的是标签,如果弄个幻灯片还创建个分类有点小题大作。

具体方法:typecho后台标签中添加一个标签【名称】可以是幻灯片也可以是焦点图,【缩略名】必须填focus(当然也可以填其它的但是要记得修改上面代码slug的值),然后编辑需要在博客展示焦点图轮播的文章【标签】写上刚才设置的标签名称。

参数解读:@indexfocus 作为标记可以随意修改,pageSize=6 其中6代表输出最新6条,type=tag 调用标签里的内容,slug=focus代表标签中缩略名为focus的内容。

后台标签添加好,function.php文件修改好,然后代码片段放到你模板里焦点图轮换位置即可。

文章目录