menu 文章
GGZOO笔记2
开心就好

接上回,这次记下关于内容类型的插件的开发

插件名:TeQing
功能:提供多种类型内容的发布(文字、图片、音乐、视频等);类似于轻博客
字段:table.contents.postFormat(内容类型)、table.contents.extend(类型附加数据)

不同类型内容数据处理方式

文字类型:

postFormat=text,extend={thumb=thumb}

内容不需要做特殊处理,附加字段中可以存储内容缩略图

图片类型:

postFormat=image,extend={thumb=thumb,image={img1,img2,img3}};

附加字段中存储图片数组,原text为图库的介绍

音乐类型:

postFormat=music,extend={thumb=thumb,music={{src=163,id=123},{src=xiami,id=234}}}

原text为音乐的介绍,附加字段中,music数组存储音乐数据:src表示音乐来源,id为源站音乐id

视频类型:

postFormat=video,extend={thumb=thumb,video={src=http://v.youku.com/xxxxxxx,h5=http://xxx,swf=http://xxx}}

原text为视频的简介,video数组存储视频信息:src为视频来源地址;h5为视频html5播放地址(可为空);swf为视频flash地址

编码

想好了数据处理的方式,就需要用代码来实现了,本来考虑的是直接在后台的编辑器上添加这些功能,可是在实际的操作过程中发现这样做难免需要改动Typecho源码,只得考虑其他的方式了

Helper::addRoute('publish', '/publish/','TeQing_Widget','publish');
class TeQing_Widget extends Widget_Abstract_Contents{
    public function publish(){
        $this->render('publish.php');
    }
    //省略掉相关代码
}

增加一个内容发布的路由,实现在前端发布内容;页面效果:
前端内容发布页效果1
前端内容发布页效果2

内容编辑器采用的是kindeditor,文件上传使用的是与后台一样的pluplaod

内容发布时直接提交到与后台相同的地址,使用系统提供的接口来处理新增的数据

Typecho_Plugin::factory('Widget_Contents_Post_Edit')->write = array('TeQing_Plugin', 'write');
//检查对应内容类型的数据是否完整

Typecho_Plugin::factory('Widget_Contents_Post_Edit')->finishPublish = array('TeQing_Plugin', 'finishPublish');
//内容发布后按照内容类型处理并保存新增数据

进行到这一步,需要的内容已经保存到数据库了,下一步就是考虑该怎么展现这些内容了:

Typecho_Plugin::factory('Widget_Abstract_Contents')->filter = array('TeQing_Plugin', 'filter');
//前端展示时,先进行数据处理,方便前台模版使用对应的数据

根据内容类型,使用不同的模版展示相应的数据,基本上就完成了

TeQing总结

编码过程中碰到很多问题不知道该怎么办,弄了半天才发现原来答案就在那里,只能感叹官方的文档真的是太让人纠结了。
关于音乐和视频两种内容类型的处理:基本上没有官方的API。‘偷来’的各种API,不知道什么时候就失效了……

未完待续……

2015-08-09 share

评论已关闭

主题色
强调色
登录
用户名/邮箱不能为空
密码不能为空
用户名不能为空
邮箱不能为空
登录密码不能为空
验证码不能为空

或者使用其他方式登录