Как сделать расширенный поиск?

Енот
Новичо́к, через «о́»
Регистрация
9 Мар 2020
Сообщения
115
#1
Как сделать расширенный поиск, чтоб писать например : сериал и название сериала, чтоб находило именно сериал, а если фильм и такое же название, то находило фильм с таким же названием. Просто есть фильмы и сериалы с одинаковыми названиями .Еще чтоб если написать в поиск 2020, то там фильмы будут 2020 года . Если написать жанр в поиск, то фильмы будут с этим жанром , который я указал в поиске.

Запросы в поиске :
"фантастика"
"2020"
"сериал "название его"
"комедия"
 
Думает, что помогает
Регистрация
15 Дек 2017
Сообщения
5,068
#2

Вставить код - В низ страницы

HTML:
<script>
var search_form = document.querySelector('form');
if (search_form) {
    search_form.addEventListener('submit', function(evt){
        evt.preventDefault();
        var q = document.querySelector('[name="q"]');
        var genres = ['комедия','драма','фантастика'];
        var countries = ['США','Россия','Япония'];
        var years = ['2020','2019','2018'];
        var type_tv = 'сериал';
        var type_movie = 'фильм';
        if (q && q.value) {
            var search_query = decodeURIComponent(q.value.trim());
            if (genres.indexOf(search_query) + 1) {
                return window.location.href = '/genre/' + encodeURIComponent(search_query);
            }
            if (countries.indexOf(search_query) + 1) {
                return window.location.href = '/country/' + encodeURIComponent(search_query);
            }
            if (years.indexOf(search_query) + 1) {
                return window.location.href = '/year/' + encodeURIComponent(search_query);
            }
            if (search_query.indexOf(type_tv) + 1 || search_query.indexOf(type_movie) + 1) {
                search_query = search_query.replace(type_tv, '').replace(type_movie, '').trim();
                return window.location.href = '/search/?q=' + encodeURIComponent(search_query);
            }
        }
    })
}
</script>
 
Енот
Новичо́к, через «о́»
Регистрация
9 Мар 2020
Сообщения
115
#3

Вставить код - В низ страницы

HTML:
<script>
var search_form = document.querySelector('form');
if (search_form) {
    search_form.addEventListener('submit', function(evt){
        evt.preventDefault();
        var q = document.querySelector('[name="q"]');
        var genres = ['комедия','драма','фантастика'];
        var countries = ['США','Россия','Япония'];
        var years = ['2020','2019','2018'];
        var type_tv = 'сериал';
        var type_movie = 'фильм';
        if (q && q.value) {
            var search_query = decodeURIComponent(q.value.trim());
            if (genres.indexOf(search_query) + 1) {
                return window.location.href = '/genre/' + encodeURIComponent(search_query);
            }
            if (countries.indexOf(search_query) + 1) {
                return window.location.href = '/country/' + encodeURIComponent(search_query);
            }
            if (years.indexOf(search_query) + 1) {
                return window.location.href = '/year/' + encodeURIComponent(search_query);
            }
            if (search_query.indexOf(type_tv) + 1 || search_query.indexOf(type_movie) + 1) {
                search_query = search_query.replace(type_tv, '').replace(type_movie, '').trim();
                return window.location.href = '/search/?q=' + encodeURIComponent(search_query);
            }
        }
    })
}
</script>
Огромное Вам спасибо
 
Енот
Новичо́к, через «о́»
Регистрация
9 Мар 2020
Сообщения
115
#4
Тут одна проблемка с кодом этим. Все классно работает, но когда пишу название фильма например "довод" в поиск и нажимаю интер, ничего не происходит, не перекидывает на страницу поисковую с фильмом. Жанры и год классно работают, ток как сделать так, чтоб просто можно было написать фильм и как раньше перекидывало на страницу с похожими фильмами
 
Думает, что помогает
Регистрация
15 Дек 2017
Сообщения
5,068
#5
Тут одна проблемка с кодом этим. Все классно работает, но когда пишу название фильма например "довод" в поиск и нажимаю интер, ничего не происходит, не перекидывает на страницу поисковую с фильмом. Жанры и год классно работают, ток как сделать так, чтоб просто можно было написать фильм и как раньше перекидывало на страницу с похожими фильмами
Точно, добавлено.

HTML:
<script>
var search_form = document.querySelector('form');
if (search_form) {
    search_form.addEventListener('submit', function(evt){
        evt.preventDefault();
        var q = document.querySelector('[name="q"]');
        var genres = ['комедия','драма','фантастика'];
        var countries = ['США','Россия','Япония'];
        var years = ['2020','2019','2018'];
        var type_tv = 'сериал';
        var type_movie = 'фильм';
        if (q && q.value) {
            var search_query = decodeURIComponent(q.value.trim());
            var url_query = encodeURIComponent(search_query);
            if (genres.indexOf(search_query) + 1) { return window.location.href = '/genre/' + url_query; }
            if (countries.indexOf(search_query) + 1) { return window.location.href = '/country/' + url_query; }
            if (years.indexOf(search_query) + 1) { return window.location.href = '/year/' + url_query; }
            search_query = search_query.replace(type_tv, '').replace(type_movie, '').trim();
            return window.location.href = '/search/?q=' + encodeURIComponent(search_query);
        }
    })
}
</script>
 
Енот
Новичо́к, через «о́»
Регистрация
9 Мар 2020
Сообщения
115
#6
Точно, добавлено.

HTML:
<script>
var search_form = document.querySelector('form');
if (search_form) {
    search_form.addEventListener('submit', function(evt){
        evt.preventDefault();
        var q = document.querySelector('[name="q"]');
        var genres = ['комедия','драма','фантастика'];
        var countries = ['США','Россия','Япония'];
        var years = ['2020','2019','2018'];
        var type_tv = 'сериал';
        var type_movie = 'фильм';
        if (q && q.value) {
            var search_query = decodeURIComponent(q.value.trim());
            var url_query = encodeURIComponent(search_query);
            if (genres.indexOf(search_query) + 1) { return window.location.href = '/genre/' + url_query; }
            if (countries.indexOf(search_query) + 1) { return window.location.href = '/country/' + url_query; }
            if (years.indexOf(search_query) + 1) { return window.location.href = '/year/' + url_query; }
            search_query = search_query.replace(type_tv, '').replace(type_movie, '').trim();
            return window.location.href = '/search/?q=' + encodeURIComponent(search_query);
        }
    })
}
</script>
Огромное спасибо
 
Енот
Новичо́к, через «о́»
Регистрация
9 Мар 2020
Сообщения
115
#7
Точно, добавлено.

HTML:
<script>
var search_form = document.querySelector('form');
if (search_form) {
    search_form.addEventListener('submit', function(evt){
        evt.preventDefault();
        var q = document.querySelector('[name="q"]');
        var genres = ['комедия','драма','фантастика'];
        var countries = ['США','Россия','Япония'];
        var years = ['2020','2019','2018'];
        var type_tv = 'сериал';
        var type_movie = 'фильм';
        if (q && q.value) {
            var search_query = decodeURIComponent(q.value.trim());
            var url_query = encodeURIComponent(search_query);
            if (genres.indexOf(search_query) + 1) { return window.location.href = '/genre/' + url_query; }
            if (countries.indexOf(search_query) + 1) { return window.location.href = '/country/' + url_query; }
            if (years.indexOf(search_query) + 1) { return window.location.href = '/year/' + url_query; }
            search_query = search_query.replace(type_tv, '').replace(type_movie, '').trim();
            return window.location.href = '/search/?q=' + encodeURIComponent(search_query);
        }
    })
}
</script>
Можете еще помочь написать код, чтоб еще поиск был по актерам?
 
Думает, что помогает
Регистрация
15 Дек 2017
Сообщения
5,068
#8
Добавляете массив:
var actors = ['Том Круз','Эмилия Кларк'];

Добавляете поиск:
if (actors.indexOf(search_query) + 1) { return window.location.href = '/actor/' + url_query; }
 
Енот
Новичо́к, через «о́»
Регистрация
17 Ноя 2019
Сообщения
170
#10
Как такой поиск внедрить в шаблон Tormund?
 
Думает, что помогает
Регистрация
15 Дек 2017
Сообщения
5,068
#13
Не работает этот код в Tormund.
Там шаблон имеет свой JS код, который перехватывает запрос до того, как он попадет в Ваш скрипт.
Нужно изучать и смотреть этот код в js файлах.
 
Енот
Новичо́к, через «о́»
Регистрация
3 Апр 2020
Сообщения
343
#15
Там шаблон имеет свой JS код, который перехватывает запрос до того, как он попадет в Ваш скрипт.
Нужно изучать и смотреть этот код в js файлах.
Может подскажете как в tormund подключить?