Перейти к основному содержимому

Работа с нейросетью

·259 слов·2 минут
## Как мы чинили поиск на сайте

Я: Теперь переход на страницу поиска всегда со светлой темой. А сам поиск не работает.

Нейронка: Страница поиска не работает, потому что скрипт был удалён из-за CSP. Давайте пересоздадим страницу поиска с внешним скриптом.

Создаём внешний JS-файл:

(function() {
  var theme = localStorage.getItem('appearance');
  if (theme === 'light' || theme === 'dark') {
    document.body.className = theme;
  } else {
    document.body.className = 'dark';
  }
  fetch('/index.json')
    .then(function(r) { return r.json(); })
    .then(function(data) {
      var input = document.getElementById('search-input');
      var results = document.getElementById('search-results');
      input.addEventListener('input', function() {
        var q = this.value.trim().toLowerCase();
        if (q.length < 2) { results.innerHTML = ''; return; }
        var found = data.filter(function(item) {
          return (item.title || '').toLowerCase().indexOf(q) !== -1 ||
                 (item.content || '').toLowerCase().indexOf(q) !== -1 ||
                 (item.summary || '').toLowerCase().indexOf(q) !== -1;
        });
        if (found.length === 0) { results.innerHTML = '<p>Ничего не найдено</p>'; return; }
        var html = '';
        found.forEach(function(item) {
          html += '<div class="result-item">';
          html += '<a href="' + item.url + '">' + item.title + '</a>';
          html += '<p>' + (item.summary || '').replace(/<[^>]*>/g, '') + '</p>';
          html += '</div>';
        });
        results.innerHTML = html;
      });
    });
})();

Я: Теперь поиск работает, но страница всегда в тёмной теме.

Нейронка: Проверим localStorage. Blowfish использует ключ appearance, а не pref-theme.

Исправляем скрипт:

sed -i "s|localStorage.getItem('pref-theme')|localStorage.getItem('appearance')|" static/js/search.js

Собираем и загружаем:

cd ~/Рабочий\ стол/infoguardtech-blog && /usr/local/bin/hugo && \
ssh myvps "sudo rm -rf /var/www/infoguardtech.ru/* && sudo cp -r /tmp/new-site/* /var/www/infoguardtech.ru/" && \
echo "ГОТОВО"

Я: Готово. Бекапимся.

Теперь поиск работает в обеих темах. Потребовалось найти правильный ключ localStorage (appearance) и вынести скрипт во внешний файл, чтобы обойти ограничения Content Security Policy.