Ruslan

Ruslan

Был в сети 30 декабря 2025, 12:12
Заказы не принимаю
Супер идея!

А подскажи еще, я создал товар.
Я на скоряк создал товар (для ознакомления), заполнил только цену старую и новую.
Вывожу шаблон с товаром на фронте, и в карточке товара вот такая ошибка выходит.

Deprecated: Optional parameter $options declared before required parameter $info is implicitly treated as a required parameter in ....../core/components/minishop3/src/Model/msProductFile.php on line 201

а так же, я вывел в шапке
{$_modx->runSnippet("!msCart", [])}
и когда в карточе товара нажимаю добавить товар, то он добавляется, выходит сообщение о том что добавилось, и правильное количество товара показывает.

Но в шапке у корзины он всегда показывает сообщение что корзина пустая.
Я что то мог не донастроить?

я так понимаю там какие то обязательные поля надо заполнять?
@Николай Савин Подскажи пожалуйста, как можно правильно доработать функционал, смены пароля у пользователя (msCustomer), с проверкой на старый пароль?
Да и вообще, например если захочется добавить какие то дополнительные поля, как их добавлять и редактировать с фронта?
Было бы супер.

А у вас есть в планах сделать что-то похожее на «Client Config» page?
Ну то-есть будет какая то страница, где люди смогут создавать глобальные поля, вроде номера телефона или email. Мне кажется это был бы тоже приятное дополнение.
Так же есть вопрос:

При создании например полей в админ панели,
Field::make('title')->label('Заголовок')
Возможно ли, что бы данный заголовок тоже можно было менять, в зависимости от выбранного языка для перевода?
Например если на сайте два языка, русский и английски, то для русской версии отображался бы «Заголовок» а для англ «Title».
@Aleksandr Huz

Создал по вашему примеру через режим разработчика «Пример создания меню с двумя вкладками»
Всё появилось отлично, но если я например хочу туда добавить простое текстовое поле
Field::make('title')->label('Title')->required()
То оно не появляется.
В журнале ошибок показывает

/core/src/Revolution/modMenu.php 80
The menu cache key menus/ru could not be written.

Версия Modx 3.1.2
php 8.2
Сегодня обновился, и всё сработало.
Теперь очень удобно.

Спасибо большое за ваш труд.

Если можно, можете уточнить еще момент.
Наткнулся в документации при авторизации на такой параметр.
'errorFieldName' => 'errorLogin'
написано — в этом параметре необходимо указать имя скрытого поля, в которое будет записан текст ошибки авторизации, если оставить пустым ошибка будет показана во вплывающем сообщении.
Я правильно понимаю, что если в форме будет input поле как в вашем примере, то сообщение об удачной или не удачной авторизации должно появится в этом поле?
Если так, то почему то сообщение не работает оно всё так же во всплывающем окне отображается. Или я опять не так всё понял.
Как раз делал авторизацию / регистрацию, и протестировал. Сработало на отлично.
Но вот так же возник вопрос по поводу параметра «usergroupsField» при регистрации.
В документации написано что это «имя поля выбора группы»
Я в пресете указал
'usergroupsField' => 'usergroup',
а сама форма HTML имеет такой выбор
<input type="radio" name="usergroup" value="2" checked>
<input type="radio" name="usergroup" value="3">
Но регистрация не проходит в нужную группу.
В документации примера не нашел.
Можете подсказать это так работает или я не правильно понял смысл этого параметра?
@Артур Шевченко Помогите пожалуйста, никак не могу понять с этой фильтрацией по множественным параметрам.

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

2) Я использую в вызове снипета параметр "'hashParams' => 'building_status,property_rooms'," я так предполагал что этот параметр помогает при фильтрации так же в УРЛ автоматически записывать GET запросы фильтрации, так же как и пагинации. Я ошибаюсь?
Если ошибаюсь можете подсказать каким образом можно сделать так, что бы параметры фильтров тоже в УРЛ появлялись?
Методом тыка просто убрал
data-si-form data-si-event="change"
и в итоге стало вот так
<select name="sort_by"  form="searchForm" >
    <option value="price|ASC">Сначала дешевые</option>    
    <option value="price|DESC">Сначала дорогие</option>   
</select>
и только после этого заработало.
Это правильно? Или всё же в будущем чревато проблемами?

И скажите, а возможно ли сделать так, что бы параметры фильтрации, так же как и пагинация, появлялась в УРЛ сайта?
Не совсем корректно работает данный вариант.
Почему то, что когда я меняю чекбокс в форме, в консоле я вижу, что он находит «select» которому я дал name=«sort_by» и отправляет на сервер выбранное значение, но когда я меняю саму сортировку, то на сервер не отправляется ранее выбранные чекбоксы из формы, на сервер отправляется только сортировка.
Дело в том, что у меня есть отдельный sidebar в котором находится список параметров для фильтрации.
И именно этот sidebar обернут в form. А сортировка находиться совсем в другом месте, и если я его оборачиваю в отдельный form, то соответственно сортировка перебивает уже используемые параметры фильтра. А как сделать что бы сортировка работала так же уже с отфильтрованным результатом?
Нашел что я упустил, а упустил банальное.
В плагине на событие я не поставил галочку.
А еще не правильно формировал запрос для поиска.
Вот запрос если кому пригодиться.

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;
}
Но теперь задача, как сделать сортировку результатов ответа, по цене и по другим параметрам, так как кнопки для сортировок находятся отдельно от тега ))
После стольких мучений, я понял что SendIt и Polylang очень даже дружат.
Моя ошибка была в том, что я не увидел одного мелкого важного момента.

Важно! Ссылка переключения языка должна иметь класс polylang-toggle или тот который указан в параметре trigger сниппета PolylangLinks.

Я лишь указал этот класс и всё само заработало.
Сделал плагин, и указал жёстко переопределение языка.
Кстати самому плагину Polylang приоритет «1» не ставил еще.
switch ($modx->event->name) {
    case 'OnMODXInit':
    $modx->setOption('cultureKey', 'uz');
    break;
}
Работает отлично.

Но как передать туда ключ текущего языка, так и не нашел. Можете подсказать каким образом передать можно?