Mit einer Suchabfrage zu einer Suchseite navigieren

Häufig bietet es sich an, mit einer dynamischen Suchabfrage zu einer Suchseite zu navigieren, wenn Sie auf einen Link in einem Inhaltslayout klicken.

Beispiel: Sie möchten zu einer Suchseite namens "Autoren" navigieren, wenn Sie auf den Link "Weitere Artikel von diesem Autor" im Inhaltslayout klicken, und dabei eine Such-Payload übergeben. Das erreichen Sie mit dem folgenden Code. Beachten Sie, dass die globalen Objekte SCS und SCSRenderAPI bei der Ausführung in einer Siteseite für die Verwendung im Inhaltslayout verfügbar sind.

$('.more-from-author').click($.proxy(function () {
    var childrenPages = SCS.structureMap[SCS.navigationRoot].children;

    if (!childrenPages) return; // No pages

    // Find the Authors page
    for (var i = 0; i < childrenPages.length; i++) {
        var page = SCS.structureMap[childrenPages[i]];
        if (page.name === 'Authors') {
            var linkData = SCSRenderAPI.getPageLinkData(page.id);
            if (linkData && linkData.href) {
                var href = linkData.href,
                    searchPayload = content.author_id + '*',
                    contentType = "Starter-Blog-Post";
                // if both the page URL and the search query exists, navigate to the page passing in the query
                if (href && searchPayload) {
                    var queryStart = href.indexOf('?') === -1 ? '?' : '&';

                    // add in the contentType and search parameters
                    // contentType isn't a required URL parameter
                    // Payload contains search string only. No parameter name.
                    href += queryStart + (contentType ? 'contentType=' + contentType + '&' : '') + 'q=' + searchPayload;

                    // navigate to the search results page
                    window.location = href;
                 }
            }
        }
    }
}, this));

Wenn dasselbe Inhaltslayout wahrscheinlich mehrmals auf derselben Seite verwendet wird, sollten Sie die eindeutige ID im CSS-Selektor und nicht im Klassenselektor verwenden. Beispiel: $('.more-from-author').click(…).

Beispiel:

template.html
        <div id="{{navigateId}}">….</div>

render.js
        content.navigateId = this.scsData.id + 'detailTrigger';
        $('#' + navigateId).click(…)