增加文章评级功能

今天看到一个叫WP-PostRatings的插件,可以和访客互动,让访客给每篇文章打分评级,觉得挺不错,就安装了,配置好之后,却发现并没有在页面上显示,于是就去寻求帮助。话说WP的插件果然很方便,大多数配置很简单,遇上稍微复杂一些的,开发者也都是很负责任的人,大多都给咱们留下了比较详细的帮助文档,所以一般来说遇到疑惑的,通过查帮助文档+搜索多半能搞定了。又扯远了……赶快回来。

嗯,照例这次先搜索,发现有人提到是要加一句话在主题的某个叫index.php文件里,于是就去依样画葫芦,但发现自己的index.php和那个作者说的不一样,甚为疑惑,不过想想先试试,于是把那段代码贴进了index.php,保存后刷新博客,悲剧的是果然没有效果,猜测可能年代久远,形势变了(插件的FYI信息显示支持到wp2.8以上,但3.0的兼容性可能有些问题),于是就又忍不住自己探索起来。首先想到的是去插件的使用介绍页面找答案。

使用介绍页面确实说了使用方法:
1、需要对所使用wp主题的index.php,archive.php,single.php,post.php以及page.php进行编辑操作;
2、在上述文件中找到下面这行代码:

<?php while (have_posts()) : the_post(); ?>

3、把下面这行代码添加在上述代码之后(放置的具体位置将会影响实际显示的位置):

<?php if(function_exists('the_ratings')) { the_ratings(); } ?>

好,在顺利完成了archive.php、single.php和page.php的代码修改之后,我确实在存档页面(archive.php控制)、文章页面(single.php控制)和静态页面(page.php控制)的内容底部成功添加了期望看到的5颗用于评价的星星,但问题还是存在:
我使用的主题没有post.php文件,而在index.php文件中,也找不到第二步所要的源代码。

这样导致的问题是在博客首页显示的最新文章中没有这个评价工具。而这里显示评价工具又是非常必要的:在首页看完最新文章的用户没道理还专门点击进文章页面去打分,如果我希望他们打分,就必须在这里实现

但现在没有对应的页面去添加,怎么办呢?

这时我想到wp调用和显示文章、各种挂件是采用loop循环的方式进行的,用定义好的结构依次将每一篇文章和每一个挂件的内容从数据库中读出并加载出来,直到所有符合条件的文章、挂件加载完毕,这个循环结束。而模板里有一个控制loop循环的文件:loop.php。于是我打开了loop.php,通过里面的注释文字明白loop.php详细定义了首页的文章、挂件显示方式,所以就是这里了,我只要找到合适的位置,把上面提到的控制代码加进去,wp就会在调用文章的时候显示出这个打分的工具,剩下的问题是找到这个合适的位置。我希望把打分的工具放在每篇文章结束的位置上,这样读者在读完文章之后,就能给出自己的打分了,如下图:

期望添加评分功能的位置

仔细阅读loop.php的代码,我找到了这个位置,它就是定义entry-utility结构的地方,所以,只要在entry-utility结构定义结束之前的位置上,也就是“</div><!– .entry-utility –>”之前,插入打分的那段代码就可以了,之后点击下方的更新文件保存修改,再reload一次页面,我如愿以偿的在首页每篇文章展示的最后,看到了打分的星星,如下图:

添加评分工具后的效果

最后补充一些话,loop文件是按照首页页面的内容展示顺序定义每一篇文章、每一个挂件的显示规则的,如果是多栏结构,就是从左上角开始,按照先从上往下,再从左往右的顺序依次定义,所以在设计首页布局的时候,挂件的排列顺序最好按照重要性进行排序,这样能确保重要的、对用户帮助大的挂件尽早载入页面,有益于用户的浏览体验。

Share

619 views

关于Alex

一生俯首拜阳明
此条目发表在习·网站搭建分类目录,贴了, , , , 标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>