码迷,mamicode.com
首页 > 其他好文 > 详细

再谈WordPress获取文章图片——制作文章图片集

时间:2015-10-31 06:53:49      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:

有一次接到一个项目,客户要求:如果一篇文章中存在多幅图片,要能把这些图片在当前文章页面制作成一个图片集。

仔细分析这个要求,前端设计无悬念,无非就是如何获取当前文章中所有图片的 src 值的问题。

联想到几乎每个网站都必备的获取文章首张图片的那个函数: function catch_that_image()   (前文已有相关描述:也谈WordPress获取文章中首张图片),在这个函数中,仅仅使用了首张图片,而那里获得的 $matches 是一个二维数组啊。

先将该变量dump出来看一下,插入:

var_dump($matches);

输出如下(图片url前面部分已为保护隐私作者已删除):

array(2) {
  [0]=>
  array(3) {
    [0]=>
    string(171) "<img src="...2015101200004.jpg"/>
    [1]=>
    string(192) "<img src="...2912928349248.jpg"/>
    [2]=>
    string(201) "<img src="...awief98aw7faw.jpg"/>
  }
  [1]=>
  array(3) {
    [0]=>
    string(64) "...2015101200004.jpg"
    [1]=>
    string(124) "...2912928349248.jpg"
    [2]=>
    string(133) "...awief98aw7faw.jpg"
  }
}

可见,我们需要的正是 $matches[1],不是它的第一个,而是全部!

由于已经有了function catch_that_image()函数,因此不必再写一个新函数了。将这个函数改一改,增加一个参数调用并针对调用参数判断进行返回即可:

 1 function catch_that_image($picnum=0) {
 2   global $post, $posts;
 3   $first_img = ‘‘;
 4   ob_start();
 5   ob_end_clean();
 6   $output = preg_match_all(‘/<img.+src=[\‘"]([^\‘"]+)[\‘"].*>/i‘, $post->post_content, $matches); 
 7 
 8   $first_img = ‘‘;
 9   if(empty($matches[1])) $first_img = "/default.jpg";
10   else $first_img = $matches [1][0];
11   if ($picnum>0) return $matches[1];
12   else return $first_img;
13 }

前端调用时采用如:<?php $all_pic=catch_that_image(2);?>即可将包含所有图片的数组赋给数组变量 $all_pic,如果只需要调用首张图片时仍如原来<?php echo catch_that_image();?>。

前端处理逻辑复制如下(在 single.php中合适的位置):

<?php /*本过程处理本文章图片集*/
    $all_pic=catch_that_image(2);//用参数2调用函数,返回值存入数组
    if (count($all_pic)>1) {    //文章图片数大于1才显示图片集
        echo ‘<div class="single_pic">‘;
        echo ‘<div class="pic_header">本文精彩图集</div>‘;
        echo ‘<div class="focusBox_single" style="margin:0 auto">‘;
        echo ‘<ul class="pic">‘;
        foreach ($all_pic as $pics=>$pic) {
            echo ‘<li><img src="‘.$pic.‘"></li>‘;
        }
        echo ‘</ul>‘;
        echo ‘<a class="prev" href="javascript:void(0)"></a>‘;
        echo ‘<a class="next" href="javascript:void(0)"></a>‘;
        echo ‘<ul class="hd_single">‘;
        for ($picnum=1;$picnum<=count($all_pic);$picnum++){
            echo ‘<li></li>‘;
        }
        echo ‘</ul>‘;
        echo ‘</div></div>‘;
        echo ‘<script type="text/javascript">‘;
        /*鼠标移过,左右按钮显示*/
        echo ‘jQuery(".focusBox_single").hover(function(){ jQuery(this).find(".prev,.next").stop(true,true).fadeTo("show",0.2) },function(){ jQuery(this).find(".prev,.next").fadeOut() });‘;
        /*SuperSlide图片切换*/
        echo ‘jQuery(".focusBox_single").slide({ mainCell:".pic",effect:"fold", autoPlay:false, delayTime:3000, trigger:"click"});‘;
        echo ‘</script>‘;
    }
?>

 

再谈WordPress获取文章图片——制作文章图片集

标签:

原文地址:http://www.cnblogs.com/ztkdv/p/4924737.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!