diff --git a/README.md b/README.md index 5734aad..584c25c 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ### search -## Модуль Поиск 3.31.1 +## Модуль Поиск 3.31.2 ### Данный модуль позволяет организовать поиск необходимой информации на вашем сайте. @@ -10,6 +10,8 @@ ### Changelog: +17.04.2026 - версия 3.31.2 - Добавлен выбор шаблонов пагинации используемых модулем. По умолчанию используется шаблон с id=1 созданный при установке AVE.cms. Если вы хотите сменить шаблон, откройте файл ```modules/search/class/search.php``` и в самом начале файла в строке ```var $_pagination_id = 1; // ID шаблона пагинации по умолчанию``` укажите нужный вам id. Там же находится переменная ```var $_limit = 15;```, отвечающая за вывод количества (15 по умолчанию) результатов (строк) поиска на одной странице. + 05.03.2026 - версия 3.31.1 - Адаптация для версии AVE.CMS v3.31.1 ALT. Рефакторинг кода для работы в среде PHP-8.4, верстка публичной части модуля Bootstrap v5. Вы можете использовать файл mod_search_styles.css - подключается в основной шаблон при использовании модуля программно. 02.09.2019 - версия 2.26.0 - Адаптация для версии AVE.CMS v3.26 diff --git a/class/search.php b/class/search.php index a0d8479..38a4a65 100644 --- a/class/search.php +++ b/class/search.php @@ -15,7 +15,8 @@ class Search * СВОЙСТВА */ - var $_limit = 15; + var $_limit = 15; // Количество строк на странице "Результаты поиска" + var $_pagination_id = 1; // ID шаблона пагинации по умолчанию var $_adminlimit = 1000; var $_highlight = 1; var $_allowed_tags = ''; @@ -216,18 +217,45 @@ function searchResultGet($tpl_dir, $lang_file) "); } - $page_nav = ''; + // --- НАЧАЛО БЛОКА ПАГИНАЦИИ ПОИСКА --- + $page_nav = ''; - if ($num > $limit) - { - $page_nav = '{t}'; - $page_nav = get_pagination($pages, 'page', $page_nav); - } - $AVE_Template->assign('q_navi', $page_nav); + if ($num > $limit && $pages > 1) + { + // Берем ID из настроек модуля + $p_id = (int)$this->_pagination_id; + if ($p_id < 1) { + $p_id = 1; + } + + // Базовая ссылка + $pagination_base = 'index.php?module=search&query=' . urlencode($this->_search_string) . '&page={s}'; + $pagination_params = ($type_search ? '&ts=1' : '') . + (isset($_REQUEST['or']) && $_REQUEST['or'] == 1 ? '&or=1' : ''); + $pagination_full = $pagination_base . $pagination_params; + + // Пытаемся вызвать пагинацию. + // Делаем проверку на неверный ID + try { + $page_nav = AVE_Paginations::getPagination($pages, 'page', $pagination_full, $p_id); + } catch (TypeError $e) { + // Если поймали ошибку + // Принудительно откатываемся на ID = 1 + $page_nav = AVE_Paginations::getPagination($pages, 'page', $pagination_full, 1); + } + + // Если try-catch не поддерживается PHP версией или не сработал: + if (empty($page_nav)) { + $page_nav = AVE_Paginations::getPagination($pages, 'page', $pagination_full, 1); + } + + // Очистка и ЧПУ + $page_nav = str_ireplace('"//"', '"/"', str_ireplace('///', '/', rewrite_link($page_nav))); + $page_nav = str_ireplace('"//' . (defined('URL_SUFF') ? URL_SUFF : '.html') . '"', '"/"', $page_nav); + $page_nav = preg_replace('/(?assign('q_navi', $page_nav); + // --- КОНЕЦ БЛОКА ПАГИНАЦИИ ПОИСКА --- } if ($num > 0 && isset($query_feld)) diff --git a/info.php b/info.php index 384ff68..68d7cf3 100644 --- a/info.php +++ b/info.php @@ -4,7 +4,7 @@ $module = array( 'ModuleSysName' => 'search', - 'ModuleVersion' => '3.31.1', + 'ModuleVersion' => '3.31.2', 'ModuleAutor' => 'AVE.cms Team', 'ModuleCopyright' => '© 2007-' . date('Y') . ' AVE.cms', 'ModuleIsFunction' => 1,