Accès à une page de recherche à l'aide d'une requête de recherche

Un cas d'emploi courant consiste à accéder à une page de recherche à l'aide d'une requête de recherche dynamique lors de l'activation d'un lien dans une présentation de contenu.

Admettons par exemple que vous vouliez accéder à une page de recherche nommée "Authors" lorsque vous cliquez sur le lien "More articles from this author" dans votre présentation de contenu, transmettant les données traitées de recherche. Le code suivant vous permet d'y parvenir. Les objets globaux SCS et SCSRenderAPI peuvent être utilisés dans la présentation de contenu lors de l'exécution dans une page de site.

$('.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));

Si vous souhaitez utiliser la même présentation de contenu plusieurs fois dans une même page, il est préférable d'employer l'ID unique dans le sélecteur CSS plutôt que dans le sélecteur de classe, tel que $('.more-from-author').click(…).

Par exemple :

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

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