在Umbraco 7中更改依赖于活动语言的URL

时间:2017-10-11 06:36:38

标签: url umbraco umbraco7

我使用Umbraco 7.7建立了一个网站,我的内容树如下所示。

Content Tree

新闻(在图片Nieuws上)是使用Vorto为所有语言版本(现在只有荷兰语版本)制作的。

问题是新闻页面的网址。现在它看起来像这样:

http://localhost/data/nieuws

我想将此更改为:

http://localhost/nl/nieuws

或者如果我有其他语言:

http://localhost/en/news

这也必须适用于新闻的子页面。例如:

http://localhost/nl/nieuws/nieuwe-directeur
http://localhost/en/news/new-CEO

我尝试使用别名umbracoUrlName创建一个属性,但它只更改了URL的最后一部分,并且无法为其他语言的同一页面创建多个URL。

结果如下。我已输入此文nl/nieuws,并且新闻页面的网址已更改为此内容:

http://localhost/data/nlnieuws

我还尝试过Vorto编辑器来使用多种语言,但我已经有了这个网址:

http://localhost:51086/data/values-nl-benlnieuws-dtdguid36eceba8-82ce-4362-954b-a870c65adfc1/

如何更改依赖于actieve语言的URL

2 个答案:

答案 0 :(得分:2)

如果需要,您需要创建自定义UrlProviderContentFinder

public class DataUrlProvider : IUrlProvider
{
    public virtual string GetUrl(UmbracoContext umbracoContext, int id, Uri current, UrlProviderMode mode)
    {
        throw new NotImplementedException();
    }

    public virtual IEnumerable<string> GetOtherUrls(UmbracoContext umbracoContext, int id, Uri current)
    {
        throw new NotImplementedException();
    }
}

public class DataContentFinder : IContentFinder
{
    public bool TryFindContent(PublishedContentRequest contentRequest)
    {
        throw new NotImplementedException();
    }
}

实施并不复杂,但也不那么容易,这个答案太长了。

要了解如何操作,请查看此博文:

https://24days.in/umbraco-cms/2014/urlprovider-and-contentfinder/

答案 1 :(得分:0)

在Umbraco论坛上找到了一个更简单的答案。

  

使用Vorto或其他任何其他内容,如果您想要语言/文化的URL slug,只需右键单击父节点→单击 Culture and Hostnames →在域中选择您的语言→字段放//mydomain.com/nl/ /mydomain.com/en/

     

超级简单。它会将它添加到您选择的节点下的每个页面。

     

来源:our.umbraco.org forum (Change URL dependent of the active language in Umbraco 7)