UPDATE: 其实原本的txp在生成urltitle的部分无非是想要trim掉空格并把大写字母转化成小写,那么我们似乎大可以不必动用urlencode,更何况urlencode的链接似乎也不那么友好
还是和下面一样,不过要添加的代码是
if (empty ($incoming['url_title'])) {
$incoming['url_title'] = trim ($incoming['Title']);
$incoming['url_title'] = preg_replace ('/s+/', '-', $incoming['url_title']);
$incoming['url_title'] = strtolower ($incoming['url_title']);
}
效果还是见本文
Textpattern的永久链接的中文bug已经是众所周知的事情了,在撰写文章或者保存文章时,如果没有指定url title,那么将根据文章的标题生成url title,最要命的是,这个生成的url title会无视标题中的中文,例如类似 中文chinese 的标题,最终生成的url title则是 chinese 不难想象,如果title全部是中文的话。。。
当然,如果你的永久链接结构包含文章id的话就没什么问题了,或者,每次都能在发表文章前记得指定一个url title
很遗憾,我不是这种人,只好想个一劳永逸的解决办法了—hack一下code
说来很简单,php提供了一个urlencode的函数,对titile调用这个函数然后把结果指定给url title就行了
编辑 textpattern/include/txp_article.php 文件,找到 textile_main_fields 函数(4.0.5版在第925行),在函数末尾
return $incoming;
之前加一段
if (empty ($incoming['url_title'])) {
$incoming['url_title'] = urlencode ($incoming['Title']);
}
即可,效果看看本文的永久链接就知道了
强啊。。。
其实修改成像blogger或者movabletype的那种形式就可以了
把全中文标题的文章url title自动变成“post-id号”形式
@dimlau: 总觉得post-id这样子不是很友好的说。。。呵呵