Как отобразить следующие/предыдущие ссылки в ссылках на страницы системы пользовательского поиска Google

Интеграция пользовательского поиска Google включает только пронумерованные ссылки на страницы, и я не могу найти способ включить ссылки «Следующая/Предыдущая», как в обычном поиске Google. Раньше CSE включала эти ссылки в свой предыдущий метод интеграции с iframe.


person Kevin Lewis    schedule 21.07.2010    source источник


Ответы (3)


Я прошел через javascript и нашел недокументированные свойства, которые искал.

<div id="cse" style="width: 100%;">Loading</div>
<script src="http://www.google.com/jsapi" type="text/javascript"></script>
<script type="text/javascript">

google.load('search', '1', {language : 'en'});
google.setOnLoadCallback(function() {
    var customSearchControl = new google.search.CustomSearchControl('GOOGLEIDGOESHERE');
    customSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET);
    customSearchControl.setSearchCompleteCallback(null, 
        function() { searchCompleteCallback(customSearchControl) });

    customSearchControl.draw('cse');   
}, true);


function searchCompleteCallback(customSearchControl) {

    var currentPageIndex = customSearchControl.e[0].g.cursor.currentPageIndex;

    if (currentPageIndex < customSearchControl.e[0].g.cursor.pages.length - 1) {
        $('#cse .gsc-cursor').append('<div class="gsc-cursor-page">Next</div>').click(function() {
            customSearchControl.e[0].g.gotoPage(currentPageIndex + 1);
        });
    }

    if (currentPageIndex > 0) {
        $($('#cse .gsc-cursor').prepend('<div class="gsc-cursor-page">Previous</div>').children()[0]).click(function() {
            customSearchControl.e[0].g.gotoPage(currentPageIndex - 1);
        });
    }

    window.scrollTo(0, 0);

}
</script>

<link rel="stylesheet" href="http://www.google.com/cse/style/look/default.css" type="text/css" />
person Kevin Lewis    schedule 21.07.2010
comment
Я использовал это решение, пока оно неожиданно не сломалось. Использование вашего точного кода выше больше не работает. Я получаю эту ошибку: customSearchControl.e[0].g не определен - person Ian; 22.09.2010
comment
Похоже, они изменили свои недокументированные свойства? :/ - person Ian; 22.09.2010
comment
Да, измените e[0].g на e[0].h, и все будет хорошо... пока. - person Ian; 22.09.2010
comment
У кого-нибудь была проблема с IE и пейджингом в пользовательском поиске? По какой-то причине мне приходится дважды нажимать на ссылки, чтобы IE заработал. - person Jack Marchetti; 04.02.2011

Я использовал это, чтобы найти текущую страницу:

ctrl.setSearchCompleteCallback(null, function(gControl, gResults)
{
    currentpage = 1+gResults.cursor.currentPageIndex;
    // or, here is an alternate way
    currentpage = $('.gsc-cursor-current-page').text();
});
person Daniel    schedule 09.11.2011

А сейчас customSearchControl.k[0].g.cursor... (по состоянию на эти выходные, кажется)

В следующий раз, когда он перестанет работать, просто перейдите к отладке скриптов в IE, добавьте customSearchControl в качестве часов, откройте свойства (+), в столбце Type найдите Object (массив) и убедитесь, что там также есть (+) ( т.е. содержит элементы), open[0], и найдите Type Object, опять же с дочерними элементами. Откройте это, и как только вы увидите «курсор» в списке, он у вас есть.

person Bart    schedule 09.05.2011