Отображать заголовок при отображении результатов поиска - PullRequest
0 голосов
/ 15 мая 2018

Я не нашел способа вывести заголовок (Результаты поиска :) перед результатами поиска, который отображается только при отображении результатов.

Не было бы проблемой иметь его каждый раз (часть шаблона элемента попадания), но он мне не нужен, если отображается пустой шаблон результатов.

Какое было бы хорошее решение?

Вот моя текущая конфигурация виджетов хитов:

this.search.addWidget(
  this.algoliaInstantSearch.widgets.hits({
    container: '.js-algolia-hits',
    escapeHits: true,
    templates: {
      item: document.querySelector('.js-algolia-hit-item-template').innerHTML,
      empty: window.algoliaEmptyResultsText
    },
    cssClasses: {
      root: 'c-search__hits-list',
      empty: 'c-search__hits-empty',
      item: 'c-search__hits-list-item'
    }
  })
);

1 Ответ

0 голосов
/ 16 мая 2018

Вы можете использовать опцию шаблона allItems, чтобы полностью контролировать рендеринг хитов.

search.addWidget(
  instantsearch.widgets.hits({
    container: document.querySelector("#products"),
    templates: {
      allItems: function({ hits }) {
        // No results message
        if (hits.length === 0) return "";

        const hitsMarkup = hits
          .map(
            hit =>
              `<div class="ais-hits--item">${
                hit._highlightResult.name.value
              }</div>`
          )
          .join("");

        return `
          <div>
            <h1>Search Results:</h1>
            <div class="ais-hits--container">${hitsMarkup}</div>
          </div>
        `;
      }
    }
  })
);

Результат вы можете увидеть здесь: https://codesandbox.io/s/8zxxvo84wl

...