Old

给最新的文章标题加个“NEW”提示图片

经常来我博客的朋友应该发现我博客的最新一篇文章的标题上会显示“NEW”提示图片,这个跟我前天的文章《给置顶文章标题加个“置顶”提示图片》是差不多的功能,但实现方法不同,而且跟万戈折腾的用文章发表时间跟现在时间相比较来判断的方法不同,我还记得QiQiBoy也写过类似功能的文章。

我的方法是通过调用最新文章代码提取最新的那篇文章 ID 和主页文章列表的文章 ID 比较来判断

下面是实现方法:

1. 当然是做个提示用的“NEW”图片,具体自个画吧,我这里说明的图片大小为:20×15,做好的图片放在主题所在目录的 images 文件夹里面

2. 设置显示图片位置的 css,这里我用名为 new-post 的 class 来定义,我用绝对位置,css 参考如下

(假如你的文章区是用 post 这个 class,所以记得在 post 这个 class 加个 position:relative; 属性)

.post .new-post{
position:absolute;
top:0;
left:17px;
width:20px;
height:15px;
background:url("images/new-post.gif") no-repeat 0 0;
}

3. 打开主题文件 index.php

找到 <?php if (have_posts()) : while (have_posts()) : the_post();?> ,在其上面加入以下代码

<?php
$myposts = get_posts('numberposts=1&offset=0&category=0');
foreach($myposts as $post) : setup_postdata($post);
$newpostid = get_the_ID();
endforeach;
?>

这段代码是取得最新一篇文章的 ID 赋值给 $newpostid 变量

4. 继续修改 index.php

在<div class=post></div>之间加入以下代码

<?php
$postid = get_the_ID();
if ($newpostid == $postid) {echo '<div class="new-post"></div>';}
?>

这段代码是把首页显示的文章 ID 逐个跟第 3 步取得最新文章 ID 的 $newpostid 对比,唯一相同 ID 文章添加 NEW 图片标示

效果看我博客首页/如下图

OK,搞定,同样是细节小功能,而且是可要可不要或者说多此一举的折腾,玩玩吧。

目前只用在我现在所使用的 zLEI 主题里面,不知道此方法是否“太老土”,如果各位朋友有更好的方法欢迎指教。

zww
or
oooo

声明: 除非注明,ZWWoOoOo文章均为原创,转载请以链接形式标明本文地址
本文地址: http://zww.me/archives/25134

93 comments

  1. Kars Kars Flock 2.5.6 Flock 2.5.6 Windows XP Windows XP

    沙发~

    沙发
  2. A.shun A.shun Opera 10.52 Opera 10.52 Windows XP Windows XP

    板凳~

    板凳
  3. A.shun A.shun Opera 10.52 Opera 10.52 Windows XP Windows XP

    文囧到这种地步, :cool: 就不能和前面那篇一起写么

    地板
  4. ......
  5. 周先生 周先生 Opera IBIS 10.52 Opera IBIS 10.52 Windows 7 Windows 7

    这个估计是有的主题不好实现吧,每个主题的规范不一样。

    41楼
  6. 朵未 朵未 Maxthon 3.0.8.11 Maxthon 3.0.8.11 Windows XP Windows XP

    嘿嘿,你这里技术多。 :lol:

    42楼
  7. 老七 老七 Internet Explorer 7.0 Internet Explorer 7.0 Windows XP Windows XP

    这个好看。。

    43楼
  8. Timothy Timothy Safari 4.0.3 Safari 4.0.3 Mac OS X  10.6.2 Mac OS X 10.6.2

    换一张好看一点的图片,呵呵

    44楼
  9. 杰夫 杰夫 Internet Explorer 7.0 Internet Explorer 7.0 Windows XP Windows XP

    第一篇当然是最新的。

    45楼
  10. mcooo mcooo Firefox 3.6.3 Firefox 3.6.3 Windows XP Windows XP

    <?php $currentdate = date('Y-m-d');$postdate = get_the_time('Y-m-d');

    if ($postdate==$currentdate) {

    echo '<div class="index new">';

    } else {

    echo '<div class="index">';

    } ?>

    我的实现是这样的,不过你的也很好的,会不会产生多一次查询! :grin:

    46楼
    • zwwooooo zwwooooo Firefox 3.6.3 Firefox 3.6.3 Windows 7 Windows 7

      @mcooo 这个是时间限制当天的文章显示new,我觉得不如QiQiboy的一段时间的文章显示new,当然你这段代码改改就是。不过我这个方法是给最后(新)那篇文章加new,很鸡搏 :mrgreen: 只是玩儿,应该会多产生一次查询,但没找到其他办法。

      我过段时间可能还是会选择你这个方法,但会根据自己更新评率设定2天内的文章加上new

  11. mcooo mcooo Firefox 3.6.3 Firefox 3.6.3 Windows XP Windows XP

    <?php

    $t1=$post->post_date;

    $t2=date("Y-m-d H:i:s");

    $diff=(strtotime($t2)-strtotime($t1))/3600;

    if($diff<48){echo '<div class="index new">';

    } else {

    echo '<div class="index">';

    }

    ?>

    呵呵,那就用这个吧! :mrgreen:

    47楼
  12. mcooo mcooo Firefox 3.6.3 Firefox 3.6.3 Windows XP Windows XP

    $diff<=48
    这样也可以啊! :wink:

    48楼
  13. mcooo mcooo Firefox 3.6.3 Firefox 3.6.3 Windows XP Windows XP

    <?php

    if(((strtotime(date("Y-m-d H:i:s"))-strtotime($post->post_date))/3600)<48)

    {echo '<div class="index new">';} else {

    echo '<div class="index">';

    }

    ?>
    再少点代码吧! :razz:

    49楼
    • zwwooooo zwwooooo Firefox 3.6.3 Firefox 3.6.3 Windows 7 Windows 7

      @mcooo 好,过几天抽时间再折腾,感谢你的代码,我不用到处找了 :mrgreen:

  14. Max Lee Max Lee Google Chrome 5.0.375.127 Google Chrome 5.0.375.127 Windows 7 Windows 7

    我用了 @mcooo 的代码给首页的最新文章加上了一个 new 的小图标,感谢~

    50楼
  15. normal normal CoolNovo 2.0.3.38 CoolNovo 2.0.3.38 Windows XP Windows XP

    :sad: 不懂css。。。

    51楼

Leave a Reply