1

有一个多语言网站,例如

Content
 +UK Home
  -About Us
 +US HOme
  -About Us

如何通过剃刀根据英国“关于我们”的当前节点获取美国“关于我们”页面?美国站点是使用关系从英国站点复制的。

当访问者访问美国“关于我们”时,根据业务规则将访问者重定向到英国“关于我们”。问题是我需要以编程方式获取英国“关于我们”页面的有效 url,并将访问者重定向到它。似乎 Umbraco 没有太多的支持。例如,Umbraco 关系仅适用于主页级别。每个站点都有一个具有多个级别的树节点。

任何想法将不胜感激。

Umbraco 4.10

4

2 回答 2

2

我只需要自己使用 7.2.6 来解决这个问题......

因为 BeaverProj 的答案不完整和贬低,我想我会分享。

如果有人有更短的代码来做同样的事情,那就太好了。

@{

var rs = ApplicationContext.Current.Services.RelationService;
var currentPageId = CurrentPage.AncestorOrSelf().Id;

var relations = rs.GetByParentOrChildId(currentPageId);


        <h2>Relations</h2>
foreach (Relation relation in relations)
{
    if (relation.RelationType.Alias == "relateDocumentOnCopy")
    {
        // the relation has two ids... 
        // 1. parent
        // 2. child
        // we want the opposite one as the id above is for the current node
        umbraco.NodeFactory.Node node;

        if (relation.ParentId == currentPageId)
        {
            //get child
            node = new umbraco.NodeFactory.Node(relation.ChildId);
        }
        else
        {
            node = new umbraco.NodeFactory.Node(relation.ParentId);
        }

       <text>@node.NiceUrl</text>            <br />
    }

} }

我还尝试使用带有 lambda [ where ] 语句的 razor 来仅查询别名的结果,但它在视图中不起作用。我可以将其移至控制器,但它可以在视图中使用。

于 2015-07-08T20:47:05.813 回答
0

当您创建多语言网站时,您是否在复制框中“将复制的项目与原始项目相关联”?还是页面之间有关系?

在 Razor 中,您应该能够访问 Umbraco 原生的 Relation API。

像这样的东西:

@using umbraco.cms.businesslogic.relation;
@using umbraco.cms.businesslogic.member;

@{
    RelationType relationType = RelationType.GetByAlias("relateDocumentOnCopy");
    Relation[] relations = Relation.GetRelations(Model.Id, relationType);

  <h2>Relations</h2>
    foreach (Relation relation in relations)
    {
...
    }
}

我基本上从这个论坛帖子中得到了这段代码:http: //our.umbraco.org/forum/developers/razor/28103-Using-relations-with-razor

这是一篇博客文章,其中包含有关关系 API 的更多信息:http: //blog.hendyracher.co.uk/umbraco-relation-api/

此外,如果您可以访问付费 Umbraco.tv 帐户,这将有所帮助:http ://umbraco.com/help-and-support/video-tutorials/developing-with-umbraco/relations/simple-document-to-文档关系/TVPlayer

于 2012-11-14T21:26:08.053 回答