(二)
1. 汉化
只需在 /communityserver.config 文件中的 defaultLanguage 属性设置成 "zh-CN",同时在 /Languages/languages.xml 文件中开启 <language name="Chinese Simplified" key="zh-CN" />,然后把汉化资源文件复制到 /Languages/zh-CN 文件夹下即可。
2. 虽然对 communityserver 2007 没有深入了解,但是感觉母版机制好像和以前有一点区别。修改 /Themes/default/Common/UserWelcome.aspx 和 /ControlPanel/Masters/ControlPanelMaster.ascx 文件中的相关代码部分去掉社区页面顶部的 help 链接。
3. 国内论坛的使用习惯是在主题列表项前的小图标单击可以在新窗口中打开,但是 CommunityServer 确始终是在当前窗口打开帖子,为了实现这个小功能,需要做点改动。
/Themes/default/Forums/threadlist.aspx 中 ID 为 FilteredThreadList 的 CSForum:ThreadList 是通常情况下显示的列表,图片的显示代码是:ForumFormatter.StatusIcon( (Thread) Container.DataItem ),所以需要修改 CommunityServer.Discussions.Components 的 static string threadStatusIcon 值为 "<a href=\"{2}\" target=\"_blank\"><img title=\"{0}\" alt=\"{0}\" src=\"{1}\" border=\"0\" /></a>",同时需要在 StatusIcon(Thread) 方法中将 Globals.GetSiteUrls().Post(thread.PostID) 的值附加到其中。
4. UrlRewrite
CommunityServer 2007.1 的默认首页已经是一个完全空白的占位了,直接被重写到 /Themes/default/Common/home.aspx 这是和 2.X 版本不同的地方。当默认的 CommunityServer.Urls.UrlReWriteProvider.GetRewrittenUrl 执行重写过程时检测当前的 url 是否是 /Themes 或 /controlpanel 中的一个,这意味着新版本的 WEB 文件的物理位置就是在这两个位置之中。
通过 SiteUrls.config 也可以了解一般的匹配规则并且可以做一些社区 URL 的定制修改。
5. 搜索
如果不是使用 windows 服务来运行索引等任务,直接修改 communityserver_override.config 中的配置项来适应自己的环境,同时把 dll 文件复制到 /WEB/BIN 文件夹下再清理一下数据库的索引选项就可以了,详细说明可以参看官方指引。
6. 就在我觉得应该进一步改善下社区的编辑功能的时候,我发现有的博客通过 TAG 或是日期来筛选的结果不存在了,我还以为是在升级的时候出了什么问题,但是在官方网站的一个帖子看到在 CommunityServer 2007 中,如果没有在写博客的时候选择 "Publish to my aggregate list(发布到我的博客首页)" 选项的时候是不显示的,这是在使用习惯上和 2.X 版本有很大区别的地方。
测试在新开博客中发帖,发现从帖子提交到在博客首页和个人首页上显示中间的间隔比较长,跟踪代码就可以知道博客帖子提交后是直接插入到数据库表的,但是帖子的读取确优先读取缓存,而同步数据库和缓存是有一定的时间间隔的,如果在 communityserver.config 中 cacheFactor 设置为默认值 5,这个间隔可能会达到 10 分钟以上,这种缓存机制对于一些博客比较少的站点来说有点过于缓慢,可以适当调整,cacheFator 在这项功能上每单位大约为 2 分钟。(相关的代码可以参看:
CommunityServer.Blogs.Controls.WeblogPostList.DataSource;
CommunityServer.Blogs.Components.WeblogPosts.Add;
CommunityServer.Blogs.Components.WeblogPosts.GetBlogThreads;
CommunityServer.Data.GetBlogThreads)
题外话:communityserver wiki add-on 讨论帖,插件总结博客帖