Мы хотели бы, чтобы некоторые кнопки были видны только членам определённых групп, а остальные кнопки были видны всем пользователям.
Например, допустим, мы хотим, чтобы эти основные 4 кнопки были видны всем, но при этом хотим, чтобы ещё одна кнопка была видна только членам определённой ГРУППЫ.
Я не знаю JS, так что если это действительно просто и кто-то сможет помочь с фрагментом кода или чем-то подобным, это было бы очень полезно
Кажется, это также работает, если заменить api.onPageChange(() => {
на $( document ).ready(function() {
и тогда скрипт не будет загружаться на каждой странице, но я никогда не уверен, где именно мне нужно использовать api.onPageChange(() => {.
Если вы установите этот компонент, все группы текущего пользователя будут добавлены в качестве классов в тег body страницы, что упростит дальнейшие изменения только с помощью CSS.
Я искал что-то подобное, но с исключением определённых групп, поэтому решил попробовать ChatGPT, и вот что он ответил:
Чтобы создать HTML-тему в Discourse, которая запускает скрипт с исключением определённых групп, вам нужно использовать возможности кастомизации тем Discourse вместе с JavaScript для обработки исключений групп. Discourse предоставляет api.getCurrentUser() для получения данных пользователя, включая его группы, что может быть полезно для условного запуска вашего скрипта.
Вот пример того, как это можно реализовать в секции </head> вашей темы или компонента:
<script type="text/discourse-plugin" version="0.8">
api.onPageChange(() => {
// Получаем данные текущего пользователя
const currentUser = api.getCurrentUser();
if (currentUser) {
// Список названий групп, которые нужно исключить из выполнения скрипта
const excludedGroups = ['group1', 'group2'];
// Получаем группы пользователя
const userGroups = currentUser.groups.map(group => group.name);
// Проверяем, состоит ли пользователь в какой-либо из исключённых групп
const isExcluded = excludedGroups.some(group => userGroups.includes(group));
if (!isExcluded) {
// Здесь ваш собственный код скрипта
console.log('Скрипт выполнен для этого пользователя.');
// Пример: запуск любой пользовательской логики для пользователей, не входящих в исключённые группы
// customScriptFunction();
} else {
console.log('Пользователь состоит в исключённой группе, скрипт не выполнен.');
}
}
});
</script>
Пояснение:
api.onPageChange(): Запускает скрипт при каждом изменении страницы.
api.getCurrentUser(): Получает данные текущего вошедшего пользователя.
excludedGroups: Список групп, которые нужно исключить.
userGroups.includes(group): Проверяет, состоит ли пользователь в какой-либо из исключённых групп.
Условное выполнение скрипта: Скрипт будет выполнен только если пользователь не входит ни в одну из исключённых групп.
Вы можете заменить customScriptFunction(); на любой скрипт, который вам нужно запустить. Дайте знать, если потребуются дополнительные изменения!
Я просто в шоке от этого . Я ещё не пробовал, но правильный ли этот код от ChatGPT?