Navigarea la o pagină de căutare cu o interogare de căutare

Un scenariu de utilizare comun este navigarea la o pagină de căutare cu o interogare de căutare dinamică prin accesarea unui link în interiorul unei machete de conţinut.

De exemplu, să presupunem că doriţi să navigaţi la o pagină de căutare denumită „Autori” printr-un clic pe linkul „Mai multe articole de la acest autor” din macheta dvs. de conţinut, transmiţând un payload de căutare. Următorul cod va îndeplini acest lucru. Observaţi că obiectele globale SCS şi SCSRenderAPI sunt disponibile pentru utilizare în macheta de conţinut, atunci când se rulează în interiorul unei pagini a site-ului.

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

Dacă preconizaţi că aceeaşi machetă de conţinut se va utiliza de mai multe ori în aceeaşi pagină, este mai indicat să se utilizeze ID-ul unic din selectorul CSS decât selectorul de clasă, ca $('.more-from-author').click(…).

De exemplu:

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

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