0

アンブラコ初心者です。たくさん調べましたが、探しているものが見つからないようです。

ホームページにスライダーのあるサイトがあります。スライダーは、そのdoctypeから「heroImage」画像を表示するという最終目標を持つ(ノードの子の)for-eachを使用しているマクロに座っています。このサイトに初心者として画像を投稿することはできませんが、私のコンテンツ構造は次のとおりです。

HOME
PORTFOLIO
 - First Item
 - Another Item
ABOUT
CONTACT US

Home、Portfolio、ABOUTCONTACT US「Landing Pages」ドキュメント タイプで、Portfolio の下の子 (最初のアイテム別のアイテム) は「Portfolio Entries」ドキュメント タイプです。以下は、スライドショー マクロを呼び出す「ランディング ページ」のコードです。

ポートフォリオ エントリには次のフィールドがあります。

  • ヒーロー画像
  • 画像

スライドショー マクロは明らかにハイライトです。簡単です。これが私のマクロ コードです。「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 に依存していたため、検索クエリが不足しているように感じましたが、これは機能しませんでした。

これについて十分に説明していただければ幸いです。ご協力いただきありがとうございます。

4

1 に答える 1

0

まず、親ノードIDをハードコーディングしているようです。提供したコードでは、ID 1081のノードの子のみを取得しているようです。投稿した内容を読むと、すべてのランディングページで、個々のポートフォリオエントリを表示したいようです。

いずれにせよ、私はIDをハードコーディングしないようにします。ノードIDが何らかの方法で変更された場合(ユーザーがノードを削除した場合、ノードがパッケージとしてライブ環境にエクスポートされた場合など)、コードは機能しなくなります。代わりに$currentPageを使用します。

フィルタから判断すると、最初の3つのアイテムだけをスライダーに表示したいと思います。コードは正しいようです、古いスキーマとそれに関連するxpathを使用しているようです。新しいバージョンのUmbracoを使用している場合、xsltでノードデータを参照する方法が変更されます。同じスキーマを呼び出さないことに気付かずに、多くのコード例を見つけてそれらをマージしようとしたと思います。

このwikiリンクは、より多くの情報を提供し、間違ったxpathを使用している場合に問題を修正できることを願っています。

于 2013-01-06T14:05:07.063 に答える