其实我对说说这东西一直都有偏见,我觉得QQ空间也够用了,干嘛用博客写说说呢!所以长久以来从来没弄过说说功能!不过看着越来越多的主题都在搞说说,为了增加卖点,所以我也开搞了,搞了后发现说说也挺香的,因为开放所有人可以看见,但又可以过滤掉QQ上的熟人,这种特点真的挺好的。

说说的方案

主流有三种方案:分类改说说、评论改说说、对接第三方。

  • 分类改说说:就是新建立个博客分类,这个分类的文章内容就是说说,针对这个分类页面写说说的样式。优点就是每个说说都是独立的文章,说说内容长了还可以截断点击详情可阅读完整内容,可以说既可以是说说也可以写文章,具有文章所有特性;缺点就是有人订阅了你的博客后你这个说说也会被订阅到,导致对方看到了很多无效的短文章,需要自己针对这个说说分类不输出rss。
  • 评论改说说:可以建立独立页面模板,然后将这个独立页面的评论改成说说的样式,一级评论作为说说,二级三级等评论作为说说的评论。优点就是小巧,只利用一个独立页面即可建立说说页面,缺点就是开发适配难度有点大,比如需要限制一级评论仅限站长可发布(也就是说说只有站长能发),再比如上传图片功能需要自行实现。
  • 对接第三方:一般是对接公众号啥的,博客这边弄个独立的数据表,或者对接文章表亦或是评论表,公众号上发布说说,博客这边接受展示说说,优点是可以展示的东西比较多,比如语音说说,图片说说什么的,缺点是感觉比评论改说说更麻烦。
Typecho说说.jpeg

评论改说说

考虑到自己技术水平,我选择了评论改说说的方式,本来想着如果做的不理想就弃坑,结果还是满顺利的,虽然耗费了好几天。

拦截一级评论

首先是让一级评论只能文章作者发布,因为用到了之前《ajax提交评论》里面的函数,那个函数接收评论的,所以可以在ajax评论函数里面直接做拦截

$user = Typecho_Widget::widget('Widget_User');//获取用户组件
$parentId = $archive->request->filter('int')->get('parent');//获取评论父级,为0则为一级评论
$shenfen=0;//定义个身份变量
if($user->uid>0){if($user->uid == $archive->authorId){$shenfen=1;}}//如果当前用户为文章作者则身份变量改为1
if($archive->template=='say.php'){//如果是说说模板启用以下判断
    if($shenfen==0&&$parentId==0){//如果身份不是文章作者同时评论又是一级评论,返回提示信息
        $archive->response->throwJson(array('status'=>0,'msg'=>_t('非管理员无法发布说说!')));
    }
}

图片上传

我在评论框下面加了个图片上传的按钮,对接的是说说对应的文章附件系统,接口也是参考后台文章附件上传的源码

\Widget\Security::alloc()->to($security);
$security->index('/action/upload?cid=' . $this->cid);//上传接口地址
使用post请求,文件参数为file

附件列表

附件列表输出详见《Typecho根据文章cid输出所有附件并倒序》,插入附件的功能比较简单,就是给图片地址拼点字符串类似这样![图片标题](图片地址)然后插入到评论框里即可,删除图片附件的接口如下

\Widget\Security::alloc()->to($security);
$security->index('/action/contents-attachment-edit');//删除附件的接口地址
使用post请求,参数为do=delete,cid=附件的cid

前台管理说说

前台删除说说

\Widget\Security::alloc()->to($security);
$security->index('/action/comments-edit?do=delete&coid=当前评论coid');
请求这个地址即可删除评论也就是说说,使用ajax请求体验最佳。

前台编辑说说
这个比较复杂,建议参考后台manage-comments.php文件

成果展示

附件上传与管理说说编辑删除说说
前台可以上传/插入/删除图片发布过的说说在前台可以二次编辑发布好的说说以及评论支持前台删除

总结:就是说说前台页面已经实现了所有管理功能,无需进入后台管理

版权属于:泽泽社长
本文链接:https://blog.zezeshe.com/archives/typecho-say.html
本站未注明转载的文章均为原创,并采用 CC BY-NC-SA 4.0 授权协议,转载请注明来源,谢谢!