页面载入中......
首页 联系我 返回顶部
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 Responses

收起评论
  1. benben 七月 8 2008 , 08:39, #1
    benben
    !!1.4新版本已经有了。。
  2. 幻想曲 七月 8 2008 , 10:17, #2
    幻想曲
    @benben:
    1.4版我暂时不会更新了wink
    1.3够我用了

Write a comment:



(将显示你的Gravatar图标)  



[b][/b] - [i][/i] - [u][/u]- [quote][/quote]

:-/ ^_^ :d :o :kiss: :) :p :se: [yeah] :( :love: :han: :up: :cry: :zzz: o_o

暂时停止交换链接.

评论提交有问题?