较早版本的修改
//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以后的修改
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的时候定义我们自己的逻辑。继续,我们建立一个接口如下
//修改代码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;
}