Как создать навигацию по нескольким категориям (фильмы, комедия, 2021, США)?

Енот
Новичо́к, через «о́»
Регистрация
26 Авг 2018
Сообщения
495
#1
В данный момент если пользователь выбирает жанр и хочет из жанра выбрать фильмы или сериалы по году или стране и соответственно в обратном порядке, то выборка не происходит. Как добавить такую возможность сортировки ???
 
Регистрация
15 Дек 2017
Сообщения
5,067
#2
Система понимает несколько категорий в запросе.

Нужно сделать чтобы при нажатии на год, жанр или страну, в URL добавлялся или обновлялся параметр.

/type/фильмы?year=2010
/type/фильмы?year=2010&genre=комедия
/type/фильмы?year=2010&genre=комедия&country=США
 
Енот
Новичо́к, через «о́»
Регистрация
22 Апр 2019
Сообщения
94
#3
Система понимает несколько категорий в запросе.

Нужно сделать чтобы при нажатии на год, жанр или страну, в URL добавлялся или обновлялся параметр.

/type/фильмы?year=2010
/type/фильмы?year=2010&genre=комедия
/type/фильмы?year=2010&genre=комедия&country=США
@Alisa, А нельзя такое в шаблон включить? Пользователем было бы очень удобно. Чтобы пользователь мог сам ссылку составить, указывая параметры на сайте.

Например так :
1e4e89fb43.jpg
 
Енот
Новичо́к, через «о́»
Регистрация
26 Авг 2018
Сообщения
495
#4
@Alisa, А нельзя такое в шаблон включить? Пользователем было бы очень удобно. Чтобы пользователь мог сам ссылку составить, указывая параметры на сайте.

Например так :
Посмотреть вложение 5262
ооооооо, гдек ты это взял? ссылку на ресурс в студию, я такой попробую сам собрать, думаю особо сложного ничего там нет
 
Енот
Новичо́к, через «о́»
Регистрация
22 Апр 2019
Сообщения
94
#5
ооооооо, гдек ты это взял? ссылку на ресурс в студию, я такой попробую сам собрать, думаю особо сложного ничего там нет
kinoprofi.vip, для IP c РФ сайт недоступен
 
Енот
Новичо́к, через «о́»
Регистрация
22 Апр 2019
Сообщения
94
#6
ооооооо, гдек ты это взял? ссылку на ресурс в студию, я такой попробую сам собрать, думаю особо сложного ничего там нет
Правда мне там не очень нравится, если поставить допустим два жанра - ужасы+фантастика, покажет все фильмы фантастика и отдельно ужасы, а не фильмы, где жанр фантастика, ужасы...
Не получится пользователю собрать себе фильм по жанрам или исключить какой-то.
 
Енот
Новичо́к, через «о́»
Регистрация
26 Авг 2018
Сообщения
495
#7
Попробую запилить) правда с меня тот ещё разработчик 😅
 
Енот
Новичо́к, через «о́»
Регистрация
26 Авг 2018
Сообщения
495
#8
Помогите привести ссылку к нормальному виду:
/type/serials?country=c-SSHA&genre=g-boevik&year=2010
/country/c-SSHA?genre=g-boevik&year=2010
/genre/g-boevik?year=2010&country=c-SSHA
/year/2010?genre=g-boevik&country=c-SSHA

Сейчас формируется ссылка вида
?year=2021?genre=боевик?country=США
Ошибка с амперсандом '&' в регулярках 100% которые я ненавижу :unsure::cautious:

И этот пункт не маловажен
Screenshot_1.png


Код:
        <section class="guide-menu fluid" style="padding: 0">
            <h5 class="section-heading">ФИЛЬТРЫ</h5>
            <style>
                select{
                    border-radius: 5px;
                    border: 0;
                    background: #444;
                    color: #fff;
                    padding: 5px;
                    margin: 5px 25px;
                    width: 155px;
                }
                button{
                    border-radius: 5px;
                    border: 0;
                    background: #444;
                    color: #fff;
                    padding: 5px;
                    margin: 5px 25px;
                    width: 155px;
                }
            </style>
            <select data-category="year">
                <option>Все годы</option>
                <% page.urls.years.forEach(function(year) { %>
                <option value="<%= year.title %>"><%- year.title %></option>
                <% }); %>
            </select>
            <br>
            <select data-category="genre">
                <option>Все жанры</option>
                <% page.urls.genres.forEach(function(genre) { %>
                <option value="<%= genre.title %>"><%- genre.title %></option>
                <% }); %>
            </select>
            <br>
            <select data-category="country">
                <option>Все страны</option>
                <% page.urls.countries.forEach(function(country) { %>
                <option value="<%= country.title %>"><%- country.title %></option>
                <% }); %>
            </select>
        </section>
        <button onClick="filter ()">ПРИМЕНИТЬ</a></button>
        <script>
            let HREF = [];
            ["year", "genre", "country"].forEach(function (cat_genre) {
                var cat = document.querySelector('[data-category="' + cat_genre + '"]');
                cat.onchange = function (event) {
                    var v = event.target.value;
                    var c = cat.dataset.category;
                    var r = new RegExp(c + "=[^\&]*?", "ig");
                    var page = window.location.href.replace(r, "");
                    HREF['page'] = page;
                    switch (c) {
                      case "year":
                        if (v != "Все годы") {
                            HREF['year'] = (page.indexOf("?") + 1 ? "&" : "?") + c + "=" + v;
                        }
                      break;
                      case "genre":
                        if (v != "Все жанры") {
                            HREF['genre'] = (page.indexOf("?") + 1 ? "&" : "?") + c + "=" + v;
                        }
                      break;
                      case "country":
                        if (v != "Все страны") {
                            HREF['country'] = (page.indexOf("?") + 1 ? "&" : "?") + c + "=" + v;
                        }
                      break;
                    };
                };
            });
            function filter () {
                var url = "";
                if (HREF['year']) {
                   url = HREF['year'];
                };
                if (HREF['genre']) {
                   url = url + HREF['genre'];
                };
                if (HREF['country'])  {
                   url = url + HREF['country'];
                };
                console.log(HREF['page'] + url);
                window.location.href = (HREF['page'] + url);
                HREF = [];
            }
        </script>
 
Последнее редактирование:
Регистрация
15 Дек 2017
Сообщения
5,067
#9
?year=2021?genre=боевик?country=США
( если есть знок вопроса в ссылке ) { дальше использовать всегда & } иначе { поставить знак вопроса }

Так и прописано у Вас в коде: (page.indexOf("?") + 1 ? "&" : "?")

Используйте русские буквы, система сделает перенаправление автоматически.
 
Енот
Новичо́к, через «о́»
Регистрация
26 Авг 2018
Сообщения
495
#10
( если есть знок вопроса в ссылке ) { дальше использовать всегда & } иначе { поставить знак вопроса }
Так и прописано у Вас в коде: (page.indexOf("?") + 1 ? "&" : "?")
Вот и я думаю что все должно работать, НО
Screenshot_3.png

Screenshot_2.png