<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>China WordPress &#187; 关键词</title>
	<atom:link href="http://www.chinawp.com/tag/%e5%85%b3%e9%94%ae%e8%af%8d/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.chinawp.com</link>
	<description>WordPress 博客中文站</description>
	<lastBuildDate>Fri, 02 Oct 2009 20:07:33 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Wordpress关键词高亮</title>
		<link>http://www.chinawp.com/2009/10/106/</link>
		<comments>http://www.chinawp.com/2009/10/106/#comments</comments>
		<pubDate>Fri, 02 Oct 2009 20:07:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[技术分享]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[关键词]]></category>

		<guid isPermaLink="false">http://www.chinawp.com/?p=106</guid>
		<description><![CDATA[在搜索结果页面结果中显示关键词，或者对搜索引擎带来的用户显示欢迎语和操作提示，是一个能有效提高网站易用性的方法。wordpress下关键字高亮工具有很多，有searchhilight,  wp landing sites, wp-hightlights等，其中wp landing sites可以提供欢迎语，使用方法如下：
第一步，修改你主题下的single.php和index.php，加入以下内容
&#60;?php if  (ls_getinfo('isref')) : ?&#62;
&#60;p class='landingsites'&#62;欢迎来自 &#60;?php  ls_getinfo('referrer'); ?&#62; 的朋友! 如果您是第一次来到这里, 推荐您通过
&#60;a href='/feed'  target='_blank'&#62;RSS feed&#60;/a&#62; 订阅我的博客!&#60;/p&#62;
&#60;div  class="hello"&#62;您所搜索的关键词为： &#60;strong&#62;&#60;?php ls_getinfo('terms');  ?&#62;&#60;/strong&#62;&#60;/div&#62;
&#60;?php endif; ?&#62;
第二步，在css中添加


.landingsites {
background-color:#FFFEC6;
border:thin dashed #CFCFCF;
color:#333333;
font-size:12px;
margin:3px 0 10px;
padding:6px;
}


第三步是修改插件中的landingsites.php中的searchengine数组中加入支持百度和中文谷歌的支持,
'google.cn' =&#62; 'q',
'baidu.com' =&#62; 'wd',
中文转码修改：
function ls_get_terms($d)函数最后返回return $terms;之前加上如下代码：


if (!seems_utf8($terms)){
$terms=iconv("GBK", "UTF-8", $terms);
}


这样你就可以在百度和google中看一下效果了。
要继续优化，可以考虑以下几点：
1. 在404页面中添加相关文章，这样即使是碰到google来的断链，用户也会找到些有用的东西：
&#60;?php if  (ls_getinfo('isref')) : ?&#62;
&#60;h2&#62;&#60;?php ls_getinfo('terms'); [...]]]></description>
			<content:encoded><![CDATA[<p>在搜索结果页面结果中显示关键词，或者对搜索引擎带来的用户显示欢迎语和操作提示，是一个能有效提高网站易用性的方法。wordpress下关键字高亮工具有很多，有searchhilight,  wp landing sites, wp-hightlights等，其中wp landing sites可以提供欢迎语，使用方法如下：</p>
<p>第一步，修改你主题下的single.php和index.php，加入以下内容<br />
<code>&lt;?php if  (ls_getinfo('isref')) : ?&gt;<br />
&lt;p class='landingsites'&gt;欢迎来自 &lt;?php  ls_getinfo('referrer'); ?&gt; 的朋友! 如果您是第一次来到这里, 推荐您通过<br />
&lt;a href='/feed'  target='_blank'&gt;RSS feed&lt;/a&gt; 订阅我的博客!&lt;/p&gt;<br />
&lt;div  class="hello"&gt;您所搜索的关键词为： &lt;strong&gt;&lt;?php ls_getinfo('terms');  ?&gt;&lt;/strong&gt;&lt;/div&gt;<br />
&lt;?php endif; ?&gt;</code></p>
<p>第二步，在css中添加</p>
<div>
<div>
<pre style="font-family: monospace;"><span style="color: #6666ff;">.landingsites</span> <span style="color: #00aa00;">{</span>
<span style="font-weight: bold; color: #000000;">background-color</span><span style="color: #00aa00;">:</span><span style="color: #cc00cc;">#FFFEC6</span><span style="color: #00aa00;">;</span>
<span style="font-weight: bold; color: #000000;">border</span><span style="color: #3333ff;">:<span style="color: #993333;">thin</span> </span>dashed <span style="color: #cc00cc;">#CFCFCF</span><span style="color: #00aa00;">;</span>
<span style="font-weight: bold; color: #000000;">color</span><span style="color: #00aa00;">:</span><span style="color: #cc00cc;">#333333</span><span style="color: #00aa00;">;</span>
<span style="font-weight: bold; color: #000000;">font-size</span><span style="color: #00aa00;">:</span><span style="color: #993333;">12px</span><span style="color: #00aa00;">;</span>
<span style="font-weight: bold; color: #000000;">margin</span><span style="color: #00aa00;">:</span><span style="color: #993333;">3px</span> <span style="color: #cc66cc;">0</span> <span style="color: #993333;">10px</span><span style="color: #00aa00;">;</span>
<span style="font-weight: bold; color: #000000;">padding</span><span style="color: #00aa00;">:</span><span style="color: #993333;">6px</span><span style="color: #00aa00;">;</span>
<span style="color: #00aa00;">}</span></pre>
</div>
</div>
<p>第三步是修改插件中的landingsites.php中的searchengine数组中加入支持百度和中文谷歌的支持,</p>
<pre>'google.cn' =&gt; 'q',
'baidu.com' =&gt; 'wd',</pre>
<p>中文转码修改：<br />
function ls_get_terms($d)函数最后返回return $terms;之前加上如下代码：</p>
<div>
<div>
<pre style="font-family: monospace;"><span style="color: #b1b100;">if</span> <span style="color: #009900;">(</span><span style="color: #339933;">!</span>seems_utf8<span style="color: #009900;">(</span><span style="color: #000088;">$terms</span><span style="color: #009900;">)</span><span style="color: #009900;">)</span><span style="color: #009900;">{</span>
<span style="color: #000088;">$terms</span><span style="color: #339933;">=</span><span style="color: #990000;">iconv</span><span style="color: #009900;">(</span><span style="color: #0000ff;">"GBK"</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">"UTF-8"</span><span style="color: #339933;">,</span> <span style="color: #000088;">$terms</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
<span style="color: #009900;">}</span></pre>
</div>
</div>
<p>这样你就可以在百度和google中看一下效果了。<br />
要继续优化，可以考虑以下几点：</p>
<p>1. 在404页面中添加相关文章，这样即使是碰到google来的断链，用户也会找到些有用的东西：<br />
<code>&lt;?php if  (ls_getinfo('isref')) : ?&gt;<br />
&lt;h2&gt;&lt;?php ls_getinfo('terms');  ?&gt;&lt;/h2&gt;<br />
&lt;p&gt;欢迎来自 &lt;?php ls_getinfo('referrer'); ?&gt; 的朋友!  您所找的页面不存在，但是你搜索的关键词：&lt;i&gt;&lt;?php ls_getinfo('terms'); ?&gt;&lt;/i&gt;.  有以下主题或许您也感兴趣:&lt;/p&gt;<br />
&lt;ul&gt;<br />
&lt;?php ls_related(5, 10,  '&lt;li&gt;', '&lt;/li&gt;', '', '', false, false);  ?&gt;<br />
&lt;/ul&gt;<br />
&lt;?php endif; ?&gt;</code><br />
2. 加粗或者高亮关键词：</p>
<p><span style="color: green;">function</span><span style="color: gray;"> </span><span style="color: blue;">ls_terms_filter</span><span style="color: olive;">(</span><span style="color: #00008b;">$content</span><span style="color: olive;">){</span><span style="color: gray;"><br />
</span><span style="color: #ffa500;">// Did we come from a search engine? </span><span style="color: gray;"><br />
</span><span style="color: #00008b;">$referer</span><span style="color: gray;"> = </span><span style="color: blue;">ls_get_refer</span><span style="color: olive;">()</span><span style="color: gray;">;</span><span style="color: #ffa500;">//取来源域名</span><span style="color: gray;"><br />
</span><span style="color: #00008b;">$output</span><span style="color: gray;"> = </span><span style="color: #8b0000;">&#8221;</span><span style="color: gray;">;<br />
</span><span style="color: #00008b;">$delimiter</span><span style="color: gray;"> = </span><span style="color: blue;">ls_get_delim</span><span style="color: olive;">(</span><span style="color: #00008b;">$referer</span><span style="color: olive;">)</span><span style="color: gray;">;</span><span style="color: #ffa500;">//看是否在list里面</span><span style="color: gray;"><br />
</span><span style="color: green;">if</span><span style="color: olive;">(</span><span style="color: #00008b;">$delimiter</span><span style="color: olive;">)</span><span style="color: gray;"><br />
</span><span style="color: olive;">{</span><span style="color: gray;"><br />
</span><span style="color: #00008b;">$terms</span><span style="color: gray;"> = </span><span style="color: blue;">ls_get_terms</span><span style="color: olive;">(</span><span style="color: #00008b;">$delimiter</span><span style="color: olive;">)</span><span style="color: gray;">;</span><span style="color: #ffa500;">//取关键字串</span><span style="color: gray;"><br />
</span><span style="color: #00008b;">$terms</span><span style="color: gray;">= </span><span style="color: blue;">array_unique</span><span style="color: olive;">(</span><span style="color: blue;">preg_split</span><span style="color: olive;">(</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">/[\s,]+/</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;">, </span><span style="color: #00008b;">$terms</span><span style="color: olive;">))</span><span style="color: gray;">;</span><span style="color: #ffa500;">//转换为数组</span><span style="color: gray;"><br />
</span><span style="color: #00008b;">$contentarr</span><span style="color: gray;"> = </span><span style="color: blue;">preg_split</span><span style="color: olive;">(</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">/(&lt;.*&gt;)/U</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;">, </span><span style="color: #00008b;">$content</span><span style="color: gray;">,  -</span><span style="color: maroon;">1</span><span style="color: gray;">, </span><span style="color: blue;">PREG_SPLIT_DELIM_CAPTURE</span><span style="color: olive;">)</span><span style="color: gray;">; </span><span style="color: #ffa500;">// capture the tags as well as in  between</span><span style="color: gray;"><br />
</span><span style="color: #00008b;">$stop</span><span style="color: gray;"> = </span><span style="color: blue;">count</span><span style="color: olive;">(</span><span style="color: #00008b;">$contentarr</span><span style="color: olive;">)</span><span style="color: gray;">;</span><span style="color: #ffa500;">// loop stuff </span><span style="color: gray;"><br />
</span><span style="color: green;">for</span><span style="color: gray;"> </span><span style="color: olive;">(</span><span style="color: #00008b;">$i</span><span style="color: gray;"> = </span><span style="color: maroon;">0</span><span style="color: gray;">; </span><span style="color: #00008b;">$i</span><span style="color: gray;"> &lt; </span><span style="color: #00008b;">$stop</span><span style="color: gray;">; </span><span style="color: #00008b;">$i</span><span style="color: gray;">++</span><span style="color: olive;">)</span><span style="color: gray;"> </span><span style="color: olive;">{</span><span style="color: gray;"><br />
</span><span style="color: #00008b;">$content</span><span style="color: gray;"> = </span><span style="color: #00008b;">$contentarr</span><span style="color: olive;">[</span><span style="color: #00008b;">$i</span><span style="color: olive;">]</span><span style="color: gray;">;<br />
</span><span style="color: green;">if</span><span style="color: gray;"> </span><span style="color: olive;">((</span><span style="color: blue;">strlen</span><span style="color: olive;">(</span><span style="color: #00008b;">$content</span><span style="color: olive;">)</span><span style="color: gray;"> &gt; </span><span style="color: maroon;">0</span><span style="color: olive;">)</span><span style="color: gray;"> &amp;&amp; </span><span style="color: olive;">(</span><span style="color: #8b0000;">&#8216;</span><span style="color: red;">&lt;</span><span style="color: #8b0000;">&#8216;</span><span style="color: gray;"> != </span><span style="color: #00008b;">$content</span><span style="color: olive;">{</span><span style="color: maroon;">0</span><span style="color: olive;">}))</span><span style="color: gray;"> </span><span style="color: olive;">{</span><span style="color: gray;"> </span><span style="color: #ffa500;">// If it&#8217;s not a tag</span><span style="color: gray;"><br />
</span><span style="color: green;">foreach</span><span style="color: gray;"> </span><span style="color: olive;">(</span><span style="color: #00008b;">$terms</span><span style="color: gray;"> </span><span style="color: green;">as</span><span style="color: gray;"> </span><span style="color: #00008b;">$term</span><span style="color: olive;">)</span><span style="color: gray;"> </span><span style="color: olive;">{</span><span style="color: gray;"><br />
</span><span style="color: green;">if</span><span style="color: gray;"> </span><span style="color: olive;">(</span><span style="color: blue;">strlen</span><span style="color: olive;">(</span><span style="color: #00008b;">$term</span><span style="color: olive;">)</span><span style="color: gray;">&gt;</span><span style="color: maroon;">1</span><span style="color: olive;">)</span><span style="color: #ffa500;">//避免关键字太短的情况</span><span style="color: gray;"><br />
</span><span style="color: #00008b;">$content</span><span style="color: gray;">=</span><span style="color: blue;">eregi_replace</span><span style="color: olive;">(</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">(</span><span style="color: #00008b;">$term</span><span style="color: red;">)</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;">,</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">&lt;b&gt;</span><span style="color: navy;">\\</span><span style="color: red;">1&lt;/b&gt;</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;">, </span><span style="color: #00008b;">$content</span><span style="color: olive;">)</span><span style="color: gray;">;<br />
</span><span style="color: olive;">}</span><span style="color: gray;"><br />
</span><span style="color: olive;">}</span><span style="color: gray;"><br />
</span><span style="color: #00008b;">$output</span><span style="color: gray;"> .= </span><span style="color: #00008b;">$content</span><span style="color: gray;">;<br />
</span><span style="color: olive;">}</span><span style="color: gray;"><br />
</span><span style="color: green;">return</span><span style="color: gray;"> </span><span style="color: #00008b;">$output</span><span style="color: gray;">;<br />
</span><span style="color: olive;">}</span><span style="color: gray;"> </span><span style="color: green;">else</span><span style="color: olive;">{</span><span style="color: gray;"><br />
</span><span style="color: green;">return</span><span style="color: gray;"> </span><span style="color: #00008b;">$content</span><span style="color: gray;">;<br />
</span><span style="color: olive;">}</span><span style="color: gray;"><br />
</span><span style="color: olive;">}</span></p>
<p><span style="color: olive;">增加了上述的function,对内容里面的关键字进行加粗处理<br />
增加了2个filter</p>
<div>
<div><span style="color: blue;">add_filter</span><span style="color: olive;">(</span><span style="color: #8b0000;">&#8216;</span><span style="color: red;">the_content</span><span style="color: #8b0000;">&#8216;</span><span style="color: gray;">, </span><span style="color: #8b0000;">&#8216;</span><span style="color: red;">ls_terms_filter</span><span style="color: #8b0000;">&#8216;</span><span style="color: olive;">)</span><span style="color: gray;">;<br />
</span><span style="color: blue;">add_filter</span><span style="color: olive;">(</span><span style="color: #8b0000;">&#8216;</span><span style="color: red;">comment_text</span><span style="color: #8b0000;">&#8216;</span><span style="color: gray;">, </span><span style="color: #8b0000;">&#8216;</span><span style="color: red;">ls_terms_filter</span><span style="color: #8b0000;">&#8216;</span><span style="color: olive;">)</span><span style="color: gray;">;</span></div>
<div><span style="color: gray;">如果只需要高亮关键词而不需要欢迎语可以用search_hilite插件。但是这两个方法在使用super   cache时都会出问题，比较好的highlight是纯php方案，如Js的搜索引擎关键字高亮工具<a href="http://scott.yang.id.au/code/se-hilite/">Search Engine  Keyword Highlight</a>，这方面的wp插件可以用这个<a href="http://www.linksback.org/wordpress/wordpress-plugins/wphighlight-wordpress-plugin/">wp-hightlight插件</a>。需要注意的是这个插件的最后有个后门钩子，需要去掉.</span></div>
<div><span style="color: gray;">这个JS之前对中文和百度是不生效的，参照了这篇文章做了修改，现在百度和中文都可以使用了:</p>
<p><a href="http://www.aiview.com/2005/08/highlight_keywords_with_javascript.html">http://www.aiview.com/2005/08/highlight_keywords_with_javascript.html</a></p>
<p></span></div>
</div>
<p></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.chinawp.com/2009/10/106/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
