Всего 125 375 комментариев

Ruslan
08 января 2025, 11:12
0
@Артур Шевченко Помогите пожалуйста, никак не могу понять с этой фильтрацией по множественным параметрам.

1) По какой то причине когда я нахожусь на какой либо странице по пагинации (например на пятой page=5), и нажимаю на параметр для фильтрации, он фильтрует, но почему не сбрасывает пагинацию, а подгружает последнюю страницу результатов поиска и в УРЛ тоже показывает последнюю страницу (например страницу?page=2). Но так же заметил в консоли, что по какой-то причине он добавляет параметр offset. Из за которой он пропускает какие то страницы и выдаёт сообщение о пустом результате поиска.

2) Я использую в вызове снипета параметр "'hashParams' => 'building_status,property_rooms'," я так предполагал что этот параметр помогает при фильтрации так же в УРЛ автоматически записывать GET запросы фильтрации, так же как и пагинации. Я ошибаюсь?
Если ошибаюсь можете подсказать каким образом можно сделать так, что бы параметры фильтров тоже в УРЛ появлялись?
Алексей Соин
07 января 2025, 21:30
+2
Уже есть хорошее и гибкое решение(devilbox), которое хорошо документировано и постоянно актуализируется, есть возможность запуска не только разных версий пхп, но и приложений на других яп, например nodejs.

P.S. это не в упрёк к твоему варианту, а в тему того, что есть решение поддерживаемое сообществом и у которого есть документация.
Prihod
07 января 2025, 00:56
0
Для PHP 8 по запросу через тикет (так как modstore.pro до сих пор не поддерживает одновременно разные версии php ) доступна новая версия пакета.

## [2.1.2-pl] — 2025-01-07

### Добавлено
— Метод execSql в классе MsIeTools
— Поддержка TSV формата файла импорта/экспорта
— Экспорт ресурсов типа «Ссылка», «Символическая ссылка» и «Статичный ресурс»
— Для задачи в менеджере задач кнопку открытия окна импорта/экспорта с уже выбранными параметрами
— Виджет «Менеджер задач»
— Опция «Высота виджета» (msimportexport_widget_height)
— В пресете импорта опции для Excel:
«Пропускать листы»
«Использовать только первый лист»

### Исправлено
— Статус задачи: Убита (killed)
— Обновление TV в сервисах быстрого обновления
— Проверка алиаса на уникальность
— Импорт фото по ссылке с пробелом в названии
— Сброс всего кэша ресурсов при каждой итерации импорта документов modx
des1gner
06 января 2025, 11:49
0
Помог ваш код, спасибо
чатжпт уже оптимизировал
<?php
// Получаем список категорий, которые сняты с публикации
$unpublishedCategories = $modx->getCollection('msCategory', [
    'published' => 0
]);

$excludeIds = [];

foreach ($unpublishedCategories as $category) {
    // Получаем товары из каждой неподтвержденной категории
    $products = $modx->getCollection('msProduct', [
        'parent' => $category->get('id')
    ]);

    foreach ($products as $product) {
        $excludeIds[] = '-' . $product->get('id');
    }
}

// Возвращаем строку для использования в параметре &resources
return implode(',', $excludeIds);
Антон Тарасов
05 января 2025, 21:16
0
Да, пожалуй именно это и верно, спасибо. Вопрос снимается.
Николай Савин
05 января 2025, 16:38
0
В нашем случае рейтинг — это же признак квалификации, узнаваемости, признания профессиональных заслуг.
Как то странно донатами влиять на свою узнаваемость или признание.
Антон Тарасов
05 января 2025, 15:23
0
Смогут ли донаты влиять на рейтинг, вот еще в чем вопрос:) Можно ли (и как именно) это рассматривать в качестве «активности». Да и в общем случае любая другая движуха в помощь MODX вне (около) modx.pro
Евгений
05 января 2025, 12:11
0
Аналогичный вопрос: есть перечень опций формат бумаги: А2, А3, А4, надо добавить в этот перечень поле «ваш размер» с возможностью ввода текста пользователем. Каким плагином это можно реализовать?
Ruslan
04 января 2025, 17:18
0
Методом тыка просто убрал
data-si-form data-si-event="change"
и в итоге стало вот так
<select name="sort_by"  form="searchForm" >
    <option value="price|ASC">Сначала дешевые</option>    
    <option value="price|DESC">Сначала дорогие</option>   
</select>
и только после этого заработало.
Это правильно? Или всё же в будущем чревато проблемами?

И скажите, а возможно ли сделать так, что бы параметры фильтрации, так же как и пагинация, появлялась в УРЛ сайта?
Кирилл
03 января 2025, 23:06
0
А, вот оно как, стоит дописать вот про это)
Николай Савин
03 января 2025, 18:04
+3
Судя по комментариям — возникло небольшое недопонимание.
В недрах проекта есть сложная формула, согласно которой рейтинг складывается из различных параметров.
А именно
За публикацию — начисляется от 0 до 20 баллов в, зависимости от раздела.
За комментарии — начисляются 0 баллов, но зато добавляются баллы за лайки комментарию.
Также учитываются лайки к постам, добавление постов в избранное и т.п.

В общем сложная, многоуровневая формула, которую сделал еще Василий. Она остается неизменной.

Я же лишь реализовал коэффициент активности. Программа высчитывает рейтинг пользователя по формуле Василия, а с сегодняшнего дня помножается на коэф. активности.

Пользователь был активен в последний месяц — его рейтинг равен тому что дала формула рейтинга.
Пользователь пропал и не писал ничего более полугода — его рейтинг помножается на 0.5 (делится пополам). Но стоит ему зайти и написать пост — как его рейтинг сразу восстановится.

В итоге из рейтинга отсеиваются люди, давно потерявшие MODX из виду, а вперед вырываются те, кто регулярно пишет посты и комментарии.
Андрей Шевяков
03 января 2025, 17:19
0
Если делать на статьи больше оценку, то тогда наверное лучше бы не на все разделы.
На раздел Вопросы точно не стоит, а вот на Готовые решения — очень даже можно))
Futuris
03 января 2025, 16:20
0
Статью бы поболее надо оценивать, чем комментарий.
Кирилл
03 января 2025, 14:30
0
В целом все логично)
Возможно временной период за коэффициент 1 должен быть до 3х месяцев ;)
Ruslan
02 января 2025, 16:54
0
Не совсем корректно работает данный вариант.
Почему то, что когда я меняю чекбокс в форме, в консоле я вижу, что он находит «select» которому я дал name=«sort_by» и отправляет на сервер выбранное значение, но когда я меняю саму сортировку, то на сервер не отправляется ранее выбранные чекбоксы из формы, на сервер отправляется только сортировка.
Артур Шевченко
30 декабря 2024, 20:33
0
если я его оборачиваю в отдельный form
Это же не логично, сортировка должна работать вместе с остальными параметрами фильтрации. Я же сказал используй атрибут form для полей отвечающих за сортировку. Например так
<aside>
<form action="#" id="searchForm" data-si-form data-si-preset="pagination-search" data-si-event="change">
 <h6>Тип</h6>
    <input type="checkbox" value="Новостройка" name="building_status[]">
    <input type="checkbox" value="Вторичка" name="building_status[]">
 <h6>Количество комнат</h6>
    <input type="checkbox" value="1" name="property_rooms[]">
    <input type="checkbox" value="2" name="property_rooms[]">
    <input type="checkbox" value="3" name="property_rooms[]">
</form>
</aside>
<select form="searchForm" data-si-form data-si-event="change">
<option value="price|ASC">Сначала дешевые</option>    
<option value="price|DESC">Сначала дорогие</option>   
</select>
Ruslan
30 декабря 2024, 12:32
0
Дело в том, что у меня есть отдельный sidebar в котором находится список параметров для фильтрации.
И именно этот sidebar обернут в form. А сортировка находиться совсем в другом месте, и если я его оборачиваю в отдельный form, то соответственно сортировка перебивает уже используемые параметры фильтра. А как сделать что бы сортировка работала так же уже с отфильтрованным результатом?
Артур Шевченко
28 декабря 2024, 20:17
0
кнопки для сортировок находятся отдельно от тега
Почему кнопки? Сортировка это обычно выпадающий список, можно ещё переключателями сделать. И список и переключатели поддерживают атрибут form, а у SendIt есть атрибут data-si-event, которому можно задать значение change
Ruslan
28 декабря 2024, 11:06
0
Нашел что я упустил, а упустил банальное.
В плагине на событие я не поставил галочку.
А еще не правильно формировал запрос для поиска.
Вот запрос если кому пригодиться.

switch ($modx->event->name) {
  case 'OnBeforePageRender':
    if ($_REQUEST['building_status']){
        $SendIt->params['where']['building_status:IN'] = $_REQUEST['building_status'];
    }
    if ($_REQUEST['property_rooms']){
        $SendIt->params['where']['property_rooms:IN'] = $_REQUEST['property_rooms'];
    }
    break;
}
Но теперь задача, как сделать сортировку результатов ответа, по цене и по другим параметрам, так как кнопки для сортировок находятся отдельно от тега ))