138 lines
7.0 KiB
PHP
138 lines
7.0 KiB
PHP
<?php get_header(); ?>
|
||
|
||
<div class="content-middle articles-wrapper">
|
||
<?php get_template_part('partials/rubrics-mobile'); ?>
|
||
<div class="section-title">
|
||
<h1 class="section-title__title">Поиск</h1>
|
||
</div>
|
||
<form class="search-form" id="search-form" role="search" method="get" action="">
|
||
<div class="search-form__wrapper">
|
||
<div class="search-form__input-wrapper">
|
||
<input type="text" class="input search-form__input" placeholder="Введите ваш запрос" value="<?php echo get_search_query() ?>" name="s" id="s" />
|
||
<div class="search-form__clear">
|
||
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||
<rect x="2.00391" y="15.1746" width="18.6256" height="1.1641" rx="0.582051" transform="rotate(-45 2.00391 15.1746)" fill="#2F2F2F" />
|
||
<rect x="2.82812" y="2.00339" width="18.6256" height="1.1641" rx="0.582051" transform="rotate(45 2.82812 2.00339)" fill="#2F2F2F" />
|
||
</svg>
|
||
</div>
|
||
</div>
|
||
<button class="button search-form__button desktop">
|
||
Найти
|
||
</button>
|
||
</div>
|
||
<? if (get_search_query()) : ?>
|
||
<p class="search-form__text">
|
||
<?php
|
||
$resultsForms = array('результат', 'результата', 'результатов');
|
||
$foundForms = array('найден', 'найдено');
|
||
?>
|
||
По запросу «<?php the_search_query(); ?>» <?= plural_form_extended($wp_query->found_posts, $resultsForms, $foundForms); ?>
|
||
</p>
|
||
|
||
<? endif; ?>
|
||
<div class="search-form__selects">
|
||
<select id="selectSort" name="orderby">
|
||
<option value="" <?php echo empty($_GET['orderby']) ? 'selected' : ''; ?>>По релевантности</option>
|
||
<option data-html="По дате <img src='<?= get_asset("/icons/sort_top.svg") ?>' alt />" value="date_asc" <?php echo isset($_GET['order']) && $_GET['order'] == 'asc' ? 'selected' : ''; ?>>По дате ↑</option>
|
||
<option data-html="По дате <img src='<?= get_asset("/icons/sort_bottom.svg") ?>' alt />" value="date_desc" <?php echo isset($_GET['order']) && $_GET['order'] == 'desc' ? 'selected' : ''; ?>>По дате ↓</option>
|
||
</select>
|
||
|
||
<select id="selectDate" name="by_date">
|
||
<option value="" <?php echo empty($_GET['by_date']) ? 'selected' : ''; ?>>За всё время</option>
|
||
<option value="1w" <?php echo isset($_GET['by_date']) && $_GET['by_date'] == '1w' ? 'selected' : ''; ?>>За неделю</option>
|
||
<option value="1m" <?php echo isset($_GET['by_date']) && $_GET['by_date'] == '1m' ? 'selected' : ''; ?>>За месяц</option>
|
||
<option value="1y" <?php echo isset($_GET['by_date']) && $_GET['by_date'] == '1y' ? 'selected' : ''; ?>>За год</option>
|
||
</select>
|
||
|
||
<select id="selectCategory" name="cat">
|
||
<option value="" <?php echo empty($_GET['cat']) ? 'selected' : ''; ?>>Все категории</option>
|
||
<?php
|
||
$categories = get_categories(array(
|
||
'orderby' => 'name',
|
||
'order' => 'ASC',
|
||
'hide_empty' => true,
|
||
));
|
||
foreach ($categories as $category) {
|
||
$selected = isset($_GET['cat']) && $_GET['cat'] == $category->term_id ? 'selected' : '';
|
||
printf(
|
||
'<option value="%s" %s>%s</option>',
|
||
esc_attr($category->term_id),
|
||
$selected,
|
||
esc_html($category->name),
|
||
);
|
||
}
|
||
?>
|
||
</select>
|
||
|
||
</div>
|
||
<button class="button search-form__button mobile " id="searchsubmit">Найти</button>
|
||
</form>
|
||
<div class="articles-preview search-preview">
|
||
<? if (have_posts()) :
|
||
while (have_posts()) :
|
||
the_post();
|
||
?>
|
||
<div class="article-item article-item--<?= has_post_thumbnail() ? 'horizontal' : 'inline' ?>">
|
||
<a href="<? the_permalink(); ?>" class="article-item__image-container">
|
||
<?php if (has_post_thumbnail()) : ?>
|
||
<?= show_post_image(); ?>
|
||
<?php endif; ?>
|
||
<div class="tag article-item__tag"><?= get_category_name() ?></div>
|
||
</a>
|
||
<div class="article-item__text">
|
||
<div class="article-time">
|
||
<img src="<?= get_asset('/icons/time.svg'); ?>" alt="" />
|
||
<time><?= format_event_date(); ?></time>
|
||
</div>
|
||
<a href="<? the_permalink() ?>" class="subtitle-16 article-item__link"><?= the_title() ?></a>
|
||
<p class="article-item__descr text-13"><? the_excerpt() ?></p>
|
||
</div>
|
||
</div>
|
||
<? endwhile; ?>
|
||
<? endif; ?>
|
||
</div>
|
||
<? custom_pagination(); ?>
|
||
<div class="articles__spacer-container">
|
||
<div class="articles__spacer"></div>
|
||
<div class="articles__spacer"></div>
|
||
</div>
|
||
</div>
|
||
|
||
<script>
|
||
document.getElementById('search-form').addEventListener('submit', function(e) {
|
||
e.preventDefault(); // Предотвращаем стандартное поведение формы
|
||
|
||
var searchValue = document.getElementById('s').value; // Получаем значение поля поиска
|
||
var searchQuery = encodeURIComponent(searchValue); // Кодируем значение для URL
|
||
|
||
// Получаем значения полей select
|
||
var orderByValue = document.getElementById('selectSort').value;
|
||
var byDateValue = document.getElementById('selectDate').value;
|
||
var catValue = document.getElementById('selectCategory').value;
|
||
|
||
// Строим URL с учетом выбранных параметров
|
||
var params = [];
|
||
|
||
// Обрабатываем значение orderBy
|
||
if (orderByValue === 'date_asc') {
|
||
params.push('orderby=post_date&order=asc');
|
||
} else if (orderByValue === 'date_desc') {
|
||
params.push('orderby=post_date&order=desc');
|
||
}
|
||
|
||
// Добавляем параметры, если они не пусты
|
||
if (byDateValue) {
|
||
params.push('by_date=' + byDateValue);
|
||
}
|
||
if (catValue) {
|
||
params.push('cat=' + catValue);
|
||
}
|
||
|
||
// Формируем конечный URL
|
||
var actionUrl = '/search/' + searchQuery + '/?' + params.join('&');
|
||
|
||
window.location.href = actionUrl; // Перенаправляем пользователя на новый URL
|
||
});
|
||
</script>
|
||
|
||
<?php get_footer(); ?>
|