Discourse Signatures

Хорошо, для тех, кто хочет, чтобы их подписи работали ещё эффективнее для их группы (особенно если вы хотите использовать опции для отображения подписи как часть платного обновления/подписки), вот код (и объяснение логики), который, на мой взгляд, делает всё значительно лучше и помогает стимулировать больше обновлений. Мне потребовалось множество попыток, но теперь это работает. Обращайте особое внимание на места, где нужно заменить части «XXXXX».

Я хотел достичь следующих двух целей:

A) Я хотел отключить возможность не отображать подписи. Это означает, что пользователи, которые сделали обновление, будут знать, что их подпись увидят все.

B) Я хотел, чтобы возможность создавать подпись была только у определённой группы.

  1. Перейдите в Администрирование > Внешний вид > Темы и компоненты > Компоненты > Установить > Создать новый

  2. Добавьте этот код во вкладку :

<script>
// Сначала дождитесь загрузки базовой структуры страницы
document.addEventListener("DOMContentLoaded", function() {
    
    // Настройте наблюдатель
    const observer = new MutationObserver(function(mutations) {
        // Найдите все метки управления на странице
        const labels = document.querySelectorAll('label.control-label');
        
        labels.forEach(label => {
            // Ищите конкретную метку «Включить подписи»
            if (label.textContent.trim() === 'Включить подписи') {
                // Найдите основной контейнер, содержащий и метку, и флажок, и скройте его
                const controlGroup = label.closest('.control-group') || label.parentElement;
                if (controlGroup) {
                    controlGroup.style.display = 'none';
                }
            }
        });
    });

    // ТЕПЕРЬ начните наблюдать за телом документа, так как мы знаем, что оно существует
    observer.observe(document.body, { childList: true, subtree: true });
});
</script>
  1. Добавьте этот код во вкладку CSS (замените XXXXX на название вашей группы):

/* Скрыть раздел подписей для всех */
.user-preferences .control-group.signatures,
.user-preferences .signature-preferences,
.user-preferences div[data-setting-name=“user_card_badge”] + .control-group {
display: none !important;
}

/* Показать только если на теге body присутствует класс ‘user-is-XXXXX’ */
body.user-is-XXXXX .user-preferences .control-group.signatures,
body.user-is-XXXXX .user-preferences .signature-preferences,
body.user-is-XXXXX .user-preferences div[data-setting-name=“user_card_badge”] + .control-group {
display: block !important;
}


3. Добавьте этот код в тег <head> ниже первого блока (замените XXXXX на название вашей группы):


4. Добавьте этот код во вкладку CSS ниже первого блока (замените XXXXX на название вашей группы):

```css
/* Скрыть раздел подписей для всех */
.user-preferences .control-group.signatures,
.user-preferences .signature-preferences,
.user-preferences div[data-setting-name="user_card_badge"] + .control-group {
    display: none !important;
}

/* Показать только если на теге body присутствует класс 'user-is-XXXXX' */
body.user-is-XXXXX .user-preferences .control-group.signatures,
body.user-is-XXXXX .user-preferences .signature-preferences,
body.user-is-XXXXX .user-preferences div[data-setting-name="user_card_badge"] + .control-group {
    display: block !important;
}

Готово.

Я не разработчик. Всё, что я знаю, это то, что это работает на 100% на моём сайте.

Также автору плагина – очень хотелось бы иметь возможность ограничивать количество символов в подписи. Я перепробовал множество вариантов, но ничего не сработало.

1 лайк