0

これが私のシナリオです:

  1. Author PickerデフォルトにumbBlogPost(blog4umbraco パッケージから) を追加しました。これにより、XSLT マクロで作成者の ID にアクセスできます。
  2. メンバーではなくAuthor Picker、umbracoユーザーのリストをプルアップしています。
  3. xslt 出力に作成者のユーザー名を表示したい

メンバーではなくumbracoユーザーを扱っているため、メンバーシップAPIを使用しているようumbraco.libary:GetMemberに見えるGoogle検索に基づいて、いくつかの異なる方法を試しました。または など、ユーザーと同等のメソッドはumbraco.library:GetMemberNameないようです。umbraco.libary:GetUserumbraco.library:GetUserName

xslt マクロでユーザー プロパティを取得する方法を知っている人はいますか? バージョン 4.7.2 を使用しています。また、私は現在 xslt で作業していますが、これが Razor マクロで実行できる場合 (4.7.2 でサポートされている場合) は、このアプローチも受け入れます。ありがとう。

4

3 に答える 3

1

XSLT が実行する XML を直接調べたところ ( ~/App_Data/umbraco.config)、次の属性が見つかりました。

<Site 
     writerID="0" 
     creatorID="0" 
     writerName="John Smith"
     creatorName="John Smith" 
     />

したがって、次のように XSLT でそれらを参照できるはずです。

<xsl:value-of select="$currentPage/@writerName" />

ユーザーの他のプロパティが必要な場合は、XSLT ファイルからアクセスできる独自のライブラリを作成する必要があります。umbraco.libraryファイルの先頭にどのように含まれているかを見てください。

于 2012-06-19T23:28:09.273 に答える
0

私はRazorマクロを書くことでこれを解決しました。@using umbraco.BusinessLogic;重要なのは、マクロの先頭に追加することでした。この名前空間は、メンバー データではなく、ユーザー データを取得するために必要な API を提供します。

興味のある方のために、私が書いたマクロを次に示します。

@using umbraco.BusinessLogic;
@inherits umbraco.MacroEngines.DynamicNodeContext


<div>
  <h1>
    From Our Blog
  </h1>
  <ul>
  @foreach(var i in @Model.AncestorOrSelf("umbHomepage").Descendants("umbBlogPost").OrderBy("PostDate desc").Take(5))
  {
    <li>
      <p>
        <a href="@i.NiceUrl" title="@i.Name">@i.Name</a><br />
        by <a href="#">@umbraco.BusinessLogic.User.GetUser(Int32.Parse(i.blogAuthor)).Name</a> on @i.PostDate.ToString("MMM dd, yyyy")
      </p>
    </li>
  }
  </ul>
</div>
于 2012-07-20T00:02:08.530 に答える