簡體   English   中英

C# Razor 查詢 - 使用 Umbraco V7,如何檢查當前頁面是否作為子項存在於任何 1 級內容樹節點中?

[英]C# Razor query - Using Umbraco V7, how can I check if current page exists as child item in any level 1 content tree nodes?

我有四個用於各種文化和主機名的主節點,它們在我的內容樹中都是第 1 級。

我正在檢查當前頁面是否作為這些節點中的任何一個中的子項存在,如果存在則顯示鏈接,特別是 hreflang 標記。 (並非所有子頁面都存在於每個節點上)

到目前為止,我嘗試的是創建 foreach 循環來循環,它是子項,但是到目前為止,它只返回了 1 級的子項。

IPublishedContent homeOne = Umbraco.TypedContent(1172);
IPublishedContent homeTwo = Umbraco.TypedContent(6093);
IPublishedContent homeThree = Umbraco.TypedContent(7886);
IPublishedContent homeFour = Umbraco.TypedContent(9679);

var pageUrl = CurrentPage.Url().ToString();

foreach (var item in homeOne.Children)
{
    var pagePath = item.Url.ToString();


    if (pagePath == pageUrl)
    {
        <link rel="alternate" href="@string.Format("https://www.domain.xx{0}", pagePath)" hreflang="x-default" />
        <link rel="alternate" href="@string.Format("https://www.domain.xx{0}", pagePath)" hreflang="en-gb" />
    }
}

然后,對於其他主節點,我在上面的示例下方有三個類似的 foreach 循環,有趣/煩人......如果我在 homeOne 的子頁面上,我只會看到為 homeOne 生成的鏈接,但是如果我 go 到一個孩子homeTwo 的頁面 我看到為 homeOne 和 homeTwo 生成的鏈接。 隨后訪問 homeThree 僅返回 homeOne 和 homeThree 的鏈接。

編輯

我應該重申,這四個根節點已經設置了文化和主機名,並且都使用相同的語言。 我基本上只是想看看當前頁面是什么,如果它作為子項存在於四個根節點中的一個或所有節點中,那么顯示相關鏈接

當前樹示例-

  • 家一
    • 產品1
    • 產品2
  • 家二
    • 產品1
  • 家三
    • 產品1
    • 產品2

希望有人能指出我正確的方向

謝謝

CurrentPage 應該有一個 Path 屬性,其中包含每個祖先的 ID。 我相信這是一個字符串,您可以用“,”分割,然后查看結果數組是否包含任何一個 homeNode ID。 像這樣的東西: https://coderwall.com/p/gl7poa/active-navigation-in-umbraco

但是,從您的代碼示例中,我無法真正弄清楚您要做什么。 如果您正在嘗試運行經典的多語言設置,請查看本教程 - 像這樣設置它(每種語言使用域/主機名)讓 Umbraco 處理很多麻煩: https://our.umbraco。 com/Documentation/Tutorials/多語言設置/index-v7

我為此找到的最終解決方案是通過 Umbraco 社區成員提供的,我對最終解決方案進行了一些調整,這些調整記錄在下面帖子的底部

https://our.umbraco.com/forum/using-umbraco-and-getting-started/100089-query-children-of-multiple-root-nodes-and-return-values-for-hreflang-tags

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM