Typecho调用文章第一张图,第N张图以及无图显示随机图

有时候Typecho想调用文章第二张图,或者在输出多图的时候想对多图顺序的一个调用

可以尝试下面的方法

  1. function thumb($cid) {
  2. if (empty($imgurl)) {
  3. $rand_num = 10; //随机图片数量,根据图片目录中图片实际数量设置
  4. if ($rand_num == 0) {
  5. $imgurl = "随机图片存放目录/0.jpg";
  6. //如果$rand_num = 0,则显示默认图片,须命名为"0.jpg",注意是绝对地址
  7. }else{
  8. $imgurl = "随机图片存放目录/".rand(1,$rand_num).".jpg";
  9. //随机图片,须按"1.jpg","2.jpg","3.jpg"...的顺序命名,注意是绝对地址
  10. }
  11. }
  12. $db = Typecho_Db::get();
  13. $rs = $db->fetchRow($db->select('table.contents.text')
  14. ->from('table.contents')
  15. ->where('table.contents.type = ?', 'attachment')
  16. ->where('table.contents.parent= ?', $cid)
  17. ->where('table.contents.order= ?', 2)
  18. ->order('table.contents.cid', Typecho_Db::SORT_ASC)
  19. ->limit(1));
  20. $img = unserialize($rs['text']);
  21. if (empty($img)){
  22. echo $imgurl;
  23. }
  24. else{
  25. echo '你的博客地址'.$img['path'];
  26. }
  27. }

以上代码放入Functions.php 文件中。

然后在想在调用的文件里放入以下代码,这里我放入的是首页位置。

前端输出显示:<?php echo thumb($this->cid); ?>

上面的代码里面

  1. ->where('table.contents.order= ?', 2)

这里的2指定是第二个附件数据

如果控制输出第几个,或者多张图顺序的时候,从这里入手应该就可以了

代码参考:http://laolion.com/archives/698.html


第二张方法:

  1. function thumbside($con) {
  2. preg_match_all('/\&lt;img.*?src\=\"(.*?)\"[^>]*>/i', $con, $thumbUrl); //通过正则式获取图片地址
  3. preg_match_all('/\!\[.*?\]\((http(s)?:\/\/.*?(jpg|png))/i', $con, $patternMD); //通过正则式获取图片地址
  4. preg_match_all('/\[.*?\]:\s*(http(s)?:\/\/.*?(jpg|png))/i', $con, $patternMDfoot);
  5. if(count($thumbUrl[0])>1){
  6. return $thumbUrl[1][1]; //当找到一个src地址的时候,输出缩略图
  7. }else if(count($patternMD[0])>1){
  8. return $patternMD[1][1];
  9. }else if(count($patternMDfoot[0])>1){
  10. return $patternMDfoot[1][1];
  11. }else{
  12. $rand_num = 5;
  13. return Helper::options()->siteUrl."usr/themes/pure/randimg/".rand(1,$rand_num).".jpg";
  14. }
  15. }
文章由官网发布,如若转载,请注明出处:https://www.veimoz.com/895
0 评论
3.5k

发表评论

!