2010年04月14日 93条评论

给最新的文章标题加个“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

“给最新的文章标题加个“NEW”提示图片”有93条评论

  1. 周先生 says:

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

    1. zwwooooo says:

      @周先生 懂点css就很好实现

  2. 朵未 says:

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

    1. zwwooooo says:

      @朵未 一些折腾而已

  3. 老七 says:

    这个好看。。

  4. Timothy says:

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

    1. zwwooooo says:

      @Timothy 以后吧,暂时这样

  5. 杰夫 says:

    第一篇当然是最新的。

    1. 阿修 says:

      @杰夫 万一有置顶呢?

    2. zwwooooo says:

      @杰夫 不一定,有时有没提示的置顶文章

  6. mcooo says:

    <?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:

    1. zwwooooo says:

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

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

  7. mcooo says:

    <?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:

  8. mcooo says:

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

  9. mcooo says:

    <?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:

    1. zwwooooo says:

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

  10. Max Lee says:

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

    1. zwwooooo says:

      @Max Lee 呵呵,mcooo的代码好

  11. normal says:

    :sad: 不懂css。。。

    1. zwwooooo says:

      @normal
      慢慢学习。

回复给 leesum ¬
取消回复

昵称 *

网址

B em del U Link Code Quote