Andare a una pagina di ricerca con una query di ricerca

Un caso d'uso comune consiste nell'andare a una pagina di ricerca con una query di ricerca dinamica quando si fa clic su un collegamento all'interno di un layout di contenuto.

Si supponga, ad esempio, di voler andare a una pagina di ricerca denominata "Authors" quando si fa clic sul collegamento "Altri articoli dello stesso autore" nel layout di contenuto, passando un payload di ricerca. Queste operazioni sono possibili con il codice riportato di seguito. Tenere presente che gli oggetti globali SCS e SCSRenderAPI sono disponibili per l'uso nel layout di contenuto in esecuzione in una pagina di sito.

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

Se si prevede di utilizzare più volte lo stesso layout di contenuto nella stessa pagina, è preferibile utilizzare l'ID univoco nel selettore CSS anziché nel selettore delle classi, ad esempio $('.more-from-author').click(…).

Ad esempio:

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

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