grisha2217
Проверенные
- Сообщения
- 916
- Решения
- 6
- Реакции
- 1,394
- Баллы
- 8,315
Для тех, кто когда-нибудь занимался версткой дизайна на ксенфоро знают о такой опции для стиля:

Если галочка стоит, то в настройках пользователь сможет выбрать и сидеть на данном стиле. Однажды я занялся разработкой шаблона и захотел модераторам дать доступ к определенному стилю, встал вопрос как? Если всем модераторам поставить данный стиль и убрать галочку "разрешить выбирать стиль", то движок будет показывать им стиль, выбранный по-умолчанию администратором. Если поставить галочку, то все пользователи смогут сидеть на этом стиле, а это нам не подходит.
С чего я начал решение? Открыл таблицу xf_style, в которой содержится небольшая информация об установленных стилях. Целью было узнать переменная, которая отвечает за возможность выбора стиля.

Дальше ищем через свою IDE (редактор кода) эту переменную и натыкаемся на файл library/XenForo/Dependencies/Public.php

Видим: стиль доступен для использования в двух случаях:
Соответственно, играем с $forceStyleId как хотим, в моем случае я изменил is_admin на is_staff. Теперь "команда форума" сможет без проблем сидеть на "выключенном" стиле. Чтобы пересадить всю команду на нужный стиль можно залезть в бд и сделать запрос в таблице xf_user (пакетное обновление юзеров на такое не способно.) либо в файле library/XenForo/ControllerPublic/Misc.php заменить

Если галочка стоит, то в настройках пользователь сможет выбрать и сидеть на данном стиле. Однажды я занялся разработкой шаблона и захотел модераторам дать доступ к определенному стилю, встал вопрос как? Если всем модераторам поставить данный стиль и убрать галочку "разрешить выбирать стиль", то движок будет показывать им стиль, выбранный по-умолчанию администратором. Если поставить галочку, то все пользователи смогут сидеть на этом стиле, а это нам не подходит.
С чего я начал решение? Открыл таблицу xf_style, в которой содержится небольшая информация об установленных стилях. Целью было узнать переменная, которая отвечает за возможность выбора стиля.

Дальше ищем через свою IDE (редактор кода) эту переменную и натыкаемся на файл library/XenForo/Dependencies/Public.php

Видим: стиль доступен для использования в двух случаях:
- Стиль можно выбрать в настройках (
$styles[$styleId]['user_selectable']
) - Переменная $forceStyleId равна true (
$forceStyleId = ($user['is_admin'] ? true : false);
Соответственно, играем с $forceStyleId как хотим, в моем случае я изменил is_admin на is_staff. Теперь "команда форума" сможет без проблем сидеть на "выключенном" стиле. Чтобы пересадить всю команду на нужный стиль можно залезть в бд и сделать запрос в таблице xf_user (пакетное обновление юзеров на такое не способно.) либо в файле library/XenForo/ControllerPublic/Misc.php заменить
$styles[$styleId]['user_selectable'] && !$visitor['is_admin']
на $styles[$styleId]['user_selectable'] && !$visitor['staff']
.