添加评论、RSS 订阅和站点地图功能实现


其实通过之前的步骤我们已经完成了博客的基本功能,这一节也是最后一节,我们来给博客加点料,让博客功能更加完善。

1、评论的问题

现在这个博客的主要缺憾就是用户不能对文章进行评论,不幸的是,博客评论有很多问题要处理。 首先是稳定、令人满意且通用的评论管理,当然,基于 Laravel 5.1 我们可以添加这个功能到后台管理系统,并且允许用户注册、登录、对文章进行评论等等。创建这些功能都很简单,没什么复杂可言。 但是真正的问题在于垃圾评论。 你将如何防止垃圾评论?使用验证码?黑名单/白名单?还是创建类似 Maksim Surguy 这样的 SPAM Honeypot ?或者通过集成 Akismet ? 坦白说,我不想处理这些令人头疼的事情,这里我们还可以使用第三方评论系统分分钟搞定博客评论。

2、添加 Disqus 评论框

我们使用 Disqus 实现博客评论。

注册 Disqus 账户并获取评论代码

Disqus.com 注册一个免费账号,有了账号并登录之后,点击“Add Disqus to site”链接,会跳转到如下这个页面: 添加Disqus到Laravel学院 填写好上述页面中的表单并提交之后,在跳转页面中选择“Universal Code”,然后页面会跳转到如下页面: Disqus评论通用代码 将方式1中的代码拷贝到页面中评论显示区域即可。

传递文章 slug 字段到页面

接下来我们在控制器 BlogControllershowPost() 方法中传递 $slug 变量到显示文章详情的视图页面:
很简单吧!现在文章视图中有了一个额外的可用变量。

创建 Disqus 评论局部视图

resources/views/blog/partials 目录下创建一个新的局部视图文件 disqus.blade.php,编辑该文件内容如下:
将 Disqus 中的通用评论代码拷贝过来,并取消 disqus_config 变量的注释,然后修改 this.page.url 和 this.page.identifier 的值。 我们将传递到视图的 $slug 变量作为 Disqus 的标识符以便于聚合该文章下的所有评论。

更新底部视图文件

最后,更新 resources/views/blog/partials 目录下的 page-footer.blade.php 文件内容如下:
好了,现在你的博客有评论功能了,在文章详情页底部现在可以看到 Disqus 评论框: Laravel博客Disqus评论框

3、添加分享链接

除了评论之外,很多博客还支持分享文章或站点到社交媒体功能,比如微信、微博、QQ、豆瓣、Facebook、Twitter等。要实现这一功能,可以借助百度分享或者 JiaThis 的分享代码。将相应分享代码拷贝到到页面相应位置即可,该操作很简单,这里不做演示。

4、实现 RSS 订阅

RSS 订阅对大部分博客应用而言是必备功能。在 Laravrel 5.1 中实现 RSS 订阅非常便捷。

安装 Composer 依赖包

我们使用 suin/php-rss-writer 来生成 RSS 文件。 首先使用 Composer 安装该依赖包:

创建 RSS 订阅服务

让我们来创建一个服务类用于创建和返回 RSS 订阅。在 app/Services 目录下创建一个 RssFeed.php 文件,并编辑其内容如下:

更新博客配置

添加 rss_size 配置项到配置文件 config/blog.php,我们会在 RSSFeed 服务类中用这个配置值判断在 RSS 显示多少篇文章:

添加 RSS 路由、链接和方法

要实现 RSS 订阅功能还有三件事情要做。首先是添加路由到 app/Http/routes.php
接下来更新 blog.layouts.master 视图文件 :
最后,更新 BlogController
好了,现在去浏览器中访问 http://blog.app/rss 你将会看到想要看到的东西。 如果想要在页面中显示 RSS 订阅链接,编辑 page-footer.blade.php 视图文件内容如下:
这样在博客底部会显示如下图标: Laravel博客RSS订阅图标

5、生成站点地图

最后,我们为博客生成站点地图以利于SEO。 实现思路和 RSS 订阅一样:

创建 SiteMap 服务

app/Services 目录下新建一个 SiteMap.php,编辑其内容如下:

添加路由和控制器方法

首先编辑路由文件 routes.php
然后编辑控制器 BlogController
到浏览器访问 http://blog.app/sitemap.xml,页面显示如下(以下是部分截图): Laravel博客站点地图截图 至此,我们的博客系列告一段落,你已经构建起一个完整的博客应用,并且在此过程中相信你也学到了很多 Laravel 技能,但愿这个项目能作为大家学习 Laravel  的入门项目,并在此基础上,初步掌握 Laravel 框架,也希望大家在以后的进阶之路上越走越远,越走越好!

<< 上一篇: 联系我们 & 发送邮件 & 队列使用(基于数据库)

>> 下一篇: 创建项目和测试驱动开发