Категории форума

Список пользователей, как переопределить сортировку и направление?

на уровне шаблона установить и переопределить сортировку и направление пользователей по id по умолчанию (без правки PHP-кода)


webitproff
webitproff • 08.04.2026 12:29 #1

Чтобы на уровне шаблона установить сортировку по id по умолчанию (без правки PHP-кода), можно добавить небольшой JavaScript, который будет проверять наличие параметров сортировки в URL и при их отсутствии перенаправлять на тот же URL с добавлением ?s=id&w=asc (или &s=id&w=asc, если уже есть другие параметры). Так вы сохраните все текущие фильтры и получите нужную сортировку.

Добавьте этот код в конец вашего шаблона users.tpl, например, внутрь существующего тега <script> или отдельным блоком:

 

<!-- ==================== СОРТИРОВКА ПО ID ПО УМОЛЧАНИЮ ==================== -->
<script>
(function() {
    // Проверяем наличие параметра сортировки
    // Если в URL нет параметра "s" (т.е. пользователь зашёл без сортировки)
    const urlParams = new URLSearchParams(window.location.search);
    
    if (!urlParams.has('s') || urlParams.get('s') === '') {
        // Создаём полный URL (сохраняем ВСЁ: фильтры, пагинацию, страну и т.д.)
        const currentUrl = new URL(window.location.href);
        
        currentUrl.searchParams.set('s', 'id');
        currentUrl.searchParams.set('w', 'asc');   // asc = от старых к новым
        
        // Если хотите по убыванию (новые сверху) — замените 'asc' на 'desc'
        // currentUrl.searchParams.set('w', 'desc');
		
        // Делаем редирект (replace — чтобы не засорять историю браузера)        
        window.location.replace(currentUrl.toString());
    }
})();
</script>
<!-- ===================================================================== -->

 

 

или 

<script>
(function() {
   // Проверяем, есть ли в URL параметры сортировки
   const urlParams = new URLSearchParams(window.location.search);
   const hasSort = urlParams.has('s') && urlParams.has('w');
   
   // Если параметров сортировки нет — добавляем сортировку по id по возрастанию
   if (!hasSort) {
       // Сохраняем все существующие параметры (фильтры, пагинацию и т.д.)
       urlParams.set('s', 'id');
       urlParams.set('w', 'asc');
       
       // Формируем новый URL (без якоря, но с параметрами)
       let newUrl = window.location.pathname + '?' + urlParams.toString();
       // Перенаправляем
       window.location.replace(newUrl);
   }
})();
</script>

 

немного теории
 
Критерий вариант 1 (IIFE) вариант 2 (DOMContentLoaded)Рекомендуемый
Скорость выполненияМгновенноЖдёт загрузки DOMМгновенно
Надёжность формирования URLХорошаяОтличная (new URL)Отличная
Правильная проверкаСтрогая (s && w)Хорошая (только s)Самая правильная
Сохранение всех параметровХорошоОтличноОтлично
Чистота кодаНормНормЛучше
 

Ключевые преимущества рекомендованного кода:

  • Использует new URL(window.location.href) — это современный и самый надёжный способ работать с URL в JavaScript.
  • Проверяет только s (как в варианте 2) — правильно, потому что в Cotonti по умолчанию параметр w часто отсутствует.
  • IIFE — выполняется сразу, без ожидания DOMContentLoaded.
  • replace() — не засоряет историю браузера (пользователь не сможет нажать «Назад» в бесконечный цикл).

Просто вставить этот блок в конец файла users.tpl (перед <!-- END: MAIN -->).

 

 

 

🗿

🧙‍♂️ Радуйся, странниче добрый и честный! Не понапрасну привела тя стезя в земли сии. Зде бо мужи мудры и искусники дела писменнаго и численнаго, что куют словеса и плетут узоры кода, тайны разгадывают и знанием делятся, летописи множа и ремесло цифровое творя.
⬅️ Аще налево пойдеши — обрящеши грамоты древния, писания старинныя и свитки учения. ⬆️ Аще прямо — слово мудрое и совет от мужей разумеющих, что в деле кодописном искусны, получиши. ➡️ Аще направо — сам в писцы и летописцы внидеши, и в ремесло цифровое, где строки и знаки в дело живое обращаются, слово свое в память веков вложиши.
📝 Не медли же — нареки имя свое, и вниди в чин наш, и стань с нами в братстве, где код есть магия, а строки — заклятия живыя, числом и буквою слово едины суть.
🏰 Не тайно есть собрание сие, и не инициации в нем, но многое сокрыто от пришлых и ступалого, понеже не всякому открывается знание, но токмо ищущим и пребывающим в деле сем.