我在Umbraco中执行以下步骤,在我的内容节点中添加文件夹结构。
第1步
创建一个名为“内容文件夹”的新文档类型。
转到设置>文件类型>点击3点>创建。给 它的名称是Content Folder。作为图标选择文件夹图标添加新的 property使用类型Content Picker的别名umbracoRedirect重定向 保存更改内置属性umbracoRedirect用于重定向 一个节点使用其id到另一个节点。因此,为每个文件夹设置此属性 到第一个子页面。
第2步
在此文件夹中允许您的子节点类型。
转到“内容文件夹”属性的结构选项卡检查 您要在此文件夹下保留的子类型保存更改
第3步
在根目录主节点下允许此文件夹。
转到Home root属性的结构选项卡检查 ContentFoldertype允许作为子节点保存更改
第4步
添加文件夹结构并添加页面。
转到您的内容在类型的根节点下添加新文件夹 内容文件夹为其命名HQ添加一个名为A的新页面 允许在您的文件夹下在您的HQ中将Redirect属性设置为您的 第一页为所有文件夹和页面执行此操作保存更改和 发布
但是我的页面中有以下宏,它显示了我所在节点的子节点。由于我将它们放在根目录中,因为我已将它们移动到子文件夹中,所有列表都比它们应该高1级be(因为当前节点低1级。
在结构中下面我有2个单独的菜单,无论您是在章节还是章节页面上,都会出现一个菜单,该章节显示该章节中所有部分的列表。所以对于第1章,它将显示1.1和1.2。第二个菜单在同一章中的Section和story Pages上显示,并在该部分中显示故事,因此,如果我在1.1页面上,它将向我展示故事1.1.1,1.1.2和1.1.3
My Structure Is Like This Root -Team 1 (Folders) --Level 1 (Chapters) ---Level 1.1 (Sections) ----Level 1.1.1 (Stories) ----Level 1.1.2 (Stories) ----Level 1.1.3 (Stories) ---Level 1.2 (Sections) ----Level 1.2.1 (Stories) ----Level 1.2.2 (Stories) ----Level 1.2.3 (Stories) --Level 2 ---Level 2.1 ----Level 2.1.1 --Level 3 --Level 4 ---Level 4.1 ----Level 4.1.1 -Team 2 Folder -Team 3 Folder
<umbraco:Macro runat="server" language="cshtml"> @inherits umbraco.MacroEngines.DynamicNodeContext
@*
Macro to display child pages below the root page of a standard website.
Also highlights the current active page/section in the navigation with
the css class "current".
*@
@{
@* Get the root of the website *@
var root = Model.AncestorOrSelf(1);
}
<ul>
<li>Chapter<br>
Sections
<ul>
@foreach (var page in root.Children.Where("Visible"))
{
<li class="@page.IsAncestorOrSelf(Model, "current", "")"> <a href="@page.Url">@page.Name</a> </li>
}
</ul>
</li>
</ul>
</umbraco:Macro>
我想知道如何让我的宏再次工作并重新启动正确的节点。
修改
我也有此代码显示第二级节点
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xsl:stylesheet [ <!ENTITY nbsp " "> ]>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxml="urn:schemas-microsoft-com:xslt"
xmlns:umbraco.library="urn:umbraco.library" xmlns:Examine="urn:Examine"
exclude-result-prefixes="msxml umbraco.library Examine ">
<xsl:output method="xml" omit-xml-declaration="yes" />
<xsl:param name="currentPage"/>
<!-- Input the documenttype you want here -->
<xsl:variable name="level" select="2"/>
<xsl:variable name="startNode" select="$currentPage/ancestor-or-self::*[@level = $level]" />
<xsl:variable name="nodesToShow" select="$startNode/*[@isDoc][not(umbracoNaviHide = 1)]" />
<xsl:template match="/">
<!-- The fun starts here -->
<xsl:if test="$nodesToShow">
<img src="/media/1133/actheader2.png" alt="Activities in this Section" class="acttitle" />
</xsl:if>
<ul>
<xsl:for-each select="$currentPage/ancestor-or-self::* [@level=$level]/* [@isDoc and string(umbracoNaviHide) != '1']">
<li>
<xsl:attribute name="class">
<xsl:if test="contains(activityextras,'Video')">Video</xsl:if>
<xsl:if test="contains(activityextras,'Scripted')">Scripted</xsl:if>
</xsl:attribute>
<a href="{umbraco.library:NiceUrl(@id)}">
<xsl:value-of select="@nodeName" />
</a>
</li>
</xsl:for-each>
</ul>
</xsl:template>
</xsl:stylesheet>
答案 0 :(得分:1)
这里的代码部分是:
var root = Model.AncestorOrSelf(1);
获取级别1的页面,该页面始终是homePage。如果文件夹现在始终处于第二级,您应该只能将其更改为:
var root = Model.AncestorOrSelf(2);
只要你在文件夹下面,那就应该找到你的文件夹。如果您可能有嵌套文件夹,则需要进行进一步更改。