Windows(IIS)平台下MT2.661的安装、汉化、配置及插件的安装
关于本文:
本文介绍的MT安装在Windows XP + IIS5.1环境下搭建成功,在其它Win32平台下的搭建步骤也大体相同。安装使用的MT是2.661英文版,并使用中文语言包进行汉化,同时添加了几个比较常用的插件。网上可以找到安装步骤更为简便的汉化安装版,本文不做介绍,有兴趣的可以参考《Movable Type 完全手册》(http://mtbook.net/),还有安装配置视频(http://isrc.nchu.edu.tw/phpadmin/MovableType.htm)。
准备工作:
1. 下载ActivePerl
在官方主页 http://www.activestate.com/ 注册后即可免费下载各种平台下的标准版。
我使用的是 ActivePerl 5.8.6.811 Windows MSI 安装版,可直接点击以下链接下载:
http://downloads.activestate.com/ActivePerl/Windows/5.8/ActivePerl-5.8.6.811-MSWin32-x86-122208.msi
2. 下载MT源码
现在官方 http://www.movabletype.org/ 的MT代码不再提供下载了,好像只有原来拥有MT account的用户才可以下载。网上有一些说法是注册一个TypeKey就可以下载,但在写这篇文章时,注册后登录下载却提示“找不到用户记录”,不能肯定是不是个别情况,大家不妨去试试看吧。
注册TypeKey:
如果你还没有 TypeKey 帐户,可以点击以下链接申请一个:
https://www.typekey.com/t/typekey/register?lang=en-us
提交完你的注册信息后,你将收到一封注册确认邮件,打开邮件中提示的链接即可激活你的帐户。
登录下载:
TypeKey 登录页面:https://www.typekey.com/t/typekey
MT 下载登录页面:https://secure.sixapart.com/t/account
成功登录后应该出现以下界面(https://secure.sixapart.com/t/account):

这里有两个版本可以下载,第一个是2.661版,它是MT的最后的一个多用户免费版;如果单用户能够满足你的要求,则可以下载3.16版本的。以下是官方对3.16免费使用的说明:
“You can download an unsupported version of Movable Type for free. You're limited to 1 author and 3 weblogs. The paid license benefits below are not available with the free version.”
即免费版本有一个作者和三个网志的限制,功能上也比收费版的要差一些,既然是免费版本,也顾不了那么多了。
我选择下载Movable Type 2.661版本,接下来选择完整版(Full version)和.zip压缩文件格式(.zip(Good for Windows servers)),如图:

点击 Download Movable Type 即可开始下载。
如果找不到下载地址,我这里也提供了一个MT 2.661的下载地址(不能保证链接长期有效):
http://www.mrsjenni.com/stuff/MT-2.661-full-lib.zip
http://www.qinyu.net/download/MT-2.661-full-lib.zip
注:没有填写表单就下载MT-2.661-full-lib.zip是违反Movable Type授权的。
环境搭建:
1. 安装ActivePerl。
选择预设安装路径C:\perl\,并在安装选项页中把“Create IIS script mapping for Perl”和“Create IIS script mapping for Perl ISAPI”勾选上,完成安装。
2. 配置MT存放路径和IIS
在硬盘上新建三个目录 J:\MT\cgi-bin\、J:\MT\mt\ 和 J:\MT\db\ ,这三个目录的用处如下:
J:\MT\cgi-bin\:用于存放动态文件,即程序主体,这个目录中有执行cgi脚本的权限;
J:\MT\mt\:用于存放静态文件,如.html网页、图片等,IIS将把这个目录中的所有内容以静态网页的形式呈现,各个用户导出的静态网页就存放在这个目录下;
J:\MT\db\:使用文本数据库Berkeley DB时用于存放数据库文件,当然如果使用MySQL,也可以将数据库文件放到这个目录下,易于管理。
然后将下载的MT源码压缩包MT-2.661-full-lib.zip解压到 J:\MT\cgi-bin\ 目录中,将docs, images和styles.css移动到 J:\MT\mt\ 目录下。
在IIS中添加一个虚拟目录 cgi-bin 指向 J:\MT\cgi-bin\,在设置访问权限向导中应把“执行(如 ISAPI 应用程序或 CGI)”勾选上,如下图:

在这个虚拟目录中还应配置应用程序映射,将.cgi和.pl关联到perl:.cgi C:\Perl\bin\perl.exe "%s" %s GET,HEAD,POST
.pl C:\Perl\bin\perl.exe "%s" %s GET,HEAD,POSTActivePerl安装时默认已经把.pl关联好了,我们只要再把.cgi关联上就行了,如下图所示:

在IIS中再添加一个虚拟目录 user 指向 J:\MT\mt\,在设置访问权限向导中应把“运行脚本(如 ASP)”和“执行(如 ISAPI 应用程序或 CGI)”前面复选框的勾选去掉,如下图:

如果你的IIS安装了服务器扩展,则还需将CGI扩展设置为“允许”,完成设置。
开始安装
1. 配置mt.cfg
用文本编辑打开J:\MT\cgi-bin\mt.cfg。
下面对一些常用的参数配置作简要说明:
| 参数 | 配置说明 |
|---|---|
| CGIPath http://WWW.YOUR-SITE.COM/PATH/TO/MT/ | 存放cgi脚本的虚拟目录的URL |
| DataSource ./db | 数据源,数据库文件的存放路径 |
| # StaticWebPath /path/to/static-files/ | 静态文件的存放路径 静态文件包括MT源码中的docs, images, styles.css |
| # CGIMaxUpload 500000 | CGI最大允许上传的文件大小,默认为1MB |
| # TempDir /tmp/ | 上传文件临时目录 如果该项有设置,当上传同名文件时MT会提示你是否覆盖 |
| # NoHTMLEntities 1 | 是否将字符转成HTML实体;1-否 |
| # PublishCharset Shift_JIS | 网志所使用的字符集 |
| # DefaultTemplate default.tmpl | 默认的搜索模块模板,后面在汉化时会用到。 |
| AltTemplate comments comments.tmpl | 为多个网志替代模板 |
DataSource J:\MT\db\
StaticWebPath http://localhost/user/
TempDir /tmp/
NoHTMLEntities 1
PublishCharset UTF-8
AltTemplate comments comments.tmpl
2. 设置数据库
MT支持多种数据库,默认情况下会使用Bekeley DB文本数据库,则只需建立数据库文件保存的路径即可,即J:\MT\db\。
如果要使用MySQL,则要把DataSource改为以下代码:ObjectDriver DBI::mysql
Database your_database_name
DBUser your_username
DBHost your_database_host并把mt-db-pass.cgi文件中的database_password改为你的数据库用户的密码。
对于一般使用者来说,Bekeley DB已经足够了,因此这里我就使用Bekeley DB作为数据库。另外几种数据库由于用的较少,这里就不作介绍了。
3. 检测数据库
运行 http://localhost/cgi-bin/mt-check.cgi 查看是否可以开始安装MT了。
此时会提示以下信息:
如果使用Berkeley DB,则需要安装DB_File;
如果使用MySQL则需安装DBD::mysql。
安装方法:
运行命令提示符窗口,输入ppm,如下所示:

然后选择你要安装的软件包,输入相应的命令:
BerkeleyDB: Install DB_File
MYSQL: Install DBD::mysql(或DBD-mysql)
ppm将自动下载并安装软件包,如图所示:

再次运行 http://localhost/cgi-bin/mt-check.cgi 就可以发现DB_File已经安装成功了。
4. 激活系统
运行 http://localhost/cgi-bin/mt-load.cgi 以激活系统,当出现以下字样时,表示激活成功:
程序提示你删除mt-load.cgi,因为以后不再需要用到它了;如果不删除,将会导致安全问题。
至此MT 2.661 英文版就安装完成了。
在 http://localhost/cgi-bin/mt.cgi 使用初始用户名“Melody”以及密码“Nelson”登录MT管理中心,注意区分大小写,登录成功后管理界面如图:
汉化MT
接下来先来汉化MT,汉化完成后再来配置MT,如果你想继续使用英文版的MT,请跳过这步。
我整理了一份汉化包提供下载:
MT 汉化包下载
汉化包中包含以下文件夹和文件:
lang-zh-cn:汉化图片
default-templates.pl:默认模板
search_templates:搜索模块的简体语言包
zh_cn_utf_8:UTF-8编码的简体语言包
zh_cn_gb2312:gb2312编码的简体语言包
docs:简体中文帮助文档
style.css: 汉化后中文字体太小,请用这个样式表覆盖原来的样式表你需要做以下事情:
1. 图片的汉化
将lang-zh-cn放到 J:\MT\mt\images\ 目录下。
2. 默认模板的汉化
将default-templates.pl 放到 J:\MT\cgi-bin\lib\MT\ 目录下,覆盖原文件。
3. 操作语言的汉化
将UTF-8或gb2312编码的简体语言文件 zh_cn.pm 放到 J:\MT\cgi-bin\lib\MT\L10N\ 目录下。
4. 帮助文档的汉化
将docs放到 J:\MT\mt\ 中,替换掉原来的英文帮助文档。
5. 搜索模块的汉化
将 search_templates 目录中的 default_zh.tmpl 放到 J:\MT\cgi-bin\ search_templates\ 目录下,并在mt.cfg 中加入一行:DefaultTemplate default_zh.tmpl
6. 时间日期的汉化
a. 打开参数设定模板文件J:\MT\cgi-bin\tmpl\cms\cfg_prefs.tmpl,找到
“<select name="language" class="menu">”
在它下面加入这行:
“<option value="zh"<TMPL_IF NAME=LANGUAGE_ZH> selected</TMPL_IF>><MT_TRANS phrase="Chinese">”
b. 设置时间显示格式。打开J:\MT\cgi-bin\lib\MT\Util.pm,找到
“%Languages = (”
在下面加入这段(中文已转换成Unicode):
再找到以下注释:
“## This is a dreadful hack.在注释下添加以下代码:if ($lang eq 'zh') {
$format =~ s!%B %Y!$Languages{$lang}->[6]!g;
}”
这样每月归档的月份显示就会自动套用前面设置的格式。
配置MT
1. 切换语言
运行 http://localhost/cgi-bin/mt.cgi 登录MT后台管理,点击右侧的菜单“EDIT YOU PROFILE”修改个人数据。选择你的操作语言为“PRC Chinese”,并修改管理密码,如图所示:

点击 SAVE 更新你的资料,回到主菜单,这时界面已经变成简体中文的了:
2. 新建网志
先删除系统预设的网志“FIRST WEBLOG”,因为它在汉化前就已经存在了,里面的模板都还是英文的。
点击右侧菜单的“建立新的网志”进入新网志的配置,我的配置如下:
主要配置说明:
网站文件绝对路径:我的网志在服务器上保存的路径,这些网志都是静态文件,因此把它们放到虚拟目录user中,如果有多个用户,则不能直接把生成的网志都存放在 J:/MT/mt/ 目录下,应该在该目录下为每个网志建立一个目录,如 J:/MT/mt/fengdongren/,否则重建文档时可能会覆盖掉同名档案,访问时也没法分清到底是谁的网志,发生混乱。站点网址:指向我的网志目录的网址,我的网志目录在虚拟目录user中,因此我的站点网址将会是:
http://localhost/hily/_本机存档路径:MT中每个网志就是一个静态文件,为使网志结构清晰,一般是在网站文件绝对路径下新建一个名为archives的目录,用于存放这些文件,如:J:/MT/mt/fengdongren/archives/
存档网址:类同站点网址,即指向我的本机存档路径的网址,这里应该是:
http://localhost/hily/_archives/
时区:中国所在时区就是“UTC+8(中国沿海,台湾)”配置完后点击保存,页面就切换到这个网志的详细设置和维护界面了:

其他的配置相对较简单,这里不做过多介绍。
3. 预览网志
新建一个类别,增加几篇文章,然后更新系统,看看效果吧:
http://localhost/hily/_
4. 安装XINHA
MT自带的编辑器的可视化编辑功能太差了,幸亏有XINHA,它是一个WYSIWYG(What You See Is What You Get)编辑器,是HTMLAREA 3.0的改进版,下面来看看怎么安装。
发布:http://xinha.python-hosting.com/
下载:http://xinha.gogo.co.nz/xinha-nightly.zip
我下载的是就新版本,不是稳定版。这个版本中还存在一些Bug,我汉化并修正了一份,这里提供下载:
Xinha 汉化修改版下载
把压缩包内容解压到CGI根目录下的xinha文件夹中。接下来就是要把Xinha整合到MT的文章编辑中,我参考了 Jedi 汉化的MT中整合htmlArea的界面,修改了edit_entry.tmpl模板,如果你比较懒,就拿我这份去用吧:
edit_entry.tmpl 模板
记得要把变量设置_editor_url = '/cgi-bin/xinha/'改为你的xinha文件夹所在的绝对路径。
演示:
Xinha 演示
Xinha里面带有好多插件,我对其中主要用到的插件进行了汉化。一些插件需要PHP的支持(比如ImageManager),还有一些不适合在MT中工作(比如FullPage,它会在文章中生成<html>标签),考虑到这里只是用它来整合MT,就没有对它们做太多的修改。不使用的插件尽量删除它们的源代码,因为有可能会带来安全问题(比如利用ImageManager可以任意上传文件)。
现在来看看整合后的编辑器界面:

很酷吧。
5. 模板连接到文件的隐患
在 david 的提醒下,发现MT中模板连接到文件这块确实存在一个严重的问题:用户通过父路径(../)可以把他的模板保存到系统中的任意位置。单用户则罢(没有谁喜欢整自己吧),如果这个MT中有多个网志多个作者,就可能存在一些有意无意的非法操作,恶意将模板文件生成并覆盖其他作者的网志文件。
解决方法:有两种选择,要么去掉这个功能;要么修改MT代码。我不会perl,只能选择去掉这个功能。打开模板 tmpl\cms\edit_template.tmpl ,去掉其中的这段代码即可:
6. 编辑框里频繁断行?
不觉得MT的编辑框都太小了吗?宽度不到500px,页面整体布局看起来比较协调,但是编辑区里的文本却经常断行,显得很混乱,不够实用。
解决方法:打开样式表,找到textarea.width500条目,修改宽度为合适宽度,并增加两条规则让文本太长时显示滚动条而不是自动换行:
安装插件
MT的插件资源非常丰富,这些插件可以在 http://mt-plugins.org/ 找到。下面介绍一下MT里常用的插件及其安装,至于插件的使用不多作介绍:
1. WHOLESYSTEM
发布:http://www.rayners.org/2003/01/mtwholesystem.php
下载:http://www.rayners.org/plugins/wholesystem.zip
从字面上理解就是整个系统,它的功能就是为整个多用户的MT系统提供一个组织页面,将所有网志中的最新网志整理到一起。
使用方法很简单,新增一个网志,用于汇整整个系统中的网志,并在主索引模板中的适当位置加入下面这些代码即可:
我把id为content的块替换成如下字符串:
来看看效果,很简单吧:

到这里还不算完,如果系统中有新的网页出现时,这个汇总网志并不能自动重建。因此,我们需要定时给它重建,但这样就显得麻烦了。有什么办法让MT自动更新重建呢?
答案是计划任务+MT-Rebuild。
计划任务应该都知道是什么东东吧,不知道的运行“开始-程序-附件?-系统工具-任务计划”看看。现在要介绍的是MT-Rebuild,它其实是一个脚本程序mt-rebuild.pl,它能够在命令行下对特定的某个网志进行重建,这里我们就要用它来定时重建汇总网志“MT SYSTEM”,id为4。
还是先下载吧:
MT-Rebuild:http://www.mplode.com/tima/files/mt-plugins/mt-rebuild.tar.gz
下载完后把mt-rebuild.pl放到CGI根目录下。
命令参数参考:# 重建所有网志中的所有文章和索引(mt-rebuild v0.2新增命令):
mt-rebuild -all
# 重建指定网志中的所有文章和索引:
mt-rebuild -mode="all" -blog_id=0
# 重建指定网志中的所有文章,但不重建索引:
mt-rebuild -mode="all" -blog_id=0 -no_indexes
# 重建指定网志中的一个文章类别:
mt-rebuild -mode="archive" -blog_id=0 -archive_type="(Individual|Daily|Weekly|Monthly|Category)"
# 重建指定网志中的一篇特定的文章:
mt-rebuild -mode="entry" -blog_id="0" -entry_id=0
# 重建指定网志的主索引:
mt-rebuild -mode="index" -blog_id="0" -template="your template name"添加计划任务,设置任务运行程序:c:\perl\bin\perl.exe J:\MT\cgi-bin\mt-rebuild.pl -mode="index" -blog_id="2" –template="index"在计划页中设置定时选项,我的配置是“从2005-5-1起,每天,0:00”。这样,我在自己的网页中发表的新文章在第二天就能更新到汇总网志上了(重建索引命令中的template不支持中文,所以我只好把索引模板的名称改回英文的了)。
2. MT-Blacklist
发布:http://www.jayallen.org/projects/mt-blacklist/
下载:http://www.jayallen.org/projects/mt-blacklist/1.65/MT-Blacklist.zip
Blacklist,即黑名单,它是一个用于防御回复和引用攻击的插件。根据 Jedi 的繁体版,我修改出了一个简体中文版的MT-Blacklist,这里给出下载:
http://blog.iyi.cn/blog/fengdongren/zips/mt-blacklist-hh.rar使用方法:
将插件包中的mt-blacklist.cgi放到CGI根目录下;
将插件包中的Blacklist.pl放到plugins目录下;
在extlib目录下新建一目录jayallen,将其余三个.pm文件放入。
为了使用方便,我想把Blacklist做成菜单链接放到MT管理首页右边的菜单下。打开位于tmpl/cms/目录下的模板list_blog.tmpl,在其中相应位置添加以下代码:
并在zh_cn.pm中增加字典条目如下:'Set up blacklist' => '配置Blacklist',
'Blacklist helps you resist comment spam' => 'Blacklist帮助你抵抗回复垃圾',请将BLACKLIST的图标保存到images目录下:
完成设置后看看效果:

点击“配置BLACKLIST”,在配置选项中激活BLACKLIST就可以使用了。
注:发现Blacklist的一点小bug,它读取的操作全是UTC标准时间,可惜我不懂perl,自己不会改。
3. MT-LIST + MT-RSSFEED
发布:http://www.timaoutloud.org/code/mt/
下载:http://www.mplode.com/tima/files/mt-plugins/mt-list.tar.gz
http://www.mplode.com/tima/files/mt-plugins/mt-rssfeed.tar.gz
MT-LIST能够创建简单的RSS种子列表(或数组),在这个列表中可以实现循环、排序以及随机选择。而MT-RSSFEED可以用来格式化显示单个RSS种子的内容。这样通过MT-LIST在外层的循环,再由MT-RSSFEED在循环体中输出各个RSS种子的内容,就可以在你的网志上读取和显示出其他网志上RSS种子的内容列表清单甚至是文章内容。
官方的mt-rssfeed.pl在处理中文时候会出错,这里提供patch过的mt-rssfeed.pl和它需要的一个文件gb2312.enc的下载地址:
http://www.foresee.com.cn/blogs/neo/files/mt-rssfeed.pl
http://www.fayland.org/journal/gb2312.enc
使用方法:
将插件包中的mt-rssfeed.pl和mt-list.pl放到plugins目录下;
将gb2312.enc放到C:\Perl\site\lib\XML\Parser\Encodings\目录下;
将插件包中的LP.pm放到extlib/XML/RSS/目录下(你可能要建立这个目录)。
配置mt-rssfeed.pl中的RSS路径:
# my $RSSFEED_DATA_DIR = "./db/";
如果你用的是Berkeley DB,MT-RSSFEED将用使用MT的默认数据库路径,这里无需更改,如果你使用MySQL或者你要让RSS文件缓存在其他目录,则需要更改。
下面介绍一下MT-LIST以及MT-RSSFEED的标签的用法(建议打开一个具体的RSS种子对照起来看):
1). MT-LIST
MTList name=``string''用于建立一个简单的RSS种子列表(或数组),每个种子各占用一行。
name:为这个列表指定一个名称。MTListFile name=``string'' file=``string''类似MTList,这个标签也是用于建立一个RSS种子列表,不同的是它的来源是file属性所指定的本地文件,而不是包含在标签里的字符串。
name:为这个列表指定一个名称。MTListLoop name=``string'' [rnd=``integer'', count=``integer'', offset=``integer'', sort=``ascending|descending'']用于控制指定列表中RSS种子的循环。
name:使用哪个列表
rnd:可选属性,设置从列表中随机选出多少个不重复的项目。
count:可选属性,设置从列表中选择出的项目的总数。
offset:可选属性,设置列表开始时的偏移量,即从第几个项目开始。offset默认为1。
sort:设置列表中项目的排序规则(根据RSS种子的地址)。ascending-升序|descending-降序。
如果设置了rnd,那么count和offset都将被忽略。MTListLoop的默认操作方式是使用所有列表项目,无偏移且不排序。 MTListLoopItem插入当前循环体中的项目。MTListLoopItemIndex插入当前循环体在列表中的位置(或已循环的次数)。
2). MT-RSSFEED
a. 种子标签:
MTRSSFeed [file=``url'' var=``MTvar_name'' debug=``0|1|2'']
这是最外层的标签,表示它是一个RSS种子。其它所有的MT-RSSFEED标签都必须嵌套在这个标签中。
file:除非这个标签包含在MTListLoop中,否则这个属性是必须的。
var:MT变量名称
debug:它会改变实际输出的模板,但是会在重建时输出有用的调试作息。
默认值为0(0-关闭调试|1-打开普通调试|2-打开详细调试)
MTRSSFeedCacheDate [format=``mt-date-format'']
RSS种子的更新日期。
format:日期的显示格式。这是一个可选属性,默认情况下会按照MT的日期格式显示。
MTRSSFeedURL
这个RSS种子的URL地址。
MTRSSFeedTitle
这个RSS种子的标题。
MTRSSFeedTitleExists
一个条件标签,RSS种子的标题存在时才会显示它所包含的内容。
MTRSSFeedLink
与这个RSS种子关联的网页的URL地址。
MTRSSFeedLinkExists
一个条件标签,RSS种子关联的网页的URL地址存在时才会显示它所包含的内容。
MTRSSFeedDescription
关于这个RSS种子的制作者以及RSS种子内容的描述,包含所有HTML原始标签。
MTRSSFeedDescriptionExists
一个条件标签,以上所述RSS种子的描述存在时才会显示它所包含的内容。
MTRSSFeedDescriptionEncoded
关于这个RSS种子的制作者以及RSS种子内容的描述,不包含HTML原始标签。
MTRSSFeedDescriptionEncodedExists
一个条件标签,以上所述RSS种子的描述存在时才会显示它所包含的内容。
MTRSSFeedLanguage
RSS种子所使用的语言代码,中文是ZH。其它语言对应的代码请看ISO639标准:
http://www.oasis-open.org/cover/iso639a.html
MTRSSFeedLanguageExists
一个条件标签,RSS种子的语言存在时时才会显示它所包含的内容。
b. 项目标签:
MTRSSFeedItemsExist
一个条件标签,当有项目标签存在时才会显示它所包含的内容。
MTRSSFeedItems [lastn=``n'']
显示n个项目标签。它包含着一些类似MTRSSFeedItemXXX的标签。
MTRSSFeedItemCount
包含在RSS种子中的项目总数。
MTRSSFeedItemTitle
RSS种子中当前项目的标题。这个标签必须包含在一个MTRSSFeedItems标签中。
MTRSSFeedItemTitleExists
一个条件标签,当前项目标签的标题存在时才会显示它所包含的内容。
MTRSSFeedItemLink
RSS种子中当前项目的URL地址。这个标签必须包含在一个MTRSSFeedItems标签中。
MTRSSFeedItemLinkExists
一个条件标签,当前项目标签的URL地址存在时才会显示它所包含的内容。
MTRSSFeedItemDescription
RSS种子中当前项目的描述,包含所有HTML原始标签。这个标签必须包含在一个MTRSSFeedItems标签中。
MTRSSFeedItemDescriptionExists
一个条件标签,上述当前项目的描述存在时才会显示它所包含的内容。
MTRSSFeedItemDescriptionEncoded
RSS种子中当前项目的描述,不包含HTML原始标签。这个标签必须包含在一个MTRSSFeedItems标签中。
MTRSSFeedItemDescriptionEncodedExists
一个条件标签,上述当前项目的描述存在时才会显示它所包含的内容。
c. 图像标签:
MTRSSFeedImageExists
一个条件标签,当有图像标签存在时才会显示它所包含的内容。
MTRSSFeedImage
一个图像标签,它包含着一些类似MTRSSFeedItemXXX的标签。
MTRSSFeedImageURL
图像文件的URL地址。
MTRSSFeedImageURLExists
一个条件标签,当图像文件的URL地址存在时才会显示它所包含的内容。
MTRSSFeedImageHeight
图像的高度,单位是像素。
MTRSSFeedImageHeightExists
一个条件标签,当图像的高度存在时才会显示它所包含的内容。
MTRSSFeedImageWidth
图像的宽度,单位是像素。
MTRSSFeedImageWidthExists
一个条件标签,当图像的宽度存在时才会显示它所包含的内容。
MTRSSFeedImageLink
图像链接的URL地址,即当用户点击图像时将会去往的地址。
MTRSSFeedImageLinkExists
一个条件标签,当图像链接的URL地址存在时才会显示它所包含的内容。
MTRSSFeedImageTitle
图像标题。
MTRSSFeedImageTitleExists
一个条件标签,当图像标题存在时才会显示它所包含的内容。
MTRSSFeedImageDescription
图像文件的描述。
MTRSSFeedImageDescriptionExists
一个条件标签,当图像文件的描述存在时才会显示它所包含的内容。
通用标签:
MTRSSFeedElement name=``namespace_qualified_tag_name''
这是一个非常有用的标签,它可以处理在RSS种子中channel部分出现的,但mt-rssfeed不能直接支持的标签数据。name这个属性是必须的,它代表RSS种子的命名空间。例如name="http://purl.org/dc/elements/1.1/date"将会插入格林威治标准时间。如果你没有设置name,mt-rssfeed将会采取默认的命名空间。
MTRSSFeedElementExists name=``namespace_qualified_tag_name''
一个条件标签,当某个特定标签存在时才会显示它所包含的内容。这个标签经常会与MTRSSFeedElement配合使用。name属性与上述MTRSSFeedElement标签中的意义一样。
MTRSSFeedItemElement name=``namespace_qualified_tagname''
这是一个非常有用的标签,它可以处理在RSS种子中item部分出现的,但mt-rssfeed不能直接支持的标签数据。name属性与上述MTRSSFeedElement标签中的意义一样。
MTRSSFeedItemElementExists name=``namespace_qualified_tag_name''
一个条件标签,当在RSS种子channel部分存在某个特定标签时才会显示它所包含的内容。这个标签经常会与MTRSSFeedItemElement配合使用。name属性与上述MTRSSFeedElement标签中的意义一样。
通用标签属性:
state=``0|1''
这是一个可选的属性,它可以应用于任何一个以Exists结束的标签。它是一个布尔值,表示是否要显示标签包含的内容。默认为1(1-是|0-否)
写了这么多,来举个例子看看吧。
新建一个索引模板,模板内容如下,其中< MTList>标签嵌套的内容就是要读取的其它网志的RSS种子,通过
模板名为test,输出文件为test.html,保存后重建索引,打开http://localhost/hily/_test.html就可以看到效果了:

扩展用法:可以把要读取的RSS种子地址全部放到一个新建的模板feeds中,然后把以上模板中的<MTList>嵌套的内容改为<$MTInclude module="feeds"$>就可以了。这样做的好处是:RSS种子集中存放,易于管理。
另外,你也可以利用RSSFEED把这个MT系统中所有网页的xml搜罗起来,建立一个索引页。但这个索引页与WHOLESYSTEM生成的略有不同,WHOLESYSTEM是按发表时间生成的,而RSSFEED则是按网志生成的。
如果要系统自动更新RSSFEED模块的内容的话,请参照上面对WHOLESYSTEM自动更新的介绍。
另外,我发现patch过的mt-rssfeed.pl还不是很完美,虽然从RSS种子中正确地读出中文,但是嵌套在标签中的中文却还是一团乱码。重建以下这个索引模板,就能发现问题了:这里不会乱码
如果一定要在标签里使用中文,请把中文转成unicode转义符。我简单地写了一个非ASCII字符和unicode转义符之间互换的工具(Characters - Escape Characters Converter),希望能够帮上你:
Characters - Escape Characters Converter
4. MTFastInclude
发布:http://www.nonplus.net/software/mt/MTFastInclude.htm
下载:http://www.nonplus.net/software/download/mt/MTFastInclude.zip
MT中有很多MTInclude的标签,用来包含外联文件、模板或模块。但是使用这些标签会降低你的重建效率,只为每次重建时MT都要读取和加载那些文件或编译那些模板和模块。安装了MTFastInclude后就可以大大加快处理速度,它能够将常用的MTInclude标签内容缓存起来,这样只有第一次重建会加载和编译相应模块,以后每次重建就可以直接从缓存中读取了。
使用方法:
将压缩包中的MTFastInclude.pl放到plugins目录中就可以了。
这个插件默认会把所有的MTInclude标签缓存,如果你不想缓存某个特定的标签,请在标签中加上属性no_cache="1"。
5. MT-Medic
发布:http://www.nonplus.net/software/mt/MT-Medic.htm
下载:http://www.nonplus.net/software/download/mt/MT-Medic.zip
这是一个对MT进行快速诊断和管理的插件,使用方法也非常简单,更改mt-medic.cgi文件中的操作密码后把它放到CGI根目录下即可。
6. MTEntryIfComments
发布:http://www.nonplus.net/software/mt/MTEntryIfComments.htm
下载:
这是一个用来检测某个网志的回复或引用是否存在的插件。MT中有很多条件输出标签,当标签的条件为“真”时才输出嵌套在标签里的内容。MTEntryIfComments的使用的标签与其十分地类似,它定义了两种标签 <MTEntryIfComments>和<MTEntryIfPings>,分别用于检测回复或引用是否存在。
两个标签中都可以包含一个判断条件,标签支持以下:count_greater_than="n"如果这个网志的回复或引用大于n条,条件为真 count_less_than="n"如果这个网志的回复或引用少于n条,条件为真 count_equals="n"如果这个网志的回复或引用等于n条,条件为真如果标签中不包含判断条件,则默认为count_greater_than="0"。下面就在回复中使用MTEntryIfComment举两个例子:
b. 没有回复时不显示回复区块:
该结束了
好了好了,装了上面这么多插件,真是累呀。相信有了以上的基础再装其它插件也不是太难了。剩下的事情就是好好地修改一下你的模板了,再好好地写几篇文章,让大伙儿都来瞻仰瞻仰。
第一次写这么长篇大论的东西,难免会有错误存在,欢迎你指出和纠正。
