Movable Type多用户权限改进(Hack)

Movable Type是一个非常强大的Blog出版系统,许多朋友除了自用之外,还希望建立一个多Blog的站点,与素未谋面的网友共用。

但Movable Type的多用户支持并不是很好,特别是用户权限的设置上,存在许多不便。如为了每个用户都能够对自己的Blog进行个性化设置,在给用户分配权限时就必然要打开“Configure Weblog”权限,但这会带来一个很大的问题,就是用户除了能够配置自己Blog的各种资料与设置外,还能够配置Blog的存储路径和网址等信息,若有不怀好意的人进行恶意更改,势必会破坏现有Blog系统的正常运行。

mt1.gif
具有“Configure Weblog”权限就能够更改存储路径

那么,该如何设定只有特定账号的用户才能够修改存储路径和网址信息呢?

MT程序\tmpl\cms目录下list_blog.tmpl给了我们一个很好的思路。在此文件中,是通过<TMPL_IF NAME=CAN_EDIT_AUTHORS>...</TMPL_IF>来控制用户进入Blog后台时所显示的内容,我们直接将它应用于“Blog设置 | 基本设置”的edit_blog.tmpl文件,便可以任意控制需要显示的内容了。如不想让受限用户编辑Blog的存储路径和网址信息,则可以在

<tr>
<td class="label"><h4><label for="site_path"><MT_TRANS phrase="Local Site Path:"></label></h4></td>
<td class="field"><input size="30" name="site_path" id="site_path" value="<TMPL_VAR NAME=SITE_PATH ESCAPE=HTML>" /></td>
<td class="description"><p><MT_TRANS phrase="Enter the path where your main index file will be located. An absolute path (starting with '/') is preferred, but you can also use a path relative to the Movable Type directory."> <MT_TRANS phrase="Example:"><br /><strong>/home/melody/public_html/weblog</strong></p></td>
<td class="help"><p><a href="#" onclick="return openManual('weblog_config', 'item_Local_Site_Path')" class="help">?</a></p></td>
</tr>
<tr>
<td class="label"><h4><label for="site_url"><MT_TRANS phrase="Site URL:"></label></h4></td>
<td class="field"><input size="30" name="site_url" id="site_url" value="<TMPL_VAR NAME=SITE_URL ESCAPE=HTML>" /></td>
<td class="description"><p><MT_TRANS phrase="Enter the URL of your public website. Do not include a filename (i.e. exclude index.html)."> <MT_TRANS phrase="Example:"><br /><strong>http://www.example.com/weblog</strong></p></td>
<td class="help"><p><a href="#" onclick="return openManual('weblog_config', 'item_site_url')" class="help">?</a></p></td>
</tr>
<tr>
<td class="label"><h4><label for="archive_path"><MT_TRANS phrase="Local Archive Path:"></label></h4></td>
<td class="field"><input size="30" name="archive_path" id="archive_path" value="<TMPL_VAR NAME=ARCHIVE_PATH ESCAPE=HTML>" /></td>
<td class="description"><p><MT_TRANS phrase="Enter the path where your archive files will be located (this can be the same as your Local Site Path)."> <MT_TRANS phrase="Example:"><br /><strong>/home/melody/public_html/weblog/archives</strong></p></td>
<td class="help"><p><a href="#" onclick="return openManual('weblog_config', 'item_local_archive_path')" class="help">?</a></p></td>
</tr>
<tr>
<td class="label"><h4><label for="archive_url"><MT_TRANS phrase="Archive URL:"></label></h4></td>
<td class="field"><input size="30" name="archive_url" id="archive_url" value="<TMPL_VAR NAME=ARCHIVE_URL ESCAPE=HTML>" /></td>
<td class="description"><p><MT_TRANS phrase="Enter the URL of the archives section of your website."> <MT_TRANS phrase="Example:"><br /><strong>http://www.example.com/weblog/archives</strong></p></td>
<td class="help"><p><a href="#" onclick="return openManual('weblog_config', 'item_archive_url')" class="help">?</a></p></td>
</tr>
的前面加上<TMPL_IF NAME=CAN_EDIT_AUTHORS>,后面加上</TMPL_IF>,对于受限用户,最终效果如图:

mt2.gif

当然,这种方法还适用于MT的其它模板文件,其功能到底是否能够发挥的淋漓尽致,就靠你的想像力了。