1

「umbracoRedirect」を使用して他のページにリダイレクトされたページをxsltSearch結果の表示から除外するにはどうすればよいですか?

<xsl:variable name="possibleNodes" select="$items/descendant-or-self::*[
     @isDoc
     and string(umbracoNaviHide) != '1'
     and name() != 'ImageGalleryPhoto'
     and string(umbracoRedirect) != '1' <!-- How to hide umbracoRedirect from search ?? -->
     and count(attribute::id)=1
     and (umbraco.library:IsProtected(@id, @path) = false()
     or umbraco.library:HasAccess(@id, @path) = true())
]"/>
4

2 に答える 2

1

XSLTにロジックを配置する代わりに、プロパティumbracoRedirectを持つアイテム(およびその他の必須ではないアイテム)が最初にインデックス付けされないようにすることをお勧めします。そうすれば、マクロのロジックを理解する必要がなくなります。

イベントを使用する場合、インデックスが作成されているアイテムをキャッチし、プロパティが設定されている場合はプロセスをキャンセルできます。

void indexer_GatheringNodeData(object sender, IndexingNodeDataEventArgs e)
{
    if (e.IndexType == IndexTypes.Content)
    {
        var node = e.Node;
        var redirectElement = node.Element("umbracoRedirect");

        if (redirectElement != null && redirectElement.Value == "1")
            return;
    }
}

イベントハンドラーの実装方法は、過去数バージョンでわずかに変更されているため、特定のバージョンからの変更についてドキュメントを確認する価値があります。標準的なアプローチの例については、ここを参照してください。

于 2012-12-11T07:54:30.913 に答える
0

UmbracoフォーラムのChriztianSteinmeierに感謝します。

<xsl:variable name="possibleNodes" select="
        $items//*[@isDoc]
        [not(umbracoNaviHide = 1)]
        [not(self::ImageGalleryPhoto)]
        [not(normalize-space(umbracoRedirect))]
        [not(umbraco.library:IsProtected(@id, @path)) or umbraco.library:HasAccess(@id, @path)]
" />
于 2012-12-11T23:33:16.497 に答える