<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>MovableType 改进</title>
    <link rel="alternate" type="text/html" href="http://www.movabletype.org.cn/movabletype-use/hacks/" />
    <id>tag:www.movabletype.org.cn,2008-10-11://19</id>
    <updated>2008-10-29T07:08:47Z</updated>
    
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Open Source 4.21-zh-cn</generator>

<entry>
    <title>修改MT的作者归档路径</title>
    <link rel="alternate" type="text/html" href="http://www.movabletype.org.cn/2008/10/mt_authordisplayname_archive.html" />
    <id>tag:www.movabletype.org.cn,2008://1.8</id>

    <published>2008-10-24T16:04:25Z</published>
    <updated>2008-10-29T07:08:47Z</updated>

    <summary>  Movable Type 的按作者归档，是以作者的&quot;显示名称&quot;（AuthorDisplayName）为路径名的，这给我带来了很大的麻烦。因为如果显示名称设定为完全的中文，MT 是不能以此为路径名的，它只能用作者编号来代替。  比如说一个作者，注册名称（AuthorName）为 apple，显示名称（AuthorDisplayName）为Jobs，作者编号（AuthorID）为1；另一位作者，注...</summary>
    <author>
        <name>bb</name>
        <uri>http://www.movabletype.org.cn/mt-cp.cgi?__mode=view&amp;blog_id=3&amp;id=2</uri>
    </author>
    
        <category term="MovableType 改进" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="zh-cn" xml:base="http://www.movabletype.org.cn/">
        <![CDATA[<div class="asset-body"> 
<p>Movable Type 的按作者归档，是以作者的"显示名称"（AuthorDisplayName）为路径名的，这给我带来了很大的麻烦。因为如果显示名称设定为完全的中文，MT 是不能以此为路径名的，它只能用作者编号来代替。 
</p><p>比如说一个作者，注册名称（AuthorName）为 apple，显示名称（AuthorDisplayName）为Jobs，作者编号（AuthorID）为1；<br />另一位作者，注册名称为 bill，显示名称为比尔，作者编号为2。<br />那么 MT 在进行作者归档的时候，apple 就会被归档在 "/jobs/index.html",而 bill 的路径则是"/author2/index.html"，对用户和搜索引擎都很不友好。 
</p><p>不知道 MT 为何这样设定，并且没有提供更改选项。<br />如果系统有很多作者，显示名称重复了它会如何处理呢？<br />另外如果使用了<a title="Movable Type 中文化 － Just平生一笑" href="http://www.thinkjam.org/zoptuno/projects/zh-movable-type.html" target="_blank">汉化</a>，"authorX" 会被汉化为"作者(X)"，MT 将会进行错误的作者归档，可能会造成首页的错误。 
</p><p>我试着用 AuthorName 替代 AuthorDisplayName，基本解决了这个问题。 
</p><p>方法是修改 ContextHandlers.pm 这个文件（路径为 lib\MT\Template）。<br />下载、备份这个文件，找到下面这一行：<br /><strong>'a' =&gt; "&lt;MTAuthorDisplayName $dir&gt;,</strong><br />把它替换为<br /><strong>'a' =&gt; "&lt;MTAuthorName $dir&gt;",</strong><br />重新上传，覆盖。 
</p><p>然后登录 MT 后台管理，修改归档模版的 Entry Listing 模版。<br />在归档映射那里，把"按作者"归档的路径自定义为 <strong>%a/%f</strong>，"按作者以月"自定义为 <strong>%a/%y/%m/%f</strong>。保存，重建系统，应该就 OK 了。 
</p><p>也许你已经发现，这个修改方式很暴力。那是因为我并没有看懂代码，只能试着进行简单的替代。欢迎提供更好的修改方法。
</p><p>参考文档：<a title="Archive File Path Specifiers | Movable Type Docs" href="http://www.movabletype.org/documentation/appendices/archive-file-path-specifiers.html" target="_blank">Archive File Path Specifiers</a><br /></p><p><br /></p><p>原文链接：http://www.ashowbox.com/2008/03/mt-authordisplayname-archive.html<br /></p></div> ]]>
        
    </content>
</entry>

<entry>
    <title>MT BLogroll Api Url 和Bug 的修改</title>
    <link rel="alternate" type="text/html" href="http://www.movabletype.org.cn/2007/03/blogroll_ping.html" />
    <id>tag:www.movabletype.org.cn,2007://2.138</id>

    <published>2007-03-31T03:26:23Z</published>
    <updated>2008-11-18T02:05:08Z</updated>

    <summary>MT BLogroll 2.51 增加了通过technorati 和pingomatic 的api 来识别友情链接中博客的更新，并会通过“*”提示最近更新的博客。(具体可看本站边栏的MT Blogs) 然而pingomatic.com 已经不提供api 功能，technorati.com又被中国墙了。所以我们需要将technorati.com修改为technorati.jp 来实现此功能。 修改方...</summary>
    <author>
        <name>bb</name>
        <uri>http://www.movabletype.org.cn/mt-cp.cgi?__mode=view&amp;blog_id=3&amp;id=2</uri>
    </author>
    
        <category term="MovableType 改进" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="zh-cn" xml:base="http://www.movabletype.org.cn/">
        <![CDATA[<p><a href="http://plugins.movalog.com/mt-blogroll/manual" target="_blank">MT BLogroll 2.51</a> 增加了通过<a href="http://technorati.com" target="_blank">technorati </a>和<a href="http://pingomatic.com/" target="_blank">pingomatic</a> 的api 来识别友情链接中博客的更新，并会通过“<span style="color:#ff0000">*</span>”提示最近更新的博客。(具体可看本站边栏的MT Blogs)<br />
<br />
然而pingomatic.com 已经不提供api 功能，technorati.com又被中国墙了。所以我们需要将technorati.com修改为technorati.jp 来实现此功能。<br />
<br />
修改方法：<br />
进入Blogroll\plugins\Blogroll\lib\Blogroll\App\Update.pm 将其中的technorati.com修改为technorati.jp 即可。<br />
<br />
BTW：如果你的BlogRoll出现<a href="http://plugins.movalog.com/forums/viewtopic.php?id=537" target="_blank">以下报错</a>：<blockquote><br />
Error during task 'Link Update Times': Can't locate object method "load" via package "MT::PluginData" at /$MT_PATH$/plugins/Blogroll/lib/Blogroll/App/Update.pm line 40.</blockquote><br />
你可以<a href="http://plugins.movalog.com/svn/changeset/338" target="_blank">根据这个方法</a>进行修改：<br />
<blockquote>进入 plugins/Blogroll/lib/Blogroll/App/Update.pm 添加红字部分<br />
use URI::Escape; <br />
use MT::Log; <br />
<span style="color:#ff0000">use MT::PluginData;  </span><br />
sub init <br />
进入plugins/Blogroll/lib/Blogroll/Template/ContextHandlers.pm 添加红字部分<br />
my $blog_id = $ctx->stash('blog_id');     <br />
my $db_timestamp = $e->updated; <br />
<span style="color:#ff0000">    require MT::PluginData; </span><br />
my $config = MT::PluginData->load({ plugin => 'MT Blogroll', key => 'updating' }) || MT::PluginData->load({ plugin => 'MT Blogroll', key => 'updating'.$blog_id }); <br />
if($config && $config->data) { </blockquote></p>]]>
        
    </content>
</entry>

<entry>
    <title>更改technorati.com 的Ping</title>
    <link rel="alternate" type="text/html" href="http://www.movabletype.org.cn/2007/03/technorati_com_ping.html" />
    <id>tag:www.movabletype.org.cn,2007://2.137</id>

    <published>2007-03-31T03:09:37Z</published>
    <updated>2008-11-18T02:05:08Z</updated>

    <summary>自从technorati.com 被封了以后，系统默认的ping technorati.com 就无法使用了。不过目前technorati.com 的子站点technorati.jp 还能访问，所以我们可以把原来的http://rpc.technorati.com/rpc/ping 该为http://rpc.technorati.jp/rpc/ping 来实现ping的功能。 修改方法： 1、进入...</summary>
    <author>
        <name>bb</name>
        <uri>http://www.movabletype.org.cn/mt-cp.cgi?__mode=view&amp;blog_id=3&amp;id=2</uri>
    </author>
    
        <category term="MovableType 改进" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="zh-cn" xml:base="http://www.movabletype.org.cn/">
        <![CDATA[<p>自从technorati.com 被封了以后，系统默认的ping technorati.com 就无法使用了。不过目前technorati.com 的子站点technorati.jp 还能访问，所以我们可以把原来的http://rpc.technorati.com/rpc/ping 该为http://rpc.technorati.jp/rpc/ping 来实现ping的功能。<br />
<br />
修改方法：<br />
1、进入lib\MT\ConfigMgr.pm 将technorati.com替换为technorati.jp<br />
2、修改下模块(可以不修改)，进入tmpl\cms\cfg_entries.pm 将technorati.com替换为technorati.jp</p>]]>
        
    </content>
</entry>

<entry>
    <title>用户权限改进(2)：让非管理员无法修改博客URL和存储路径</title>
    <link rel="alternate" type="text/html" href="http://www.movabletype.org.cn/2007/03/user_url.html" />
    <id>tag:www.movabletype.org.cn,2007://2.105</id>

    <published>2007-03-08T13:23:11Z</published>
    <updated>2008-11-18T02:05:04Z</updated>

    <summary><![CDATA[二、博客URL和存储路径 cfg_simple &lt;TMPL_IF&nbsp;NAME=CAN_CREATE_BLOG&gt; &lt;fieldset&gt; &lt;h3&gt;&lt;MT_TRANS&nbsp;phrase=&quot;Publishing&nbsp;Paths&quot;&gt;&lt;/h3&gt; &lt;div&nbsp;class=&quot;inner&qu...]]></summary>
    <author>
        <name>bb</name>
        <uri>http://www.movabletype.org.cn/mt-cp.cgi?__mode=view&amp;blog_id=3&amp;id=2</uri>
    </author>
    
        <category term="MovableType 改进" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="zh-cn" xml:base="http://www.movabletype.org.cn/">
        <![CDATA[<p>二、博客URL和存储路径<br />
<br />
cfg_simple<br />
<br />
<pre><br />
<span style="color:#ff0000">&lt;TMPL_IF&nbsp;NAME=CAN_CREATE_BLOG&gt;</span><br />
<br />
&lt;fieldset&gt;<br />
&lt;h3&gt;&lt;MT_TRANS&nbsp;phrase=&quot;Publishing&nbsp;Paths&quot;&gt;&lt;/h3&gt;<br />
<br />
&lt;div&nbsp;class=&quot;inner&quot;&gt;<br />
<br />
&lt;div&nbsp;class=&quot;setting&quot;&gt;<br />
&lt;div&nbsp;class=&quot;label&quot;&gt;&lt;label&nbsp;for=&quot;site_url&quot;&gt;&lt;MT_TRANS&nbsp;phrase=&quot;Site&nbsp;URL:&quot;&gt;&lt;/label&gt;&lt;/div&gt;<br />
&lt;div&nbsp;class=&quot;field&quot;&gt;<br />
&lt;input&nbsp;name=&quot;site_url&quot;&nbsp;id=&quot;site_url&quot;&nbsp;value=&quot;&lt;TMPL_VAR&nbsp;NAME=SITE_URL&nbsp;ESCAPE=HTML&gt;&quot;&nbsp;size=&quot;50&quot;&nbsp;/&gt;<br />
&lt;p&gt;&lt;MT_TRANS&nbsp;phrase=&quot;Enter&nbsp;the&nbsp;URL&nbsp;of&nbsp;your&nbsp;website.&nbsp;Do&nbsp;not&nbsp;include&nbsp;a&nbsp;filename&nbsp;(i.e.&nbsp;exclude&nbsp;index.html).&quot;&gt;&lt;br&nbsp;/&gt;&lt;MT_TRANS&nbsp;phrase=&quot;Example:&quot;&gt;&nbsp;&lt;strong&gt;http://www.example.com/weblog/&lt;/strong&gt;<br />
&lt;a&nbsp;href=&quot;#&quot;&nbsp;onclick=&quot;return&nbsp;openManual('blog_settings_publishing',&nbsp;'site_url')&quot;&nbsp;class=&quot;help&quot;&gt;?&lt;/a&gt;&lt;/p&gt;<br />
&lt;/div&gt;<br />
&lt;/div&gt;<br />
<br />
&lt;div&nbsp;class=&quot;setting&quot;&gt;<br />
&lt;div&nbsp;class=&quot;label&quot;&gt;&lt;label&nbsp;for=&quot;site_path&quot;&gt;&lt;MT_TRANS&nbsp;phrase=&quot;Site&nbsp;Root&quot;&gt;:&lt;/label&gt;&lt;/div&gt;<br />
&lt;div&nbsp;class=&quot;field&quot;&gt;<br />
&lt;input&nbsp;name=&quot;site_path&quot;&nbsp;id=&quot;site_path&quot;&nbsp;value=&quot;&lt;TMPL_VAR&nbsp;NAME=SITE_PATH&nbsp;ESCAPE=HTML&gt;&quot;&nbsp;size=&quot;50&quot;&nbsp;/&gt;<br />
&lt;p&gt;&lt;MT_TRANS&nbsp;phrase=&quot;Enter&nbsp;the&nbsp;path&nbsp;where&nbsp;your&nbsp;index&nbsp;files&nbsp;will&nbsp;be&nbsp;published.&nbsp;An&nbsp;absolute&nbsp;path&nbsp;(starting&nbsp;with&nbsp;'/')&nbsp;is&nbsp;preferred,&nbsp;but&nbsp;you&nbsp;can&nbsp;also&nbsp;use&nbsp;a&nbsp;path&nbsp;relative&nbsp;to&nbsp;the&nbsp;Movable&nbsp;Type&nbsp;directory.&quot;&gt;&lt;br&nbsp;/&gt;&lt;MT_TRANS&nbsp;phrase=&quot;Example:&quot;&gt;&nbsp;&lt;strong&gt;/home/melody/public_html/weblog&lt;/strong&gt;<br />
&lt;a&nbsp;href=&quot;#&quot;&nbsp;onclick=&quot;return&nbsp;openManual('blog_settings_publishing',&nbsp;'site_root')&quot;&nbsp;class=&quot;help&quot;&gt;?&lt;/a&gt;&lt;/p&gt;<br />
&lt;/div&gt;<br />
&lt;/div&gt;<br />
&lt;p&nbsp;style=&quot;margin-left:83px;&quot;&gt;&lt;MT_TRANS&nbsp;phrase=&quot;You&nbsp;can&nbsp;configure&nbsp;the&nbsp;publishing&nbsp;model&nbsp;for&nbsp;this&nbsp;blog&nbsp;(static&nbsp;vs&nbsp;dynamic)&nbsp;on&nbsp;the&nbsp;&quot;&gt;&lt;a&nbsp;href=&quot;&lt;TMPL_VAR&nbsp;NAME=SCRIPT_URL&gt;?__mode=cfg_archives&amp;amp;blog_id=&lt;TMPL_VAR&nbsp;NAME=BLOG_ID&gt;#publ_prefs&quot;&gt;&lt;MT_TRANS&nbsp;phrase=&quot;Detailed&nbsp;Settings&quot;&gt;&lt;/a&gt;&lt;MT_TRANS&nbsp;phrase=&quot;&nbsp;page.&quot;&gt;&lt;/p&gt;<br />
<br />
&lt;/div&gt;<br />
&lt;/fieldset&gt;<br />
<span style="color:#ff0000">&lt;/TMPL_IF&gt;</span><br />
</pre><br />
三、cfg_archives<br />
<pre><br />
<span style="color:#ff0000">&lt;TMPL_IF&nbsp;NAME=CAN_CREATE_BLOG&gt;</span><br />
&lt;fieldset&gt;<br />
&lt;h3&gt;&lt;MT_TRANS&nbsp;phrase=&quot;Publishing&nbsp;Paths&quot;&gt;&lt;/h3&gt;<br />
<br />
&lt;div&nbsp;class=&quot;inner&quot;&gt;<br />
<br />
&lt;div&nbsp;class=&quot;setting&quot;&gt;<br />
&lt;div&nbsp;class=&quot;label&quot;&gt;&lt;label&nbsp;for=&quot;site_url&quot;&gt;&lt;MT_TRANS&nbsp;phrase=&quot;Site&nbsp;URL:&quot;&gt;&lt;/label&gt;&lt;/div&gt;<br />
&lt;div&nbsp;class=&quot;field&quot;&gt;<br />
&lt;input&nbsp;name=&quot;site_url&quot;&nbsp;id=&quot;site_url&quot;&nbsp;value=&quot;&lt;TMPL_VAR&nbsp;NAME=SITE_URL&nbsp;ESCAPE=HTML&gt;&quot;&nbsp;size=&quot;50&quot;&nbsp;/&gt;<br />
&lt;p&gt;&lt;MT_TRANS&nbsp;phrase=&quot;Enter&nbsp;the&nbsp;URL&nbsp;of&nbsp;your&nbsp;website.&nbsp;Do&nbsp;not&nbsp;include&nbsp;a&nbsp;filename&nbsp;(i.e.&nbsp;exclude&nbsp;index.html).&quot;&gt;&lt;br&nbsp;/&gt;&lt;MT_TRANS&nbsp;phrase=&quot;Example:&quot;&gt;&nbsp;&lt;strong&gt;http://www.example.com/weblog/&lt;/strong&gt;<br />
&lt;a&nbsp;href=&quot;#&quot;&nbsp;onclick=&quot;return&nbsp;openManual('blog_settings_publishing',&nbsp;'site_url')&quot;&nbsp;class=&quot;help&quot;&gt;?&lt;/a&gt;&lt;/p&gt;<br />
&lt;/div&gt;<br />
&lt;/div&gt;<br />
<br />
&lt;div&nbsp;class=&quot;setting&quot;&gt;<br />
&lt;div&nbsp;class=&quot;label&quot;&gt;&lt;label&nbsp;for=&quot;site_path&quot;&gt;&lt;MT_TRANS&nbsp;phrase=&quot;Site&nbsp;Root&quot;&gt;:&lt;/label&gt;&lt;/div&gt;<br />
&lt;div&nbsp;class=&quot;field&quot;&gt;<br />
&lt;input&nbsp;name=&quot;site_path&quot;&nbsp;id=&quot;site_path&quot;&nbsp;value=&quot;&lt;TMPL_VAR&nbsp;NAME=SITE_PATH&nbsp;ESCAPE=HTML&gt;&quot;&nbsp;size=&quot;50&quot;&nbsp;/&gt;<br />
&lt;p&gt;&lt;MT_TRANS&nbsp;phrase=&quot;Enter&nbsp;the&nbsp;path&nbsp;where&nbsp;your&nbsp;index&nbsp;files&nbsp;will&nbsp;be&nbsp;published.&nbsp;An&nbsp;absolute&nbsp;path&nbsp;(starting&nbsp;with&nbsp;'/')&nbsp;is&nbsp;preferred,&nbsp;but&nbsp;you&nbsp;can&nbsp;also&nbsp;use&nbsp;a&nbsp;path&nbsp;relative&nbsp;to&nbsp;the&nbsp;Movable&nbsp;Type&nbsp;directory.&quot;&gt;&lt;br&nbsp;/&gt;&lt;MT_TRANS&nbsp;phrase=&quot;Example:&quot;&gt;&nbsp;&lt;strong&gt;/home/melody/public_html/weblog&lt;/strong&gt;<br />
&lt;a&nbsp;href=&quot;#&quot;&nbsp;onclick=&quot;return&nbsp;openManual('blog_settings_publishing',&nbsp;'site_root')&quot;&nbsp;class=&quot;help&quot;&gt;?&lt;/a&gt;&lt;/p&gt;<br />
&lt;/div&gt;<br />
&lt;/div&gt;<br />
<br />
&lt;div&nbsp;class=&quot;setting&quot;&gt;<br />
&lt;div&nbsp;class=&quot;label&quot;&gt;&lt;label&nbsp;for=&quot;archive_url&quot;&gt;&lt;MT_TRANS&nbsp;phrase=&quot;Advanced&nbsp;Archive&nbsp;Publishing:&quot;&gt;&lt;/label&gt;&lt;/div&gt;<br />
&lt;div&nbsp;class=&quot;field&quot;&gt;<br />
&lt;ul&gt;<br />
&lt;li&gt;&lt;input&nbsp;type=&quot;checkbox&quot;&nbsp;name=&quot;enable_archive_paths&quot;&nbsp;id=&quot;enable_archive_paths&quot;&nbsp;value=&quot;1&quot;&nbsp;onclick=&quot;toggleSubPrefs(this);&nbsp;return&nbsp;true&quot;&lt;TMPL_IF&nbsp;NAME=ENABLE_ARCHIVE_PATHS&gt;&nbsp;checked=&quot;checked&quot;&lt;/TMPL_IF&gt;&nbsp;class=&quot;cb&quot;&nbsp;/&gt;&nbsp;&lt;MT_TRANS&nbsp;phrase=&quot;Publish&nbsp;archives&nbsp;to&nbsp;alternate&nbsp;root&nbsp;path&quot;&gt;&nbsp;&lt;a&nbsp;href=&quot;#&quot;&nbsp;onclick=&quot;return&nbsp;openManual('blog_settings_publishing',&nbsp;'advanced_archive_publishing')&quot;&nbsp;class=&quot;help&quot;&gt;?&lt;/a&gt;&lt;/li&gt;<br />
&lt;/ul&gt;<br />
&lt;p&gt;&lt;MT_TRANS&nbsp;phrase=&quot;Select&nbsp;this&nbsp;option&nbsp;only&nbsp;if&nbsp;you&nbsp;need&nbsp;to&nbsp;publish&nbsp;your&nbsp;archives&nbsp;outside&nbsp;of&nbsp;your&nbsp;Site&nbsp;Root.&quot;&gt;&lt;/p&gt;<br />
&lt;/div&gt;<br />
&lt;/div&gt;<br />
<br />
&lt;div&nbsp;id=&quot;enable_archive_paths_prefs&quot;&lt;TMPL_UNLESS&nbsp;NAME=ENABLE_ARCHIVE_PATHS&gt;&nbsp;style=&quot;display:&nbsp;none;&quot;&lt;/TMPL_UNLESS&gt;&gt;<br />
<br />
&lt;div&nbsp;class=&quot;setting&quot;&gt;<br />
&lt;div&nbsp;class=&quot;label&quot;&gt;&lt;label&nbsp;for=&quot;archive_url&quot;&gt;&lt;MT_TRANS&nbsp;phrase=&quot;Archive&nbsp;URL:&quot;&gt;&lt;/label&gt;&lt;/div&gt;<br />
&lt;div&nbsp;class=&quot;field&quot;&gt;<br />
&lt;input&nbsp;name=&quot;archive_url&quot;&nbsp;id=&quot;archive_url&quot;&nbsp;value=&quot;&lt;TMPL_VAR&nbsp;NAME=ARCHIVE_URL&nbsp;ESCAPE=HTML&gt;&quot;&nbsp;size=&quot;50&quot;&nbsp;/&gt;<br />
&lt;p&gt;&lt;MT_TRANS&nbsp;phrase=&quot;Enter&nbsp;the&nbsp;URL&nbsp;of&nbsp;the&nbsp;archives&nbsp;section&nbsp;of&nbsp;your&nbsp;website.&quot;&gt;&lt;br&nbsp;/&gt;&lt;MT_TRANS&nbsp;phrase=&quot;Example:&quot;&gt;&nbsp;&lt;strong&gt;http://archives.example.com/&lt;/strong&gt;<br />
&lt;a&nbsp;href=&quot;#&quot;&nbsp;onclick=&quot;return&nbsp;openManual('blog_settings_publishing',&nbsp;'archive_url')&quot;&nbsp;class=&quot;help&quot;&gt;?&lt;/a&gt;&lt;/p&gt;<br />
&lt;/div&gt;<br />
&lt;/div&gt;<br />
<br />
&lt;div&nbsp;class=&quot;setting&quot;&gt;<br />
&lt;div&nbsp;class=&quot;label&quot;&gt;&lt;label&nbsp;for=&quot;archive_path&quot;&gt;&lt;MT_TRANS&nbsp;phrase=&quot;Archive&nbsp;Root&quot;&gt;:&lt;/label&gt;&lt;/div&gt;<br />
&lt;div&nbsp;class=&quot;field&quot;&gt;<br />
&lt;input&nbsp;name=&quot;archive_path&quot;&nbsp;id=&quot;archive_path&quot;&nbsp;value=&quot;&lt;TMPL_VAR&nbsp;NAME=ARCHIVE_PATH&nbsp;ESCAPE=HTML&gt;&quot;&nbsp;size=&quot;50&quot;&nbsp;/&gt;<br />
&lt;p&gt;&lt;MT_TRANS&nbsp;phrase=&quot;Enter&nbsp;the&nbsp;path&nbsp;where&nbsp;your&nbsp;archive&nbsp;files&nbsp;will&nbsp;be&nbsp;published.&quot;&gt;&lt;br&nbsp;/&gt;&lt;MT_TRANS&nbsp;phrase=&quot;Example:&quot;&gt;&nbsp;&lt;strong&gt;/home/melody/public_html/archives&lt;/strong&gt;<br />
&lt;a&nbsp;href=&quot;#&quot;&nbsp;onclick=&quot;return&nbsp;openManual('blog_settings_publishing',&nbsp;'archive_path')&quot;&nbsp;class=&quot;help&quot;&gt;?&lt;/a&gt;&lt;/p&gt;<br />
&lt;/div&gt;<br />
&lt;/div&gt;<br />
<br />
&lt;/div&gt;<br />
<br />
&lt;/div&gt;<br />
<br />
&lt;/fieldset&gt;<br />
<span style="color:#ff0000">&lt;/TMPL_IF&gt;</span><br />
</pre><br />
<br />
因为首页有特定的规则，CNLOG的博客无法更改“归档映射”相关设置如下：<br />
<pre><br />
<span style="color:#ff0000">&lt;TMPL_IF&nbsp;NAME=CAN_CREATE_BLOG&gt;</span><br />
&lt;div&nbsp;class=&quot;setting&quot;&gt;<br />
&lt;div&nbsp;class=&quot;label&quot;&gt;&lt;label&nbsp;for=&quot;file_extension&quot;&gt;&lt;MT_TRANS&nbsp;phrase=&quot;File&nbsp;Extension&nbsp;for&nbsp;Archive&nbsp;Files:&quot;&gt;&lt;/label&gt;&lt;/div&gt;<br />
&lt;div&nbsp;class=&quot;field&quot;&gt;<br />
&lt;input&nbsp;name=&quot;file_extension&quot;&nbsp;id=&quot;file_extension&quot;&nbsp;size=&quot;5&quot;&nbsp;value=&quot;&lt;TMPL_VAR&nbsp;NAME=FILE_EXTENSION&nbsp;ESCAPE=HTML&gt;&quot;&nbsp;/&gt;<br />
&lt;p&gt;&lt;MT_TRANS&nbsp;phrase=&quot;Enter&nbsp;the&nbsp;archive&nbsp;file&nbsp;extension.&nbsp;This&nbsp;can&nbsp;take&nbsp;the&nbsp;form&nbsp;of&nbsp;'html',&nbsp;'shtml',&nbsp;'php',&nbsp;etc.&nbsp;Note:&nbsp;Do&nbsp;not&nbsp;enter&nbsp;the&nbsp;leading&nbsp;period&nbsp;('.').&quot;&gt;&nbsp;&nbsp;&lt;a&nbsp;href=&quot;#&quot;&nbsp;onclick=&quot;return&nbsp;openManual('blog_settings_publishing',&nbsp;'archive_file_extension')&quot;&nbsp;class=&quot;help&quot;&gt;?&lt;/a&gt;&lt;/p&gt;<br />
&lt;/div&gt;<br />
&lt;/div&gt;<br />
<br />
&lt;TMPL_IF&nbsp;NAME=SHOW_BUILD_OPTIONS&gt;<br />
&lt;div&nbsp;class=&quot;setting&quot;&gt;<br />
&lt;div&nbsp;class=&quot;label&quot;&gt;&lt;label&nbsp;for=&quot;dynamicity&quot;&gt;&lt;MT_TRANS&nbsp;phrase=&quot;Dynamic&nbsp;Publishing:&quot;&gt;&lt;/label&gt;&nbsp;&nbsp;&lt;a&nbsp;href=&quot;#&quot;&nbsp;onclick=&quot;return&nbsp;openManual('blog_settings_publishing',&nbsp;'dynamic_publishing')&quot;&nbsp;class=&quot;help&quot;&gt;?&lt;/a&gt;&lt;/div&gt;<br />
&lt;div&nbsp;class=&quot;field&quot;&gt;<br />
&lt;ul&gt;<br />
&lt;li&gt;&lt;input&nbsp;type=&quot;radio&quot;&nbsp;id=&quot;dynamic_none&quot;&nbsp;name=&quot;dynamicity&quot;&nbsp;value=&quot;none&quot;&lt;TMPL_IF&nbsp;NAME=DYNAMIC_NONE&gt;&nbsp;checked=&quot;on&quot;&lt;/TMPL_IF&gt;&nbsp;class=&quot;rb&quot;&nbsp;/&gt;&nbsp;&lt;label&nbsp;for=&quot;dynamic_none&quot;&gt;&lt;MT_TRANS&nbsp;phrase=&quot;Build&nbsp;all&nbsp;templates&nbsp;statically&quot;&gt;&lt;/label&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;input&nbsp;type=&quot;radio&quot;&nbsp;id=&quot;dynamic_archives&quot;&nbsp;name=&quot;dynamicity&quot;&nbsp;value=&quot;archives&quot;&lt;TMPL_IF&nbsp;NAME=DYNAMIC_ARCHIVES&gt;&nbsp;checked=&quot;checked&quot;&lt;/TMPL_IF&gt;&nbsp;class=&quot;rb&quot;&nbsp;/&gt;&nbsp;&lt;label&nbsp;for=&quot;dynamic_archives&quot;&gt;&lt;MT_TRANS&nbsp;phrase=&quot;Build&nbsp;only&nbsp;Archive&nbsp;Templates&nbsp;dynamically&quot;&gt;&lt;/label&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;input&nbsp;type=&quot;radio&quot;&nbsp;id=&quot;dynamic_custom&quot;&nbsp;name=&quot;dynamicity&quot;&nbsp;value=&quot;custom&quot;&lt;TMPL_IF&nbsp;NAME=DYNAMIC_CUSTOM&gt;&nbsp;checked=&quot;checked&quot;&lt;/TMPL_IF&gt;&nbsp;class=&quot;rb&quot;&nbsp;/&gt;&nbsp;&lt;label&nbsp;for=&quot;dynamic_custom&quot;&gt;&lt;MT_TRANS&nbsp;phrase=&quot;Set&nbsp;each&nbsp;template's&nbsp;Build&nbsp;Options&nbsp;separately&quot;&gt;&lt;/label&gt;&lt;/li&gt;<br />
&lt;/ul&gt;<br />
&lt;/div&gt;<br />
&lt;/div&gt;<br />
&lt;/TMPL_IF&gt;<br />
<span style="color:#ff0000">&lt;/TMPL_IF&gt;</span><br />
</pre></p>]]>
        
    </content>
</entry>

<entry>
    <title>用户权限改进(1)：让非管理员无法修改用户名</title>
    <link rel="alternate" type="text/html" href="http://www.movabletype.org.cn/2007/03/users_permissions.html" />
    <id>tag:www.movabletype.org.cn,2007://2.115</id>

    <published>2007-03-07T13:21:23Z</published>
    <updated>2008-11-18T02:05:06Z</updated>

    <summary>Movable Type 平台在用户的权限设置上，比较混乱。用户权限过大，会造成很多不便。如果你将MT提供给很多人使用，最好根据以下教程进行简单的设置。 MT平台下典型的级别其实简单可以分成三种，1、博客管理员，2、能创建博客的管理员，3、能创建用户和博客的管理员。 而 MT 默认下具有“Configure Weblog”权限就能够更改用户名、博客URL和存储路径，特别是更改储存路径，它很容易给博...</summary>
    <author>
        <name>bb</name>
        <uri>http://www.movabletype.org.cn/mt-cp.cgi?__mode=view&amp;blog_id=3&amp;id=2</uri>
    </author>
    
        <category term="MovableType 改进" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="zh-cn" xml:base="http://www.movabletype.org.cn/">
        <![CDATA[<p>Movable Type 平台在用户的权限设置上，比较混乱。用户权限过大，会造成很多不便。如果你将MT提供给很多人使用，最好根据以下教程进行简单的设置。<br />
<br />
MT平台下典型的级别其实简单可以分成三种，1、博客管理员，2、能创建博客的管理员，3、能创建用户和博客的管理员。<br />
<br />
而 MT 默认下具有“Configure Weblog”权限就能够更改用户名、博客URL和存储路径，特别是更改储存路径，它很容易给博客提供商造成不便。<br />
<br />
那么，该如何设定只有特定账号的用户才能够修改存储路径和网址信息呢？<br />
<br />
平生一笑提到过：Movable Type 程序\tmpl\cms目录下的list_blog.tmpl 文件是通过&lt;TMPL_IF&nbsp;NAME=CAN_EDIT_AUTHORS&gt;...&lt;/TMPL_IF&gt;来控制用户进入Blog后台时所显示的内容。我们可以根据这个思路对 MT用户权限来控制显示内容。<br />
<br />
我看了下BLOGCS的后台，ISTEF也是用相同的思路对博客权限进行整理，具体方法如下：<br />
<br />
第一、让设置只有可以创建博客的ID才能更改<br />
打开\tmpl\cms目录下的edit_author.tmpl 文件，将<br />
<pre>&lt;div&nbsp;class=&quot;setting&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&nbsp;class=&quot;label&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;label&nbsp;for=&quot;name&quot;&gt;&lt;MT_TRANS&nbsp;phrase=&quot;Username&quot;&gt;&nbsp;(*):&lt;/label&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&nbsp;class=&quot;field&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input&nbsp;name=&quot;name&quot;&nbsp;id=&quot;name&quot;&nbsp;value=&quot;&lt;TMPL_VAR&nbsp;NAME=NAME&nbsp;ESCAPE=HTML&gt;&quot;&nbsp;/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;&lt;MT_TRANS&nbsp;phrase=&quot;The&nbsp;name&nbsp;used&nbsp;by&nbsp;this&nbsp;author&nbsp;to&nbsp;login.&quot;&gt;&lt;/p&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;<br />
&lt;/div&gt;<br />
<br />
修改成：<br />
&lt;div&nbsp;class=&quot;setting&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&nbsp;class=&quot;label&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;label&nbsp;for=&quot;name&quot;&gt;&lt;MT_TRANS&nbsp;phrase=&quot;Username&quot;&gt;&nbsp;(*):&lt;/label&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&nbsp;class=&quot;field&quot;&gt;<br />
&lt;TMPL_IF&nbsp;NAME=CAN_CREATE_BLOG&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input&nbsp;name=&quot;name&quot;&nbsp;id=&quot;name&quot;&nbsp;value=&quot;&lt;TMPL_VAR&nbsp;NAME=NAME&nbsp;ESCAPE=HTML&gt;&quot;&nbsp;/&gt;<br />
&lt;TMPL_ELSE&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;TMPL_VAR&nbsp;NAME=NAME&nbsp;ESCAPE=HTML&gt;&lt;input&nbsp;type=&quot;hidden&quot;&nbsp;name=&quot;name&quot;&nbsp;id=&quot;name&quot;&nbsp;value=&quot;&lt;TMPL_VAR&nbsp;NAME=NAME&nbsp;ESCAPE=HTML&gt;&quot;&nbsp;/&gt;<br />
&lt;/TMPL_IF&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;&lt;MT_TRANS&nbsp;phrase=&quot;The&nbsp;name&nbsp;used&nbsp;by&nbsp;this&nbsp;author&nbsp;to&nbsp;login.&quot;&gt;&lt;/p&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;<br />
&lt;/div&gt;</pre></p>]]>
        
    </content>
</entry>

<entry>
    <title>“导入/导出”功能优化(2)：让导出文件包含blog的静态命名</title>
    <link rel="alternate" type="text/html" href="http://www.movabletype.org.cn/2007/03/import_export_url.html" />
    <id>tag:www.movabletype.org.cn,2007://2.112</id>

    <published>2007-03-06T01:08:36Z</published>
    <updated>2008-11-18T02:05:06Z</updated>

    <summary>MT 的导出导入一直很规范，只是导出文件不包含静态链接命名，这给很多搬家的人带来不便。还是路杨给大家带来一个有用的HACK，大家可以根据下列方法进行修改。 修改方法：打开lib/MT/ImportExport.pm 模块。 先改导出： 定位函数sub export{} 在     AUTHOR:      TITLE:      STATUS:      ALLOW COMMENTS:      ...</summary>
    <author>
        <name>bb</name>
        <uri>http://www.movabletype.org.cn/mt-cp.cgi?__mode=view&amp;blog_id=3&amp;id=2</uri>
    </author>
    
        <category term="MovableType 改进" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="zh-cn" xml:base="http://www.movabletype.org.cn/">
        <![CDATA[<p>MT 的导出导入一直很规范，只是导出文件不包含静态链接命名，这给很多搬家的人带来不便。还是路杨给大家带来一个有用的HACK，大家可以根据下列方法进行修改。<br />
<br />
修改方法：打开lib/MT/ImportExport.pm 模块。<br />
先改导出： 定位函数sub export{}<br />
在<blockquote><br />
<br />
    AUTHOR: <$MTEntryAuthor strip_linefeeds="1"$><br />
    TITLE: <$MTEntryTitle strip_linefeeds="1"$><br />
    STATUS: <$MTEntryStatus strip_linefeeds="1"$><br />
    ALLOW COMMENTS: <$MTEntryFlag flag="allow_comments"$><br />
    CONVERT BREAKS: <$MTEntryFlag flag="convert_breaks"$><br />
    ALLOW PINGS: <$MTEntryFlag flag="allow_pings"$><br />
</blockquote><br />
下面添加：<br />
<blockquote><br />
    BASENAME: <$MTEntryBasename strip_linefeeds="1"$></blockquote><br />
<br />
再改 导入；定位函数sub do_import { }<br />
找到<br />
<blockquote><br />
    elsif ($key eq 'TITLE') {    $entry->title($val);  }<br />
</blockquote><br />
下面添加<br />
<blockquote><br />
    elsif ($key eq 'BASENAME') {    $entry->basename($val) if $val;  }</blockquote><br />
<br />
大功完成。<br />
修改完成后，测试了几次导入、导出，程序工作正常。<br />
<br />
注意 : 函数 $entry->basename ，标签 EntryBasename 什么的相关资料你可以从 lib/MT/Entry.pm ,lib/MT/Template.pm ,lib/MT/Template/ContextHandlers.pm 等模块中获取映射函数。<br />
<br />
文章引自：<a href="http://easun.org/archives/mt_hack_importexport.html" target="_blank">http://easun.org/archives/mt_hack_importexport.html</a></p>]]>
        
    </content>
</entry>

<entry>
    <title>“导入/导出”功能优化(1)：让导出文件包含tags</title>
    <link rel="alternate" type="text/html" href="http://www.movabletype.org.cn/2007/03/tags.html" />
    <id>tag:www.movabletype.org.cn,2007://2.116</id>

    <published>2007-03-04T23:44:15Z</published>
    <updated>2008-11-18T02:05:06Z</updated>

    <summary><![CDATA[MT 的"导入/导出"功能不包含Tags 这给很多朋友代理不便，还要路杨优化了这个HACK，依照下列方法进行修改即可。 1、先修改导出： 打开lib/MT/ImportExport.pm 模块，找到 AUTHOR:&nbsp;&lt;$MTEntryAuthor&nbsp;strip_linefeeds=&quot;1&quot;$&gt; TITLE:&nbsp;&lt;$MTEntryTitl...]]></summary>
    <author>
        <name>bb</name>
        <uri>http://www.movabletype.org.cn/mt-cp.cgi?__mode=view&amp;blog_id=3&amp;id=2</uri>
    </author>
    
        <category term="MovableType 改进" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="zh-cn" xml:base="http://www.movabletype.org.cn/">
        <![CDATA[<p>MT 的"导入/导出"功能不包含Tags 这给很多朋友代理不便，还要路杨优化了这个HACK，依照下列方法进行修改即可。<br />
<br />
1、先修改导出：<br />
打开lib/MT/ImportExport.pm 模块，找到<br />
<blockquote><br />
AUTHOR:&nbsp;&lt;$MTEntryAuthor&nbsp;strip_linefeeds=&quot;1&quot;$&gt;<br />
TITLE:&nbsp;&lt;$MTEntryTitle&nbsp;strip_linefeeds=&quot;1&quot;$&gt;<br />
STATUS:&nbsp;&lt;$MTEntryStatus&nbsp;strip_linefeeds=&quot;1&quot;$&gt;<br />
ALLOW&nbsp;COMMENTS:&nbsp;&lt;$MTEntryFlag&nbsp;flag=&quot;allow_comments&quot;$&gt;<br />
CONVERT&nbsp;BREAKS:&nbsp;&lt;$MTEntryFlag&nbsp;flag=&quot;convert_breaks&quot;$&gt;<br />
ALLOW&nbsp;PINGS:&nbsp;&lt;$MTEntryFlag&nbsp;flag=&quot;allow_pings&quot;$&gt;</blockquote><br />
<br />
在其下添加：<br />
<br />
<blockquote>&lt;MTEntryIfTagged&gt;<br />
Tags:&nbsp;&lt;MTEntryTags&gt;&lt;$MTTagName$&gt;,&lt;/MTEntryTags&gt;<br />
&lt;/MTEntryIfTagged&gt;</blockquote><br />
<br />
这样导出的时候就会有Tags导出了，其中分割符号是","。<br />
<br />
2、修改导出，<br />
同样是lib/MT/ImportExport.pm 模块，找到<blockquote><br />
elsif ($key eq 'TITLE') {    $entry->title($val);  }</blockquote><br />
在其下添加：<blockquote><br />
<br />
    elsif ($key eq 'Tags') {<br />
        if ($val)<br />
                {<br />
                  $cb->(MT->translate("Find tags ('[_1]')...\n", $val));<br />
                   my @tagnames = split(',',$val);<br />
                   $entry->add_tags(@tagnames);<br />
                   }<br />
    }<br />
</blockquote><br />
大功完成。<br />
说明：$cb->(MT->translate("Find tags ('[_1]')...\n", $val)); 这句是输出的提示，可以删除之，如果你是完美主义者，你还应该在MT::L10N::zh_cn模块（语言包）中添加<br />
<br />
<blockquote>"Find tags ('[_1]')...\n" => "在导入文件中发现Tags ( '[_1]')...\n",</blockquote><br />
<br />
注意 : 同样，函数 $entry->add_tags ，标签 MTEntryIfTagged，MTEntryTags，MTTagName，什么的相关资料你可以从 lib/MT/Tag.pm ,lib/MT/Template.pm ,lib/MT/Template/ContextHandlers.pm 等模块中获取映射函数。<br />
<br />
文章引自：<a href="http://easun.org/archives/mt_hack_importexport_tags.html" target="_blank">http://easun.org/archives/mt_hack_importexport_tags.html</a></p>]]>
        
    </content>
</entry>

<entry>
    <title>防垃圾评论的策略(3)：AutoIPBan插件</title>
    <link rel="alternate" type="text/html" href="http://www.movabletype.org.cn/2007/03/autoipban.html" />
    <id>tag:www.movabletype.org.cn,2007://2.114</id>

    <published>2007-03-04T11:56:00Z</published>
    <updated>2008-11-18T02:05:06Z</updated>

    <summary>如果以上两个策略还无法阻止垃圾评论，那么我们只好通过MT自带的IP封禁功能将其IP地址进行封禁。 而MT中你只能单个复制IP进行封禁。这里我象大家介绍一个能将你的垃圾留言和垃圾引用通告里的IP地址直接添加到你的IP封禁List里的插件——AutoIPBan。 安装方法： 下载AutoIPBan.zip。解压后后把相关文件上传到Plugins文件夹中即可。 使用方法： 打开你的MT里的评论一项那里，...</summary>
    <author>
        <name>bb</name>
        <uri>http://www.movabletype.org.cn/mt-cp.cgi?__mode=view&amp;blog_id=3&amp;id=2</uri>
    </author>
    
        <category term="MovableType 改进" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="zh-cn" xml:base="http://www.movabletype.org.cn/">
        <![CDATA[<p>如果以上两个策略还无法阻止垃圾评论，那么我们只好通过MT自带的IP封禁功能将其IP地址进行封禁。<br />
<br />
而MT中你只能单个复制IP进行封禁。这里我象大家介绍一个能将你的垃圾留言和垃圾引用通告里的IP地址直接添加到你的IP封禁List里的插件——<a href="http://code.as-is.net/wiki/AutoIPBan_Plugin" target="_blank">AutoIPBan</a>。<br />
<br />
安装方法：<br />
下载<a href="http://code.as-is.net/wiki/CategoryMovableType?action=AttachFile&do=get&target=AutoIPBan.zip" target="_blank">AutoIPBan.zip</a>。解压后后把相关文件上传到Plugins文件夹中即可。<br />
<br />
使用方法：<br />
打开你的MT里的评论一项那里，你会发现，右边的地方会多出一个Add to IPBanList一项，选择你要追加的留言之后，按一下执行就会自动的将SPAM留言的IP地址输入到IP封禁的List里了。当然你一次性的将垃圾留言全部选择追加上去也是没有问题的，即使是重复的IP地址也只会添加一次。<br />
<br />
如果你使用MT3.2以上的版本，你需要在mt-config.cgi中追加：<br />
<blockquote>ShowIPInformation 1</blockquote><br />
才能在博客设置中显示IPBANG页面。</p>]]>
        
    </content>
</entry>

<entry>
    <title>防SPAM的策略(最终版)：使用JavaScript对付SPAM</title>
    <link rel="alternate" type="text/html" href="http://www.movabletype.org.cn/2007/03/spam_js.html" />
    <id>tag:www.movabletype.org.cn,2007://2.111</id>

    <published>2007-03-03T11:51:43Z</published>
    <updated>2008-11-18T02:05:06Z</updated>

    <summary>上次写的“防SPAM的策略(4)：doEntity插件结合TCode for MT”其中有个缺陷这样可以实现源码中没有引用URL且不解释JS显示不真实的引用链接，只是这个不真实地址是Movable Type默认的TrackBack地址，如果机器人攻击这个错误的连接还是会造成服务器的损害。 之后在毕索那看见了一篇文章“AntiSpam--用动态文件显示trackback地址。 于是我想到了ANTIS...</summary>
    <author>
        <name>bb</name>
        <uri>http://www.movabletype.org.cn/mt-cp.cgi?__mode=view&amp;blog_id=3&amp;id=2</uri>
    </author>
    
        <category term="MovableType 改进" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="zh-cn" xml:base="http://www.movabletype.org.cn/">
        <![CDATA[<p>上次写的“<a href="http://mtblog.org/_plugins/tcode_doentity.html">防SPAM的策略(4)：doEntity插件结合TCode for MT</a>”其中有个缺陷<blockquote>这样可以实现源码中没有引用URL且不解释JS显示不真实的引用链接，只是这个不真实地址是Movable Type默认的TrackBack地址，如果机器人攻击这个错误的连接还是会造成服务器的损害。</blockquote><br />
<br />
之后在毕索那看见了一篇文章“<a href="http://blog.leavic.com/archives/000082.html" target="_blank">AntiSpam--用动态文件显示trackback地址</a>。<br />
<br />
于是我想到了ANTISPAM的最终方法：原理请大家看相关策略的 <a href="http://mtblog.org/_install/change_name.html">1</a>、<a href="http://mtblog.org/_plugins/doentity.html">2</a>、<a href="http://mtblog.org/_plugins/tcode_js_link.html">3</a>、<a href="http://mtblog.org/_plugins/tcode_doentity.html">4</a>。<br />
<br />
这里只对最后的方法进行说明：<br />
1、打开mt-site.js模版，在低部添加一个字符串变量，用这个变量来保存我们的trackback脚本名：<br />
<blockquote>var tbscript="&lt;$MTCGIPath$&gt;<$MTTrackbackScript$>/"</blockquote><br />
<br />
2、将单篇文章中的：<br />
<blockquote>&lt;MTIfPingsAccepted&gt;&lt;p&gt;TrackBack&nbsp;URL&nbsp;for&nbsp;this&nbsp;entry:&lt;br&nbsp;/&gt;<br />
<span style="color:#ff0000">&lt;$MTEntryTrackbackLink$&gt;</span>&lt;/p&gt;&lt;/MTIfPingsAccepted&gt;</blockquote><br />
改为：<blockquote>&lt;MTIfPingsAccepted&gt;&lt;p&gt;TrackBack&nbsp;URL&nbsp;for&nbsp;this&nbsp;entry:&lt;br&nbsp;/&gt;<br />
<span style="color:#ff0000">&lt;script&nbsp;type=&quot;text/javascript&quot;&gt;<br />
document.write(tbscript)<br />
&lt;/script&gt;&lt;$MTEntryTrackbackID$&gt;</span>&lt;/p&gt;&lt;/MTIfPingsAccepted&gt;</blockquote><br />
<br />
3、修改mt-tb.cgi的文件名，如：<br />
<blockquote>new_trackback_file_name.cgi</blockquote><br />
<br />
4、在mt-config.cgi中添加<br />
<blockquote>TrackbackScript new_trackback_file_name.cgi</blockquote><br />
<br />
整理完毕，以后你所要做的仅仅是在后台出现垃圾引用的时候，更改“引用文件名mt-tb.cgi”和“mt-config.cgi”中所添加的引用文件识别标签，即3、4步。然后重建mt-site.js文件(多用户就不用去管了，默认设置只要用户发文就会自动重建mt-site.js模版)。<br />
<br />
这样就能实现：<br />
1、改名躲避机器人针对性攻击<br />
2、让机器人在HTML源码中无法找到引用URL<br />
3、不解释js提供不真实的引用地址<br />
<br />
除了MT自带的spamlookup不装其他防御引用插件，原因是为了及时反馈引用链接是否被机器人所发现，以免造成服务器负荷过大。当然你可以结合Tcode，让不解释JS时完全不提供任何和引用有关系的连接，让机器人以为该文章不提供引用，而放弃用其他方法识别URL。</p>]]>
        
    </content>
</entry>

<entry>
    <title>防垃圾评论的策略(2)：安装CCode for MT</title>
    <link rel="alternate" type="text/html" href="http://www.movabletype.org.cn/2007/03/ccode.html" />
    <id>tag:www.movabletype.org.cn,2007://2.113</id>

    <published>2007-03-02T08:57:30Z</published>
    <updated>2008-11-18T02:05:06Z</updated>

    <summary>UPDATE：其实有策略(1)：Keystroke Plugin插件就足够了，装后就没见到垃圾评论了。 并且此插件主要是针对JS的，如果网友的浏览器不允许你站点的JS，就会导致评论失败。 路杨使用CCode for MT插件还发现一些漏网垃圾评论，所以建议大家装策略1即可。 今天安装TCode for MT，而官方版本为CCode and TCode for MT 3.3 version，其中CC...</summary>
    <author>
        <name>bb</name>
        <uri>http://www.movabletype.org.cn/mt-cp.cgi?__mode=view&amp;blog_id=3&amp;id=2</uri>
    </author>
    
        <category term="MovableType 改进" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="zh-cn" xml:base="http://www.movabletype.org.cn/">
        <![CDATA[<p>UPDATE：其实有策略(1)：<a href="http://mtblog.org/_plugins/keystroke.html">Keystroke Plugin插件</a>就足够了，装后就没见到垃圾评论了。<br />
并且此插件主要是针对JS的，如果网友的浏览器不允许你站点的JS，就会导致评论失败。<br />
路杨使用CCode for MT插件还发现一些漏网垃圾评论，所以建议大家装策略1即可。<br />
<br />
今天安装<a href="http://alogblog.com/movabletype/plugins/ccode_and_tcode_for_mt_33_version/" target="_blank">TCode for MT</a>，而官方版本为CCode and TCode for MT 3.3 version，其中CCode为垃圾评论防护。进入官方将此插件整合了，也就顺便将CCODE也安装上，反正防垃圾评论的多点也没事。<br />
<br />
安装使用方法：<br />
1、<a href="http://alogblog.com/downloads/dn.cgi?CTCode-3.3.01.tar.gz" target="_blank">下载该插件</a>，<br />
<br />
2、解压上传到相关目录<br />
<br />
3、然后将CTCode-3.3.01\default_templates\obfuscator.js 文件的内容，添加到MT默认模版中default_templates/site_javascript.tmpl 文件的末尾(或者直接添加到用户模版Site JavaScript mt-site.js中去)，然后刷新模版即可。<br />
<br />
4、在Individual Entry Archive template 和 Comment Preview template.和“系统评论列表”(MT3.3以后这个模版需要自己添加)模版中<br />
<blockquote>在&lt;input&nbsp;type=&quot;hidden&quot;&nbsp;name=&quot;entry_id&quot;&nbsp;value=&quot;&lt;$MTEntryID$&gt;&quot;&nbsp;/&gt;<br />
下面添加<br />
<$MTEntryCCode$></blockquote><br />
<br />
重建全站即可。</p>]]>
        
    </content>
</entry>

<entry>
    <title>防垃圾评论的策略(1)：安装Keystroke Plugin</title>
    <link rel="alternate" type="text/html" href="http://www.movabletype.org.cn/2007/03/keystroke.html" />
    <id>tag:www.movabletype.org.cn,2007://2.109</id>

    <published>2007-03-01T07:33:04Z</published>
    <updated>2008-11-18T02:05:05Z</updated>

    <summary>昨天给CNLOG装了个预防垃圾留言的Keystroke插件，该插件我曾经试用过，非常好使，装上他基本能屏蔽所有垃圾评论。 首先下载 keystrokes-0.1.5.zip之后，解冻后将文件包中的两个文件分别安装到下列目录当中 MT/plugins/keystrokes.pl MT/php/plugins/function.MTKeystrokes.php 然后在“单篇日记归档”、和“系统”模块中...</summary>
    <author>
        <name>bb</name>
        <uri>http://www.movabletype.org.cn/mt-cp.cgi?__mode=view&amp;blog_id=3&amp;id=2</uri>
    </author>
    
        <category term="MovableType 改进" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="zh-cn" xml:base="http://www.movabletype.org.cn/">
        <![CDATA[<p>昨天给<a href="http://www.CNLOG.org" target="_blank">CNLOG</a>装了个预防垃圾留言的<a href="http://overstated.net/projects/mt-keystrokes/" target="_blank">Keystroke</a>插件，该插件我曾经试用过，非常好使，装上他基本能屏蔽所有垃圾评论。<br />
<br />
首先下载 <a href="http://overstated.net/projects/mt-keystrokes/keystrokes-0.1.4.zip">keystrokes-0.1.5.zip</a>之后，解冻后将文件包中的两个文件分别安装到下列目录当中<br />
<blockquote>MT/plugins/keystrokes.pl<br />
<br />
MT/php/plugins/function.MTKeystrokes.php</blockquote><br />
<br />
然后在“<strong>单篇日记归档</strong>”、和“系统”模块中的“<strong>评论预览模板</strong>”“<strong>评论列表模板</strong>(可能直接调用CGI不好吧，MT3.3后已经去掉此模版)”的3个地方追加下面的“红字”标签。<br />
<br />
・・・・・・<br />
<br />
&lt;MTEntryIfCommentsOpen&gt;&nbsp;<br />
&lt;form&nbsp;method=&quot;post&quot;&nbsp;action=&quot;&lt;$MTCGIPath$&gt;&lt;$MTCommentScript$&gt;&quot;&nbsp;<br />
name=&quot;comments_form&quot;&nbsp;onsubmit=&quot;if&nbsp;(this.bakecookie.checked)&nbsp;rememberMe(this)&quot;&gt;<br />
<span style="color:#ff0000">&lt;$MTKeystrokes$&gt;</span><br />
&lt;input&nbsp;type=&quot;hidden&quot;&nbsp;name=&quot;static&quot;&nbsp;value=&quot;1&quot;&nbsp;/&gt;<br />
<br />
・・・・・・<br />
<br />
&lt;p&nbsp;id=&quot;comments-open-text&quot;&gt;<br />
&lt;label&nbsp;for=&quot;comment-text&quot;&gt;评论:&nbsp;&lt;MTIfAllowCommentHTML&gt;(你可以使用&nbsp;HTML&nbsp;标签设置风格)&lt;/MTIfAllowCommentHTML&gt;&lt;/label&gt;<br />
&lt;textarea&nbsp;id=&quot;comment-text&quot;&nbsp;name=&quot;text&quot;&nbsp;rows=&quot;15&quot;&nbsp;<br />
cols=&quot;50&quot;<span style="color:#ff0000">&nbsp;onkeypress=&quot;keystrokes(this.form)&quot;&nbsp;</span>&gt;&lt;/textarea&gt;<br />
&lt;/p&gt;<br />
<br />
&lt;div&nbsp;id=&quot;comments-open-footer&quot;&nbsp;class=&quot;comments-open-footer&quot;&gt;<br />
&lt;input&nbsp;type=&quot;submit&quot;&nbsp;accesskey=&quot;v&quot;&nbsp;name=&quot;preview&quot;&nbsp;id=&quot;comment-preview&quot;&nbsp;value=&quot;预览&quot;&nbsp;/&gt;<br />
&lt;input&nbsp;type=&quot;submit&quot;&nbsp;accesskey=&quot;s&quot;<span style="color:#ff0000">&nbsp;onclick=&quot;keystrokes(this.form)&quot;</span>&nbsp;name=&quot;post&quot;&nbsp;<br />
id=&quot;comment-post&quot;&nbsp;value=&quot;发表&quot;/&gt;<br />
&lt;/div&gt;<br />
<br />
・・・・・・<br />
<br />
修改完以后再重建一下你的MT就可以了。如果安装了该插件，但没整理模版，将导致评论无法提交。如果MT平台中有多个用户则需要逐个修改模版，建议先修改MT默认模版，再使用Template Backup and Refresh 结合Power Rebuild插件进行大规模重建。</p>]]>
        
    </content>
</entry>

<entry>
    <title>防SPAM的策略(4)：TCode for MT结合doEntity插件</title>
    <link rel="alternate" type="text/html" href="http://www.movabletype.org.cn/2007/02/tcode_doentity.html" />
    <id>tag:www.movabletype.org.cn,2007://2.108</id>

    <published>2007-02-28T03:14:27Z</published>
    <updated>2008-11-18T02:05:05Z</updated>

    <summary><![CDATA[此文仅是原理说明，具体防SPAM的最终策略请看： “防SPAM的策略(最终版)：使用JavaScript对付SPAM” 首先更改引用mt-tb.cgi的文件名，然后安装doEntity插件和TCode for MT。 上传覆盖，再将“单篇文章汇总”和“系统引用”模版中： &lt;MTIfPingsAccepted&gt;&lt;p&gt;TrackBack&nbsp;URL&nbsp;for&nb...]]></summary>
    <author>
        <name>bb</name>
        <uri>http://www.movabletype.org.cn/mt-cp.cgi?__mode=view&amp;blog_id=3&amp;id=2</uri>
    </author>
    
        <category term="MovableType 改进" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="zh-cn" xml:base="http://www.movabletype.org.cn/">
        <![CDATA[<p><strong>此文仅是原理说明，具体防SPAM的最终策略请看：</strong><br />
<a href="http://mtblog.org/_hacks/spam_js.html">“防SPAM的策略(最终版)：使用JavaScript对付SPAM”</a><br />
<br />
首先更改引用mt-tb.cgi的文件名，然后安装doEntity插件和TCode for MT。<br />
<br />
上传覆盖，再将“单篇文章汇总”和“系统引用”模版中：<br />
<blockquote>&lt;MTIfPingsAccepted&gt;&lt;p&gt;TrackBack&nbsp;URL&nbsp;for&nbsp;this&nbsp;entry:&lt;br&nbsp;/&gt;<br />
&lt;$MTEntryTrackbackLink$&gt;&lt;/p&gt;&lt;/MTIfPingsAccepted&gt;</blockquote><br />
改为<pre>&lt;MTIfPingsAccepted&gt;&lt;p&gt;TrackBack&nbsp;URL&nbsp;for&nbsp;this&nbsp;entry:&lt;br&nbsp;/&gt;<br />
&lt;$MTCGIPath&nbsp;doentity=&quot;1&quot;$&gt;&lt;$MTTrackbackScript&nbsp;doentity=&quot;1&quot;$&gt;/&lt;$MTEntryTrackbackID$&gt;<br />
&lt;/p&gt;&lt;/MTIfPingsAccepted&gt;</pre><br />
<br />
这样可以实现源码中没有引用URL且不解释JS显示不真实的引用链接，只是这个不真实地址是MT默认的TrackBack地址，如果机器人攻击这个错误的连接还是会造成服务器的损害。</p>]]>
        
    </content>
</entry>

<entry>
    <title>防SPAM的策略(3)：安装TCode使不解释js提供不真实的引用地址</title>
    <link rel="alternate" type="text/html" href="http://www.movabletype.org.cn/2007/02/tcode_js_link.html" />
    <id>tag:www.movabletype.org.cn,2007://2.104</id>

    <published>2007-02-27T01:22:53Z</published>
    <updated>2008-11-18T02:05:04Z</updated>

    <summary>此文仅是原理说明，具体防SPAM的最终策略请看： “防SPAM的策略(最终版)：使用JavaScript对付SPAM” 一般SPAM机器人都是通过抓取网页来分析TrackBackLink。而抓网页的SPAM机器人一般都是不会去解释js的，所以我们可以通过JS对他们进行欺骗，让它们只能获取部分（不真实的）TrackBackLink。考虑到大多数垃圾引用都是来自国外，建议在JS后面进行中文注释说明。 ...</summary>
    <author>
        <name>bb</name>
        <uri>http://www.movabletype.org.cn/mt-cp.cgi?__mode=view&amp;blog_id=3&amp;id=2</uri>
    </author>
    
        <category term="MovableType 改进" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="zh-cn" xml:base="http://www.movabletype.org.cn/">
        <![CDATA[<p><strong>此文仅是原理说明，具体防SPAM的最终策略请看：</strong><br />
<a href="http://mtblog.org/_hacks/spam_js.html">“防SPAM的策略(最终版)：使用JavaScript对付SPAM”</a><br />
<br />
一般SPAM机器人都是通过抓取网页来分析TrackBackLink。而抓网页的SPAM机器人一般都是不会去解释js的，所以我们可以通过JS对他们进行欺骗，让它们只能获取部分（不真实的）TrackBackLink。考虑到大多数垃圾引用都是来自国外，建议在JS后面进行中文注释说明。<br />
<br />
依照这个原理我们可以用以下方法进行“不解释js提供不真实的引用地址”<br />
<br />
1、安装<a href="http://alogblog.com/movabletype/plugins/ccode_and_tcode_for_mt_33_version/" target="_blank">TCode for MT</a>：<br />
<a href="http://alogblog.com/downloads/dn.cgi?CTCode-3.3.01.tar.gz" target="_blank">下载该插件</a>，官方版本为CCode and TCode for MT 3.3 version，其中CCode为垃圾评论防护，我觉得“<a href="http://mtblog.org/_plugins/keystroke.html" target="_blank">防垃圾评论的策略(1)：安装Keystroke Plugin</a>”已经完全够用了，所以将CCode禁用了。<br />
<br />
然后将CTCode-3.3.01\default_templates\obfuscator.js 文件的内容，添加到MT默认模版中default_templates/site_javascript.tmpl 文件的末尾(或者直接添加到用户模版Site JavaScript mt-site.js中去)，然后刷新模版即可。具体原理介绍可查看<a href="http://easun.org/archives/tcode_4_mt_plugin.html" target="_blank">路杨的介绍</a>。<br />
<br />
2、直接修改JS欺骗机器人，在“单篇日记归档”和“系统引用列表”的引用通告那里，对下面的字样进行修改，但比TCode for MT好的地方是，你的不真实地址不在是MT默认的TrackBack地址，这样可以减少SPAM对系统的破坏。<br />
<br />
将：<br />
<blockquote>&lt;MTIfPingsAccepted&gt;&lt;p&gt;TrackBack&nbsp;URL&nbsp;for&nbsp;this&nbsp;entry:&lt;br&nbsp;/&gt;<br />
<span style="color:#ff0000">&lt;$MTEntryTrackbackLink&nbsp;doentity=&quot;1&quot;$&gt;</span>&lt;/p&gt;&lt;/MTIfPingsAccepted&gt;</blockquote><br />
<br />
其中的&lt;$MTEntryTrackbackLink&nbsp;doentity=&quot;1&quot;$&gt;标签是通过<a href="http://mtblog.org/_plugins/doentity.html">防SPAM的策略(2)：doEntity插件</a>的修改结果，2和3一个是针对网页源码，一个则是针对JS。其实在CCode and TCode for MT大力推广期间，我想机器人也会随之优化，所以我在最终版中的方法不使用Tcode插件。<br />
改为：<br />
<blockquote>&lt;MTIfPingsAccepted&gt;&lt;p&gt;TrackBack&nbsp;URL&nbsp;for&nbsp;this&nbsp;entry:&lt;br&nbsp;/&gt;<br />
&lt;input&nbsp;type=&quot;text&quot;&nbsp;id=&quot;trackback-url&quot;&nbsp;size=&quot;70&quot;&nbsp;value=&quot;http://lblog.org/mt-tb.cgi/217&quot;&nbsp;<br />
onClick=&quot;this.select();&quot;&nbsp;/&gt;&lt;br&nbsp;/&gt;(只有允许当前页面的JavaScript&nbsp;才能查看到真实的引用链接)<br />
&lt;/p&gt;&lt;/MTIfPingsAccepted&gt;<br />
&lt;script&gt;document.getElementById('trackback-url').value&nbsp;=&nbsp;[&quot;&lt;$MTCGIPath$&gt;&quot;,&nbsp;<br />
&quot;&lt;$MTTrackbackScript$&gt;&quot;,&nbsp;&quot;/&lt;$MTEntryTrackbackID$&gt;&quot;].join(&quot;&quot;);&lt;/script&gt;</blockquote><br />
(上面实际上是没有改行的)<br />
<br />
上面的http://bblog.biz/mt-tb.cgi/217 其实是个不存在的地址，而真正的引用JS是通过下面的JS给予显示的。<br />
<br />
你可以试着将IE或者Firefox浏览器的JAVA功能改为无效再来看引用通告那个地方，你会发现引用通告所显示的地址就是上面设定的这个http://bblog.biz/mt-tb.cgi/217地址。</p>]]>
        
    </content>
</entry>

<entry>
    <title>防SPAM的策略(2)：doEntity插件让机器人在HTML源码中无法找到引用URL</title>
    <link rel="alternate" type="text/html" href="http://www.movabletype.org.cn/2007/02/doentity.html" />
    <id>tag:www.movabletype.org.cn,2007://2.103</id>

    <published>2007-02-26T00:00:27Z</published>
    <updated>2008-11-18T02:05:04Z</updated>

    <summary><![CDATA[此文仅是原理说明，具体防SPAM的最终策略请看： “防SPAM的策略(最终版)：使用JavaScript对付SPAM” 我一直觉得垃圾引用的问题不在于对引用性质的识别，而是如何让那些机器人无法抓取真实的引用地址，使之不会给服务器造成过大的负荷。 今天我要介绍的防止引用SPAM的策略(2)：让机器人在HTML源码中无法找到引用URL 1、删除“单篇日记归档”中的&lt;$MTEntryTrackba...]]></summary>
    <author>
        <name>bb</name>
        <uri>http://www.movabletype.org.cn/mt-cp.cgi?__mode=view&amp;blog_id=3&amp;id=2</uri>
    </author>
    
        <category term="MovableType 改进" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="zh-cn" xml:base="http://www.movabletype.org.cn/">
        <![CDATA[<p><strong>此文仅是原理说明，具体防SPAM的最终策略请看：</strong><br />
<a href="http://mtblog.org/_hacks/spam_js.html">“防SPAM的策略(最终版)：使用JavaScript对付SPAM”</a><br />
<br />
我一直觉得垃圾引用的问题不在于对引用性质的识别，而是如何让那些机器人无法抓取真实的引用地址，使之不会给服务器造成过大的负荷。<br />
<br />
今天我要介绍的防止引用SPAM的策略(2)：<strong>让机器人在HTML源码中无法找到引用URL</strong><br />
<br />
1、删除“单篇日记归档”中的&lt;$MTEntryTrackbackData$&gt;标签，Sixapart User Manual:关于 MTEntryTrackbackData是这样解释的<br />
<blockquote>Outputs the machine-readable TrackBack RDF for "pinging" corresponding to the entry.</blockquote><br />
其作用是，所以我们需要删除这个标签，让机器人无法从源码中找到应用地址，而也就是说，这个函数的用处就是为了让引用的URL地址能够被机械自动的取得。一个对想引用这篇文章投稿的人来说，是个很有用的功能，但是它却成为了Spam机器人的MT重要入口处。<br />
<br />
2、<a href="http://www.bayashi.net/archives/entry/2006/000279.html" target="_blank">安装doEntity插件</a>，这个插件是将你的引用地址改为用实体参考(Entity reference)来书写，以达到难以识别的目的。<br />
<blockquote>比如说我的上一篇文章的引用地址是<br />
http://blog.blogcs.org/trackback_mt-tb.cgi/1779.1387312851<br />
但是你看看那篇文章后面的Source，引用地址那里显示的是<br />
http://blog.blogcs.org...</blockquote><br />
<br />
这个插件安装很简单，到这里<a href="http://www.bayashi.net/archives/files/doentity1.11.lzh" target="_blank">下载doEntity插件</a>，解冻的文件名改为doentity.pl之后上传到你的Plubins文件夹里，然后<br />
<blockquote>将引用地址的<br />
<$MTEntryTrackbackLink$><br />
改为<br />
<$MTEntryTrackbackLink doentity="1"$></blockquote><br />
其中 doentity="1"对其他标签也适用，就是说只要在MT标签后面添加 doentity="1"就能让URL变成实体参考(Entity reference)。<br />
<br />
最后再重新构筑一下你的Blog就可以了。</p>]]>
        
    </content>
</entry>

<entry>
    <title>防SPAM的策略(1)：改名躲避机器人针对性攻击</title>
    <link rel="alternate" type="text/html" href="http://www.movabletype.org.cn/2007/02/change_name.html" />
    <id>tag:www.movabletype.org.cn,2007://2.107</id>

    <published>2007-02-24T23:42:12Z</published>
    <updated>2008-11-18T02:05:05Z</updated>

    <summary>此文仅是原理说明，具体防SPAM的最终策略请看： “防SPAM的策略(最终版)：使用JavaScript对付SPAM” mt-tb.cgi和mt-comments.cgi的改名方法： 首先修改这两文件名，并在mt-config.cgi添加： TrackbackScript new_trackback_file_name.cgi CommentScript new_comments_file_nam...</summary>
    <author>
        <name>bb</name>
        <uri>http://www.movabletype.org.cn/mt-cp.cgi?__mode=view&amp;blog_id=3&amp;id=2</uri>
    </author>
    
        <category term="MovableType 改进" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="zh-cn" xml:base="http://www.movabletype.org.cn/">
        <![CDATA[<p><strong>此文仅是原理说明，具体防SPAM的最终策略请看：</strong><br />
<a href="http://mtblog.org/_hacks/spam_js.html">“防SPAM的策略(最终版)：使用JavaScript对付SPAM”</a><br />
<br />
mt-tb.cgi和mt-comments.cgi的改名方法：<br />
首先修改这两文件名，并在mt-config.cgi添加：<br />
<blockquote><br />
TrackbackScript new_trackback_file_name.cgi<br />
CommentScript new_comments_file_name.cgi<br />
</blockquote><br />
然后重建全站。<br />
<br />
这样针对mt-tb和mt-comments的spam将无效。<br />
个人的Blog可以常改，建议第一次安装 MT 就将这两个文件名更改。<br />
<br />
Update:mt-comments尽量不用去改名，因为大多数评论SPAM都是针对文章单页面直接提交，而不是直接通过mt-comments.cgi。并且改了mt-comments会导致TypeKey ID无法使用，TypeKey ID是默认连接mt-comments的。</p>]]>
        
    </content>
</entry>

</feed>
