Вопросы-ответы

Часть настроек темы не сохраняется

Обновлено

Панель настроек Seller 2.0 отправляет все настройки темы одним POST-запросом. Полей в этой форме больше тысячи, а PHP по умолчанию принимает ровно 1000 и остальные молча отбрасывает. Ошибки при этом не возникает: панель сообщает об успешном сохранении и перезагружает страницу, но часть переключателей возвращается к прежним значениям.

Как это выглядит

  • Нажали «Сохранить» — сообщения об ошибке нет, панель перезагрузилась.
  • Часть настроек применилась, часть откатилась к прежним значениям.
  • Повторное сохранение не помогает: слетают ровно те же настройки.

Типичные жалобы: не сохраняются выбор артикулов в мобильной карточке товара, «Источник ссылок для навигационного меню» в свайп-меню, колонки навигации в подвале, список преимуществ, текст уведомления.

Почему так происходит

Количество полей, которые PHP принимает в одном запросе, ограничено настройкой max_input_vars — по умолчанию это 1000. Всё, что пришло сверх лимита, PHP отбрасывает ещё до того, как запрос доберётся до Webasyst. Приложение получает урезанный набор полей и честно сохраняет то, что получило, — ни тема, ни Webasyst не знают, что часть данных потерялась. Поэтому в интерфейсе и нет никакой ошибки.

Как убедиться, что дело именно в лимите

Сам признак довольно характерный: часть настроек сохраняется, часть нет, и при этом нет никакой ошибки. Текущее значение max_input_vars видно в панели управления хостингом, в разделе настроек PHP. Если там 1000 — это оно. Если найти не удалось, спросите поддержку хостинга — заодно сразу и увеличат.

Что сделать

Увеличить max_input_vars до 5000. Запас нужен: настроек в теме со временем становится больше.

  • Написать в поддержку хостинга — самый простой путь: попросите увеличить max_input_vars до 5000 для вашего сайта.
  • Поменять в панели управления хостингом — если хостер разрешает править настройки PHP самостоятельно.
  • Прописать самому — строка max_input_vars = 5000 в php.ini или в файле .user.ini в корне сайта.

После того как лимит поднят, выставьте слетевшие настройки заново и сохраните ещё раз — уже сохранённые неверные значения сами не восстановятся.