Siirtyminen hakusivulle hakukyselyllä

Hakusivulle siirtyminen dynaamisen hakukyselyn kanssa, kun sisällön asettelussa olevaa linkkiä napsautetaan, on yleinen käyttötapaus.

Oletetaan esimerkiksi, että haluat siirtyä hakusivulle nimeltä "Kirjoittajat", kun sisällön asettelun "Lisää saman kirjoittajan artikkeleita" -linkkiä napsautetaan, ja välittää samalla hakuun liittyviä tietoja. Voit tehdä tämän käyttämällä seuraavaa koodia. Huomaa, että yleisobjektit SCS ja SCSRenderAPI ovat käytettävissä sisällön asettelussa, kun se suoritetaan sivuston sivulla.

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

Jos odotat, että samaa sisällön asettelua käytetään useita kertoja samalla sivulla, on järkevämpää käyttää CSS-valitsimessa yksilöivää tunnusta kuin luokan valitsinta, kuten $('.more-from-author').click(…).

Esimerkki:

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

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