博客移植到Orchard CMS上的经验

衣明志 发表于 , 阅读 (18190)

我的这个个人博客多年以来一直在使用Dasblog系统,当初Dasblog系统的xml数据存储是最吸引我的,当然还有其他很多不错的特性。

但是我们知道Dasblog使用的asp.net webform实现的,所以对于有html洁癖的我来说,一直在忍受ViewState给自己带来的不爽,也曾考虑过使用BlogEngine.NET ,But you know,他依然会让我不爽!

ASP.NET MVC是一个不错的.NET web app 框架,重新还给我们纯洁的HTML和开发体验,个人非常喜欢,一度让从ASP.NET MVC 2开始就几乎不再编写web form的web应用了。而在ASP.NET MVC领域中一个不错的CMS系统,映入我的眼帘: Orchard

Orchard 是一个免费和开源的社区交流项目,致力于在ASP.NET平台开发应用程序和可重用性组件。使用的开源协议是OSI认证的New BSD license。关于这个项目的中文介绍内容,在这里我推荐大家看看周金根同学的相关博客文章 。相信你也会像我一样喜欢Orchard的。

关于 Orchard 的安装等大家可以从周金根同学的相关博客文章 中了解的很详细了,这里我不再累赘复述了。今天给大家分享一下我将博客从Dasblog向Orchard迁移的主要过程吧。

  1. 在Orchard安装时,最好使用default,而别选择blog,否则你导入博客后的的几个相关功能很可能无法正常显示结果,比如:Blog Archives widget。
  2. 从Dasblog中导出BLOGML数据来, 这里我用的是DasBlog <-> BlogML工具,非常小巧实用。使用该工具将导出的XML文件保存备用,(假设导出的文件名是blog.xml。)
  3. 登录进Orchard的后台,从模块中查找并安装BlogML模块。安装后会找到如图的功能界面

    注意选好要导入到的博客,因为Orchard可以创建多个Blog。在该界面中选择好上一步刚刚导出的blog.xml文件,然后配置好你的SlugPattern和Default Blog Slug参数,点击Upload file and Import按钮,等待片刻导入便已经成功。
  4. 也许你会认为到上一步就已经成功了,但你错了,Orchard的组件功能大都不错,但难免有让我们不够满意的地方,Orchar还需要继续努力啊。那么,我们还要做什么呢?嗯,我们还需要调整一下导入后的数据:切换到你的数据库管理器(SSMS)中找到Orchard数据库中的Common_CommonPartRecord表,将其中你的博客文章的PublishedUTC字段改为跟CreatedUTC相等的值——如何做到?嗯,注意这个表内有个Container_id,我们怎么知道我们我们博客的Container_id呢?答案是,从Orchard_Blogs_BlogPartRecord中找——如果你只有一个博客,那么这个表中唯一一行数据的Id就是你想要的Container_id了。那么作为一个开发人员我们应该可以编写出这一步的T-Sql语句了吧,呵呵,很简单的Upload 语句,自己编写吧:)
  5. 也许你以为……,对,到这里还是没最终完成,原因是Blog Archives widget的数据显示只有一行,系统认为所有博客都是今天的。怎么办?

我这里写了一段T-Sql,执行一下即可:

delete from Orchard_Blogs_BlogPartArchiveRecord
insert into Orchard_Blogs_BlogPartArchiveRecord([Year],[Month],PostCount,BlogPart_id)
select [Year],[Month],COUNT(Id) as PostCount,8 as blogpart_id from (
SELECT [Id]
      ,year([CreatedUtc]) as [Year]
      ,month([CreatedUtc]) as [Month]
  FROM [Common_CommonPartRecord]
where [Container_id]=8
) as tb
group by [Year],[Month]
order by [Year],[Month]`  

OK,到这一步总算完成了。但依然要提醒你一下:上面的第4步和第5步绝对不要倒过来做,否则你会发现当你发布新博客后,Orchard_Blogs_BlogPartArchiveRecord又恢复成一条了,也就是说Blog Archives widget的数据显示又只有一行了。切记!

3 条评论
网管小王
网管小王 2011-08-05 11:24
恭喜了,别忘记加友链哦
小王
小王 2011-08-18 09:18
建新博客需要做的工作太多,博主别忘记加我连接
Simon
Simon 2011-08-27 05:27
博主,我想知道用了orchard后,这个搜索框用的是什么?