【问题标题】:Umbraco - Displaying a specific image within a macro for-each child of certain nodeUmbraco - 在宏中为特定节点的每个子节点显示特定图像
【发布时间】:2013-01-06 13:25:43
【问题描述】:

Umbraco 新手在这里。我研究了一吨,但似乎找不到我要找的东西。

我在主页上有一个带有滑块的站点,滑块位于一个宏中,该宏使用一个 for-each(节点子级),最终目标是显示来自该文档类型的“heroImage”图像。我不能将图片作为新手发布到该网站,但这是我的内容结构:

HOME
PORTFOLIO
 - First Item
 - Another Item
ABOUT
CONTACT US

Home、Portfolio、ABOUT联系我们“登陆页面”文档类型,以及 Portfolio 下的子项(First ItemAnother Item)是“投资组合条目”文档类型。下面是“登陆页面”上调用幻灯片宏的代码。

投资组合条目具有以下字段:

  • 英雄形象
  • 图片
  • 身体

幻灯片宏显然是那里的亮点。很容易。这是我的宏代码,您将在其中看到我正在尝试为每个“for-each”显示相关节点的 heroImage。

<xsl:template match="/">

    <!-- slider -->
    <div id="slideshow">
        <div id="slider" class="nivoSlider">
            <xsl:for-each select="umbraco.library:GetXmlNodeById(1081)/*[@isDoc and position() &lt; 4]">
                <xsl:variable name="mediaId" select="umbraco.library:GetMedia(@id, 'false')/data [@alias = 'umbracoFile']" />
                <xsl:if test="$mediaId &gt; 0">
                    <xsl:variable name="mediaNode" select="umbraco.library:GetMedia($mediaId, 0)" />
                    <xsl:if test="count($mediaNode/data) &gt; 0 and string($mediaNode/data[@alias='umbracoFile']) != ''">
                        <img src="{$mediaNode/data[@alias='umbracoFile']}" alt="[image]" />
                    </xsl:if>
                </xsl:if>
            </xsl:for-each>
        </div>
    </div>
    <!-- data-transition="slideInLeft" -->
    <script type="text/javascript">
        $(window).load(function() {
        $('#slider').nivoSlider();
        });
    </script>

</xsl:template>

我觉得我很接近,并且搜索查询用完了,因为我发现的大多数解决方案都依赖于从宏的另一端传递到宏的 imageId,这是行不通的。

希望我已经对此进行了充分的解释,并提前感谢您的帮助!

【问题讨论】:

    标签: macros umbraco


    【解决方案1】:

    首先,您似乎在硬编码父节点 ID。在您刚刚提供的代码中,似乎获取了 id 为 1081 的节点的子节点。通过阅读您刚刚发布的内容,您似乎希望在所有登录页面上显示他们的个人投资组合条目。

    无论哪种方式,我都会远离硬编码 ID。如果节点 ID 发生任何变化(用户删除节点,它作为包导出到实时环境等),您的代码将停止工作。我只是使用 $currentPage 代替。

    从您的过滤器来看,我想您只希望前 3 个项目显示在滑块中。代码似乎是正确的,您似乎使用的是旧架构及其关联的 xpath。如果您使用的是较新版本的 Umbraco,您在 xslt 中引用节点数据的方式将会改变。我猜您已经找到了许多代码示例并尝试将它们合并在一起,却没有意识到它们不会调用相同的模式。

    This wiki link 将提供更多信息,如果您使用了错误的 xpath,希望能解决您的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-04
      • 1970-01-01
      • 1970-01-01
      • 2019-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多