2

「Blog」という新しいページにブログ アプリケーションを正常に追加しました。現在、最新の 5 つのブログ投稿のリストが必要な別の「AboutUs」ページがあります。このために、必要に応じてブログを表示できる Community.Blog.Renderer に似た新しい XSLT 関数を作成しました。

次に「AboutUs」ページにブログアプリを追加しました。しかし、これは別のアプリケーションのようです。私が達成したいこと:

  1. 「ブログ」ページに投稿された最新の 5 つのブログのリストを表示する「AboutUs」ページの小さなウィジェット。
  2. このような各ウィジェットの [続きを読む] ボタン。クリックすると、[ブログ] ページの対応するブログにリダイレクトされます。

私はコンポジット C1 を初めて使用しましたが、これまでのところ非常に気に入っています。コンポジット C1 が私の要求をどうにか処理でき、私をがっかりさせないことを願っています。ご心配をおかけしております。

4

1 に答える 1

2

このスレッドをクリーンに保つために、Innaがcodeplexディスカッションフォーラムに投稿した回答は次のとおりです。

これは、単純なXSLTを作成することで実現できます。

  1. たとえば、Composite.Community.Blog.Latestという名前のXSLTを作成します
  2. [関数呼び出し]タブで、 2つの関数「Composite.Community.Blog.Entries.GetEntriesXml と「Composite.Community.Blog.XsltExtensions」を追加します。このようなソースコード

    <f:functions xmlns:f="http://www.composite.net/ns/function/1.0">
    <f:function name="Composite.Community.Blog.Entries.GetEntriesXml" localname="GetEntriesXml">
        <f:param name="PropertyNames">
            <f:paramelement value="Date" />
            <f:paramelement value="Teaser" />
            <f:paramelement value="PageId" />
            <f:paramelement value="Id" />
            <f:paramelement value="Title" />
        </f:param>
        <f:param name="OrderByField" value="Date" />
        <f:param name="OrderAscending" value="False" />
        <f:param name="PageSize" value="5" />
    </f:function>
    <f:function name="Composite.Community.Blog.XsltExtensions" localname="XsltExtensions" />
    </f:functions>
    

    GetEntriesXmlの選択されたフィールドPageIdDateTitleフィールドが含まれていることを確認してください。ブログエントリのURLを生成するために必要になります。

  3. [テンプレート]タブには、次のようなものがあります。

    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:in="http://www.composite.net/ns/transformation/input/1.0" xmlns:lang="http://www.composite.net/ns/localization/1.0" xmlns:f="http://www.composite.net/ns/function/1.0" xmlns="http://www.w3.org/1999/xhtml" xmlns:be="#BlogXsltExtensionsFunction"  exclude-result-prefixes="xsl in lang f be">
        <xsl:template match="/">
        <html>
            <head></head>
            <body>
                <ul>
                    <xsl:for-each select="/in:inputs/in:result[@name='GetEntriesXml']/Entries">
                        <li>
                            <h3>
                                <xsl:value-of select="@Title" />
                            </h3>
                            <p>
                                <xsl:value-of select="@Teaser" />
                            </p>
                            <a href="~/page({@PageId}){be:GetBlogUrl(@Date, @Title)}">Read more...</a>
                        </li>
                    </xsl:for-each>
                </ul>
            </body>
        </html>
        </xsl:template>
    </xsl:stylesheet>
    
  4. 次に、このXSLTを、最新の5つのブログエントリのリストを表示する場所に挿入します。(:最新のエントリのリストを表示するページにブログアプリケーションを追加しないでください。)

于 2012-04-07T05:45:55.293 に答える