这是自从写度连结的重要性开始,经过WordPress 3.0下WikiStyle Autolinks不work的测试,后来我感觉有点不对,WikiStyle的外挂,它的程式是针对文章内容做搜寻,当你旧文章的标题有跟目前显示文章的内容有吻合的时候,就将旧文章的标题转成连结放在目前显示的文章内来作到深度连结的功能,但是这会造成如果你的网站小又或者你的文章数超多的话,那么这个搜寻会造来严重的后果,那就是读者看文章会变得很慢很慢…慢到他睡着了,文章还没显示完,原本在测试平台下测试还满顺利的,后来移到这个频宽小文章数以到了1491篇的工作达人来说,这是很大的搜寻负荷,我们不可以慢待我们的读者,作者自己倒是可以慢待才对。

经过这样的思考,ㄚ琪又再一次地搜寻Wordpress的外挂有没适合我的想法的,我找到了Remind Me这个外挂,这也是有5颗星的外挂,在Wordpress 3.0下使用没有问题,它可以很容易地将这一篇文章的连结放到另一篇的文章内,这是深层连结的一个满不错的外挂,当你启用这个外挂后,你会看到在内容编辑栏位下,有相关文章的列表(如下图)。

2010-06-28_113241

这些列表是根据你目前文章的标题、内容、标签、分类来搜寻以前的旧文章,但是内容是依据你把它用滑鼠选取之后,按Refresh List更新时比对旧文章的内容来当作搜寻结果的,或许这个逻辑没什么问题,但是对ㄚ琪的用意是不吻合的,因为在WikiStyle Autolinks下是用旧文章的标题来比对目前文章的内容,而这也是我比较接受的逻辑,因为一般我在写文章的时候可能旧的文章标题我记不得,所以如果编辑的文章内有一段话是我常用的,那么它就可以提醒我以前有这么一篇文章喔!那时我就把这个连结加入文章内,你看虽然在编辑的时候它要去搜寻,但是应该不会很多次,这将比起读者每次看文章就要搜寻的WikiStyle Autolinks,确实这是省力多了!

好了Remind Me这个功能没有,我想就把WikiStyle Autolinks这个功能移入好了,但是程式码的写成有差异,好像不相容吧,我在想在SQL命令产生的时候应该有正规表示式吧!

哈哈,果真没错,先试了全文索引的功能,不对,而且要改变Wordpress的资料结构,这个很实在不妥,继续找,后来找到有REGEXP的语法,这正是我要的命令语法!

好了,开始改造我的Remind Me吧!

第一个是先针对wp-content\plugins\remind-me-deep-linking-seo-plugin\template\js的remind-me-metabox.js做改造

var selString = tinyMCE.activeEditor.selection.getContent();

这一行就是针对选取内容比对旧文张的标题来做搜寻结果,我不想这样所以改成

var selString = tinyMCE.activeEditor.getContent();

这样是为了让旧文章的标题比对目前文章内所有文字做搜寻结果!

接着改wp-content\plugins\remind-me-deep-linking-seo-plugin下的model.php

// add the search text
if (!empty($params[“highlight”])){
$params[“highlight”] = jtUtility::cleanTxt($params[“highlight”], “”);
$searchWhere->addLike(“post_title”, $params[“highlight”],”p”, true);
$searchWhere->addLike(“post_excerpt”, $params[“highlight”],”p”, true);
$searchWhere->addLike(“post_content”, $params[“highlight”],”p”, true);
$searchWhere->addLike(“post_name”, $params[“highlight”],”p”, true);
}

上面这一块是原来的程式码主要就是产生用滑鼠选取部份文章内容来做搜寻的SQL语法,我不要这样的搜寻,所以改成这样:

// add the search text
if (!empty($params[“highlight”])){
$params[“highlight”] = jtUtility::cleanTxt($params[“highlight”], “”);
//加hack,使用hightlight为所有content
//注解下面四行
//$searchWhere->addLike(“post_title”, $params[“highlight”],”p”, true);
//searchWhere->addLike(“post_excerpt”, $params[“highlight”],”p”, true);
//$searchWhere->addLike(“post_content”, $params[“highlight”],”p”, true);
//$searchWhere->addLike(“post_name”, $params[“highlight”],”p”, true);
$searchWhere->add(“‘”.$params[“highlight”].”‘ REGEXP p.post_title”);
}

这一行就是精髓: $searchWhere->add(“‘”.$params[“highlight”].”‘ REGEXP p.post_title”);

好了,这样就完成任务了,真是过瘾!

Comments are closed.