往typecho插入文章之自定义字段用法及扩展

**- 前言**
上一篇文章[typecho二次开发之使用python爬取数据并入库typecho的心得][1]已经解决了关于怎么往typecho插入附属数据的问题,但是留了一个问题,即怎么插入自定义字段的问题。继而解决第二个问题,即:typecho的数据格式无法满足自身网站的要求怎么办?

当你post一批数据过来的时候,未必就对应于typecho的数据库设计,更多的情况可能比它自身提供的字段要多得多,这个时候就需要引入自定义字段,好在typecho的设计里面是提供的,那么代码中如何体现呢?其实熟悉的朋友很熟悉,直接上代码:

$request->setParams(
array(
‘title’=>$title,
‘text’=>$content),
‘fieldNames’=>array(‘name1’,”name2″,”name3″),//typecho自定义字段名称
‘fieldTypes’=>array(‘str’,”str”,”str”),//自定义字段变量类型,一般写str即可
‘fieldValues’=>array($name1,$name2,$name3),//具体的赋值,和上面顺序一一对应
‘cid’=>”,
‘do’=>’publish’,
‘markdown’=>’0’,
‘date’=>empty($date)?””:$date,
‘category’=>empty($mid)?””:array($mid),
‘tags’=>join(“,”, array_unique($tags_ids)),
//’visibility’=>’hidden’,
‘visibility’=>’publish’,
‘password’=>”,
‘allowComment’=>’1’,
‘allowPing’=>’1’,
‘allowFeed’=>’1’,
‘trackback’=>”,
)
);

上面注释的三个地方就是自定义字段的入库方式,和后台编辑界面的键值对一一对应。这么填以后,前端取出的语法是:$this->fields->name1();这里的name1就是存入的变量名,只要当前是上下文环境是文章类型,那么通过$this句柄获取,或者别的文章类型的句柄。

通过以上方式,理论上无论多少个字段都可以插入,形成丰富的自定义字段,从而扩展typecho的定制能力。

**- 扩展**

上面的解决方案似乎已经满足了大部分的需求,但是如果自定义的字段过多势必难以管理,或者有的内容需要统一入库到typecho_contents 这个表里面,而且显然通过增加表的字段不符合typecho无缝扩展的设计理念。

那么有没有一种折中的办法呢?笔者想到的一种办法可能是其中一种不错的办法,即往typecho中的text字段存入json数据,json中包含各种各样的丰富字段。前端可以通过$this->text的办法获取全文数据,然后反序列化得到自己想要的字段然后呈现到页面上。

代码如下:

text);
$this->array_temp = json_decode($str,true);
echo $this->array_temp[‘node’];
?>

node既然入库时的节点,其实在php语言中,反序列化后得到的是一个树结构的数据类型(不过又有map特点),所以可以直接用node字段名来访问。

json是一种很轻量级的数据格式,所以不会对存储造成多大的影响。json格式的数据负责存储大量复杂的数据,结合fields方式来存储一些常用标识类型,从而达到了typecho自定义的最大化。也大大满足了各种数据类型的需求,扩展typecho的数据格式毫无压力,增大了存储元素的想象空间。

比如:存储一棵树结构的数据,还有诸如此类的非线性的数据结构都能够得到解决。

**不过毕竟不是typecho原生支持的,使用起来需要技巧来避免一些坑,这些技巧将在下一篇文章中给出。**

————————–天使漫步(一个typecho粉丝)

[1]: https://www.typechodev.com/index.php/archives/736/

原创文章,作者:admin,如若转载,请注明出处:https://www.typechodev.com/plugin/741.html

(0)
上一篇 2016-11-30 上午6:45
下一篇 2016-12-19 上午3:21

相关推荐

  • Typecho网站数据备份脚本

    分享一枚自用的TE网站备份脚本,可以备份te网站,配合七牛的同步程序,即可实现数据备份~ 用法:1. 下载文章附件中的脚本,放置在你的服务器上,任意目录。2. 添加权限,包括脚本的…

    插件开发 2015-10-31
  • Typecho二次开发之插件命名规范及注意事项

    通过定制插件来满足博客花样百出的功能,比如:博客浏览数,往数据库插入文章,过滤分类,过滤字段,根据文章的类型来生成seo策略。以上的这些功能typecho都没有提供,然而却可以通过…

    插件开发 2016-08-31
  • Typecho中启用代码高亮插件SyntaxHighlighter

    在网上找了几个插件安装均失效,下面这个地址还可以有,安装完之后还可以选择多种代码颜色风格哈!![2908646526.png][1] ## 安装步骤 ## 1. 进入服务器里面的`…

    插件开发 2015-03-31
  • Typecho插件开发入门教程之HelloWorld

    任何语言的学习,都是从Hello World开始的,本文也不脱俗,我们也从Hello World来开始我们的学习之旅。 ## 基本结构 ##**1.文件结构**首先是插件的文件构成…

    插件开发 2015-02-28
  • typecho二次开发之使用python爬取数据并插入typecho

    **1.前言**和站主认识实在狗厂,离开后一直联系,因为在开发、产品、运营理念上很一致,所以陆陆续续开发了一些产品,其中[华文资讯][1]网就是和群主共同开发而成,耗时大概在两天左…

    插件开发 2016-10-31
  • 七牛CDN插件-优化后可用

    大家在下载[七牛typecho插件][1]的时候,会出现如下错误: Fatal error: Call to undefined method Typecho_Common::lo…

    插件开发 2015-04-30
  • Typecho中的路由解析

    ## 路由概述 路由的功能简单的说就是根据请求(即URL)找到对应业务代码(或者说控制器,Controller),请求来自用户端,业务由系统提供,路由器的主要任务就是为请求和业务提…

    插件开发 2014-12-31
  • Typecho插件制作实例:制作sitemap插件

    ### 原理介绍sitemap插件的原理其实很简单,就是监听文章的变化(新增或者编辑),并在文章变化的时候更新sitemap文件。sitemap是各大博主用得最多的功能之一,今日T…

    插件开发 2015-04-30
  • Typecho文章编辑器

    ![23 Markdown.jpg][1]Typecho自带的编辑器非常简单,对编辑器有更多要求的,可以使用插件。但是,Typecho支持markdown其实是非常好的,即时你换其…

    插件开发 2015-03-31
  • Typecho中为插件添加路由:addRoute

    Helper::addRoute接口,可以往typecho里面添加特定的路由策略,进而将url请求重定向到自己的控制器或者插件上。 本文我们来完成一个简单的实例,将`www.typ…

    插件开发 2015-04-30

发表评论

您的电子邮箱地址不会被公开。