Pages Url友好化

in Develop

dotnetblogengine.net Post的url做得不错,可以自定义文件名。
如果没有自定义文件名,则会根据Post.Title来自动确定。
但Pages就不一样了,没有slug选项,这样就决定了Pages页面只能按照Title来决定其url.
其实稍加改动即可:
1、给Page.cs添加EntryName属性

/// <summary>
/// 自定义文件名
/// </summary>
public string EntryName
{
get;
set;
}

2、修改Admin/Pages/Pages.aspx文件,使编辑Pages文件时能添加EntryName属性
3、修改BlogEngine.Core/Providers/XmlProvider/Pages.cs
SelectPage(Guid id)方法中添加

...
if (doc.SelectSingleNode("page/entryname") != null)
page.EntryName = doc.SelectSingleNode("page/entryname").InnerText;
else
page.EntryName = Utils.RemoveIllegalCharacters(page.Title);
....

InsertPage(Page page)方法中添加

....
writer.WriteElementString("entryname", page.EntryName);
writer.WriteElementString("content", page.Content);
...

4、修改UrlRewrite.cs,找到RewritePage方法,修改如下

private static void RewritePage(HttpContext context)
{
string title = ExtractTitle(context);
foreach (Page page in Page.Pages)
{
if (title.Equals(page.EntryName, StringComparison.OrdinalIgnoreCase))
{
context.RewritePath(Utils.RelativeWebRoot + "page.aspx?id=" + page.Id + GetQueryString(context), false);
break;
}
}
}

大功告成!

2 Comments

2 Comments

  1. !!1.4新版本已经有了。。

  2. @benben:
    1.4版我暂时不会更新了^_^
    1.3够我用了

Leave a Reply

Using Gravatars in the comments - get your own and be recognized!

XHTML: These are some of the tags you can use: <a href=""> <b> <blockquote> <code> <em> <i> <strike> <strong>