umbraco 修改部分 根据ID生成Url以解决URL中出现中文的问题

发布于:
Microsoft.Net

较早版本的修改

//srcUmbraco.Core.Models.ContentExtensions.cs
// line 425
// 解决发布URL问题
var niceUrl = contentBase.Name.FormatUrl().ToLower();
    niceUrl = string.Format("item-{0}", contentBase.Id).FormatUrl().ToLower();//增加此行
//srcumbraco.cms.businesslogic.datatypeFileHandlerData.cs
// line 50
//解决上传文件命名问题
var name = IOHelper.SafeFileName(postedFileName.Substring(postedFileName.LastIndexOf(IOHelper.DirSepChar) + 1, postedFileName.Length - postedFileName.LastIndexOf(IOHelper.DirSepChar) - 1).ToLower());
    name = String.Concat(Guid.NewGuid(), Path.GetExtension(name));//增加此行

更新到6.1.0以后的修改

Handling External URLs in Umbraco 6 页面重定向到外部URL

发布于:
Microsoft.Net

copy from: http://www.theoutfield.net/blog/2013/10/handling-external-urls-in-umbraco-6

Umbraco 有一些特殊的别名,如:umbracoUrlName,能让你在当前网站中的页面间重定向。然而,他没有一个内置的方法将一个页面重定向到外部URL。我认为我想出了一个相当不错的办法,下面讲解如何做到:

创建一个属性(Property)

我们在文档类型中创建一个名为“umbracoExternalUrl”的文本字符串属性。

创建 IUrlProvider

  我已经设立我们需要的属性,现在我们要让umbraco知道,当这个属性值被设置的时候,就使用他的值来作为节点的URL而不是使用默认生的URL。我们将使用Umbraco一个很酷的新功能实现它,它是一个UrlProvider,该IUrlProvider接口能在生成一个节点的URL的时候定义我们自己的逻辑。继续,我们建立一个接口如下

为BlogEngine的分类增加了自定义Url别名功能

发布于:
Microsoft.Net
//修改代码xxxxx:
//BlogEngine.Core.Category.cs

private string _Title;
/// <summary>
/// Gets or sets the Title or the object.
/// </summary>
public string Title
{
    get { return _Title; }
    set
    {
        if (_Title != value) MarkChanged("Title");
        _Title = value;
    }
}
//后添加:
private string _Slug;
/// <summary>
/// Gets or sets the Slug or the object.
/// </summary>
public string Slug
{
    get { return _Slug; }
    set
    {
        if (_Slug != value) MarkChanged("Slug");
        _Slug = value;
    }
}
public Category(string title, string description,string slug)
{
    this.Id = Guid.NewGuid();
    this._Title = title;
    this._Description = description;
    this._Slug = slug;
    this.Parent = null;
}