Ok, pour ceux qui veulent vraiment améliorer leurs signatures pour leur groupe (surtout si vous souhaitez utiliser les options pour qu’une signature fasse partie d’une mise à niveau/abonnement payant), voici le code (et la raison d’être) que je pense rendre cela bien meilleur, et qui peut vous aider à générer plus de mises à niveau. Cela m’a pris beaucoup d’essais, mais ça fonctionne. Faites attention aux endroits où vous devez remplacer les parties “XXXXX”.
Je voulais accomplir les 2 choses suivantes :
A) Je voulais désactiver la possibilité de NE PAS voir les signatures. Cela signifie que les utilisateurs qui effectuent une mise à niveau savent que leur signature sera vue par tout le monde.
B) Je voulais qu’UN SEUL groupe ait la possibilité de créer une signature.
-
Allez dans Admin > Apparence > Thèmes et composants > Composants > Installer > Créer nouveau
-
Ajoutez ce code dans l’onglet < head > :
<script>
// Attendre que la structure de base de la page se charge en premier
document.addEventListener("DOMContentLoaded", function() {
// Configurer le observateur
const observer = new MutationObserver(function(mutations) {
// Trouver toutes les étiquettes de contrôle sur la page
const labels = document.querySelectorAll('label.control-label');
labels.forEach(label => {
// Rechercher l'étiquette spécifique Signatures
if (label.textContent.trim() === 'Enable Signatures') {
// Trouver le conteneur principal contenant à la fois l'étiquette et la case à cocher et le masquer
const controlGroup = label.closest('.control-group') || label.parentElement;
if (controlGroup) {
controlGroup.style.display = 'none';
}
}
});
});
// MAINTENANT commencer à observer le corps, car nous savons qu'il existe
observer.observe(document.body, { childList: true, subtree: true });
});
</script>
3. Ajoutez ce code dans l'onglet css (remplacez XXXXX par le nom de votre groupe) :
/* Masquer la section de signature pour tout le monde */
.user-preferences .control-group.signatures,
.user-preferences .signature-preferences,
.user-preferences div[data-setting-name="user_card_badge"] + .control-group {
display: none !important;
}
/* Afficher uniquement si la classe 'user-is-XXXXX' est présente sur le corps */
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;
}
- Ajoutez ce code dans la balise < head > sous le premier bloc ci-dessus (remplacez XXXXX par le nom de votre groupe) :
<script>
(function() {
const checkAccess = () => {
// Discourse stocke les groupes de l'utilisateur actuel dans cet objet global
const user = window.Discourse && window.Discourse.User && window.Discourse.User.current();
if (user && user.groups) {
// Vérifier si un nom de groupe correspond à "XXXXX"
const isXXXXX = user.groups.some(g => g.name === 'XXXXX');
if (isXXXXX) {
document.body.classList.add('user-is-XXXXX');
}
}
};
// Exécuter immédiatement
checkAccess();
// Exécuter chaque fois que l'utilisateur navigue entre les pages
document.addEventListener('discourse-ready', checkAccess);
// Sauvegarde : Exécuter à nouveau après 1 seconde pour les chargements lents
setTimeout(checkAccess, 1000);
})();
</script>
- Ajoutez ce code dans l’onglet css sous le premier bloc ci-dessus (remplacez XXXXX par le nom de votre groupe) :
/* Masquer la section de signature pour tout le monde */
.user-preferences .control-group.signatures,
.user-preferences .signature-preferences,
.user-preferences div[data-setting-name="user_card_badge"] + .control-group {
display: none !important;
}
/* Afficher uniquement si la classe 'user-is-XXXXX' est présente sur le corps */
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;
}
Fait.
Je ne suis pas développeur. Tout ce que je sais, c’est que cela fonctionne à 100 % sur mon site.
Aussi, à l’auteur du plugin – J’ADORERAIS la possibilité de limiter le nombre de caractères de la signature. J’ai essayé tant de choses mais rien n’a fonctionné.