Отключить Algolia для WP SearchAsYouType - PullRequest
0 голосов
/ 04 февраля 2019

Я внедрил Algolia для Wordpress и настраиваю шаблон поиска в файле «InstantSearch.php».

Глядя на документацию здесь https://www.algolia.com/doc/api-reference/widgets/search-box/js/#widget-param-searchasyoutype установка параметра searchAsYouType на false должна препятствовать тому, чтобы Algolia обнаруживала пользовательский ввод и осуществлял поиск при вводе пользователем.Однако этот параметр не отключает поиск при вводе моего сайта.

Ниже приведен код для моего виджета поля ввода и других пользовательских компонентов:

/* Instantiate instantsearch.js */
var search = instantsearch({
    appId: algolia.application_id,
    apiKey: algolia.search_api_key,
    indexName: algolia.indices.searchable_posts.name,
    urlSync: {
        mapping: {'q': 's'},                                                                     
        trackedParameters: ['query']
},
searchParameters: {
    facetingAfterDistinct: true,
    highlightPreTag: '__ais-highlight__',
    highlightPostTag: '__/ais-highlight__'
                    }
                });

    /* Search box widget */
    search.addWidget(
        instantsearch.widgets.searchBox({
            container: '#algolia-search-box',
            placeholder: 'Search ...',
            searchAsYouType: false,
            wrapInput: false,
            poweredBy: algolia.powered_by_enabled
        })
    );

    /* Hits widget */
    search.addWidget(
        instantsearch.widgets.hits({
            container: '#algolia-hits',
            hitsPerPage: 10,
            templates: {
                empty: 'No results were found for "<strong>{{query}}</strong>".',
                item: wp.template('instantsearch-hit')
            },
            transformData: {
                item: function (hit) {

                    function replace_highlights_recursive (item) {
                      if( item instanceof Object && item.hasOwnProperty('value')) {
                          item.value = _.escape(item.value);
                          item.value = item.value.replace(/__ais-highlight__/g, '<em>').replace(/__\/ais-highlight__/g, '</em>');
                      } else {
                          for (var key in item) {
                              item[key] = replace_highlights_recursive(item[key]);
                          }
                      }
                      return item;
                    }

                    hit._highlightResult = replace_highlights_recursive(hit._highlightResult);
                    hit._snippetResult = replace_highlights_recursive(hit._snippetResult);

                    console.log(hit);

                    if ( hit.post_excerpt != '' ){
                        hit._snippetResult['content']['value'] = hit.post_excerpt;  
                    }
                    if ( hit.short_title.length > 0 && hit.short_title[0] != '' ){
                        hit._highlightResult['post_title']['value'] = hit.short_title[0];   
                    }

                    return hit;
                }
            }
        })
    );

    /* Pagination widget */
    search.addWidget(
        instantsearch.widgets.pagination({
            container: '#algolia-pagination'
        })
    );

    /* Tags refinement widget */
    search.addWidget(
        instantsearch.widgets.refinementList({
            container: '#facet-tags',
            attributeName: 'taxonomies.aar_article_type',
            operator: 'and',
            limit: 15,
            sortBy: ['isRefined:desc', 'count:desc', 'name:asc'],
            templates: {
                header: '<h2 class="widgettitle">Filter Results</h2>'
        }
    })
);

/* Start */
search.start();

Я добавил параметр в виджет окна поиска, но при вводе страницы страница все равно автоматически обновляетсябез меня, чтобы нажать кнопку отправить.Я пропустил конфигурацию или что-то?

1 Ответ

0 голосов
/ 05 февраля 2019

Правильным свойством для этого является searchOnEnterKeyPressOnly , а не searchAsYouType

Соответствующую документацию для используемого виджета можно найти здесь https://community.algolia.com/instantsearch.js/v2/widgets/searchBox.html#struct-SearchBoxWidgetOptions-searchOnEnterKeyPressOnly

...