WP 2 TXP

使用酷软本来应该扮酷,这可能是很少人写字宣传 TXP (Textpattern ) 的原因,虽然很长时间以来它的全球使用者都在1-2万。当然我也出于人之恶在好为人师的考量,所谓教程一概略过,因此现在看官应该调整心情至八卦状态。

欲工其事必利其器,完美的软件永远都好像在不可达到的彼岸,但这是我最接近的一次。年初我尝试了许多东西,Jesse 误导我说它是 Ruby on Rails 的产品 —— 使用 Textile 编辑格式的 RoR 产品目前我知道 tsing 使用的 mephistoblog,而第一个八卦是 Textile 和 Textpattern 系出同门(Dean Allen),而世界上第一个(至少是之一)提供 RoR 支持的主机服务商就是和 TXP 关系暧昧的 TextDrive。

TXP 的精髓是它的语义模型(Textpattern Semantic Model |Zh/TW ),这个称呼暗示了它是有点需要正襟危坐或者道貌岸然地学习一番, 我的体会是要理解 这张图 的几个部分。对于 Wp Like 软件(我把大多数软件都这样称呼)的使用者来说就是在分类之上加了一个叫做“Sections”的层,如果把 “Wp 的分类->post” 树状结构加上 Tag(游离之外的简单 Page 略过),形成的是一个二维平面结构,乘上 Sections 之后就变成了立体的三维矩阵(在 TXP 中 KEYWORD=TAG)。

这是一个开头,大多数软件即便实现类似结构之后已经停步不前,TXP 将它很好的利用起来。 Sections x Categories x Keyword (内容结构) 的三维矩阵中任何一个节点都可以独立地以多种形式表现出来,比如说首页、缩减在次要位置、或者一片随机状态的云……

这里可能会有人说,我用 XX 经过 YY 也是可以的,我知道,我还知道高手可以用写字板上网,插播强调的是,眼下八卦的是软件的基础结构,不仅是功能上可以实现,还是设计者设计时的考虑。Wp Like 在设计时没有这个考虑,实现它除了插件就是修改源码。MT/TypePad 中“blog”和“分类”是相关而不是独立的。而这之后我还不知道有哪个轻量级的软件能做到这点,要知道 TXP 当前版本解压后也只有 800 KB。

进而,TXP 的设计者没有走向“易用性”,Sections、Page、Form、Style 的表现结构强调的是用户可以简单地、逻辑清晰地、基于浏览器地为站点的不同部分以不同的形式表现,这几乎就是为页面设计的手工艺者量身订制 —— Sections 选择一个 Page,Page 中套用各种预定或自行制定的 Form,而这一 Section 可以采用任何 Style,且不说自带的 CSS 编辑器简单好用,单是基于浏览器这一点就很值得推崇,之前我们怎么做呢?好像需要上传一个脚本文件,然后在定制时“link”上这个文件,还有相应的 .CSS,逻辑只在你的脑中,能看到的只是长长的页面列表。

“Sections”的存在和上面说的2种结构都只是在常见脚本语言之上的封装,没错,言及 Weblog 的本质就是内容与形式相分离的易用性封装,区别只是它封装成了什么样子。如果把“link”的形式比作函数调用,那么 TXP 就更倾向于面向对象,这就是 C 和 C++ 的区别,当然封装的复杂度不能这样比。

结构就说到这里,“功能函数”总是要自己写的,程序员对此可能不屑一顾,多一层解释多耗一份资源,是啊,吹毛求疵地说水木社区就是用 C 写的,你拿来和 RoR 相比现在就可以换台了。

“txp:”的标签功能就是这多出来的一次解析,且不说丰富的标签属性可以大大简化代码长度,它开放的六种“if…else”标签的灵活度据懒懒猫说 已经接近了直接编辑 php(我完全不懂网络编程),因为不能在同一个嵌套中使用相同的标签,姑且认为支持了6层嵌套,6层意味什么?我用6层 if..else 写过 C 的 ISODATA 算法(实际不用这么多,只是我爱好 if..else)。更重要的是,思考可重用性和运行效率之间的平衡是一件非常有趣的事情,Godbit 开放了它们写得很好的源码

好像话题过于沉重了,我知道的“严肃”话题仅此而已,有些有趣的小片段:

  • 最为遭人诟病的缺陷是没有原生的 Trackback 支持,官方解释是出于慎重考虑 TB 功能只能给这个遍地垃圾的星球多添一些 spam,并且这一功能“plugin and hacks needed, often fails”。我觉得国内的局面还不到这个地步,损失是有的,偶尔我也会 ping 别人。
  • 还是为了防止 spam,留言机制需要“预览->发布”,这样已经可以在不用邮箱和验证码的的前提下防止绝大多数的垃圾,缺点是多载一次页面。暴露你的邮箱还是多载一次?见仁见智了。
  • 插件是用 base64 加密后的文本直接贴上去,觉得比 FTP 快得多。
  • 把站点保持在“debug”状态可以在解析后的 html 源码后面看到整个解析的过程,从而找出可能拥有的功能错误。(现在这里不在“debug”,不用看了),这是他们论坛 里说的,这个论坛非常可爱。
  • 每篇 Post 2 个类别,内带的“Related post”优先考虑第一个类别,我觉得这个比较符合逻辑。
继续八卦,我对你能把这么变态的长文读到现在相当的感动。

也许你发现了,TXP 的使用者大多都把枪口指向 Wp,后者因为要面对 MT 这样更加强势的对手貌似很少回应,Google 趋势表明 如果把 Wp 的用户数量比作中国,那么 TXPer 的数量就是特立尼达和多巴哥,国内用户数你看看豆瓣的 TXP 小组 就知道了,根据 Vick “用的人多就是丑陋”之学说,也许我将持续地贯彻这一主题。可能会有 Wp 的使用者疑惑为什么在导入的部分这么多软件没有支持,却有 TXP,我忘了在什么地方看到这两个东西有过在同一实验室的亲密接触。今年愚人节的时候还一起开过玩笑

尽管 TXP 的大小是 Wp 的一半,后者依然更容易使用,其实连 MT 都比 TXP 容易使用。我不知道 Wp 之前人们是否知道点击一下鼠标就可以完整地换一个样式,但是应该有很多人受益于 Wp + Wp Like 这样的“内容与形式相分离”的结构,尽管所有软件目前都是这样提倡的,但是大多数人永远站在容易的东西一边(反过来说也行),我觉得 Wp 的整个设计都倾向于让人容易使用,Hooks、Actions、Filters 的机制就如此。而 TXP 虽然也是这样声称的,但是它的样式依然存储在数据库里面,这样你可以把整个站点端着满大街跑,除了图片,今后要把图片也弄进去,人生就彪悍了。

“内容与形式相分离”是不是就是要把形式剔除出数据库?我觉得不是,因为手工艺者可能同样重视他们的样式作品,这样同样也是内容的一部分。

当然还有更多的不满~~

  • Wp 速度慢,缓存也快不到哪去;
  • 非常不喜欢所见即所得的编辑器,尽管后来我知道可以禁用;
  • 可惜在禁用之前,Wp 已经制造出了大量的“br/”;
  • 我不喜欢被插件插,目前这个还是纯洁的;
  • 我做的样式很难看但是我还是喜欢自己做,我觉得 Wp 的样式做起来不方便,TypePad/MT/beta.blogger 那样连样式都可视化操作更是垃圾;
  • 这篇《不使用 Wp 作为 CMS 的五个理由》 (5 Reasons Not to Use WordPress As a CMS)我 100% 同意;
  • 再不行咱玩的就是出位这样说无解了吧。

你为什么还没有换台?—!

最后,找几个牛人支持我的选择,这是一种惯用的伎俩。

  • Firefox 的图标设计者 Proph3t :“最重要的,逻辑(合理的)!”
  • 06年 Bloggies 最佳设计奖得主 Joshuaink :“更快的运行,更小的消耗 ……”
  • 9rules 成员 SonSpring :“如果你想拥有完整的功能,可以自架 Wp,但是有了自架的技术,为什么不用 TXP?”