Forum categories

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

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

webitproff
webitproff • 2026-04-08 12:29 #502

Чтобы на уровне шаблона установить сортировку по 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 -->).

 

 

 

🗿

🧙‍♂️ Well met, good traveler! Fate has guided your steps to our humble realm. Here, wise sages and masters of the coding craft ⚒️📜 gather to unravel the mysteries of the code ✨⚙️, share their knowledge, and add new chapters to our chronicles.
⬅️ To the left lie ancient scrolls 📚 filled with forgotten wisdom. ⬆️ Straight ahead, friendly folk offer counsel 💬 to those in need. ➡️ To the right, you may become a chronicler ✍️ yourself, sharing your craft and leaving words of wisdom for those yet to come.
📝 Delay no longer—tell us the name by which you are known, complete the rite of registration 🛡️, and join our fellowship!
🏰 Our brotherhood holds no secret initiation, yet many halls remain closed to wandering guests, for some knowledge 💎 is reserved for those who choose to walk this path beside us.