Help > Forum > Sujets et messages > Limiter le nombre de mots dans un message
Limiter le nombre de mots dans un message
Vous pouvez définir une limite de mots pour les nouveaux sujets ou les nouvelles réponses en suivant les étapes ci-dessous. Un compteur de mots apparaîtra sous la zone de texte pour aider les utilisateurs à respecter la limite, et ils ne pourront pas soumettre leurs publications s'ils dépassent la limite. Les modérateurs et les administrateurs sont exemptés de cette limite.
- Connectez-vous à votre compte Website Toolbox.
- Cliquez sur Intégrer lien dans le menu principal.
- Cliquez sur HTML lien.
- Copiez le code HTML ci-dessous dans Code HTML de la balise d'en-tête du forum zone de texte.
<script> var maximumWords = 100; window.addEventListener("load", function () { if (!isAdministratorOrModerator()) { if(jQ("#PostTopic").length) { waitForEditor("message", function () { setupWordCountObserver("message"); }); jQ("#post_submit, #previewpost_sbt").on("click", function () { if (showErrorMessage("message") === 1) { return false; } else { removeWordCountMessage("message"); } }); } if (jQ("#posts-list").length) { checkEditorLoaded(); jQ("#reply_submit, #submitreply").on("click", function () { if (showErrorMessage("message") === 1) { return false; } else { removeWordCountMessage("message"); } }); jQ(document).on("click", "[id^='save_']", function () { var savePostId = jQ(this).closest(".post-body-content").find("textarea").attr("id"); savePostId = savePostId.replace("message", ""); var postEditEditorId = "message" + parseInt(savePostId); if (showErrorMessage(postEditEditorId) === 1) { var editor = tinymce.get(postEditEditorId); if (editor && editor.startContent) { editor.setContent(editor.startContent); } return false; } else { removeWordCountMessage(postEditEditorId); } }); } } }); function checkEditorLoaded() { const observer = new MutationObserver((mutations, obs) => { for (const mutation of mutations) { for (const node of mutation.addedNodes) { if (node.nodeType === 1 && /^message\d*_ifr$/.test(node.id)) { var messageId = node.id.replace("_ifr", ""); waitForEditor(messageId, function () { setupWordCountObserver(messageId); }); } } } }); observer.observe(document.body, { childList: true, subtree: true }); } function waitForEditor(id, callback) { const interval = setInterval(() => { const editor = tinymce.get(id); if (editor && editor.initialized) { clearInterval(interval); callback(editor); } }, 100); } function setupWordCountObserver(id) { const editor = tinymce.get(id); if (!editor) return; showWordCountMessage(id); // Update message on any change editor.on("input", function () { showWordCountMessage(id); }); editor.on("change", function () { showWordCountMessage(id); }); editor.on("undo redo paste", function () { showWordCountMessage(id); }); } function isAdministratorOrModerator() { return jQ(".dropdown-menu .admin_user:not(.hidden)").length || jQ(".dropdown-menu .moderator_user:not(.hidden)").length; } function countWords(str) { return str .replace(/<\ ?a[^>\>]*>/g, '') .replace(/(<[^>]*>)+/gi, '') .replace(/&(.*?);/gi, ' ') .replace(/(^\s*)|(\s*$)/gi, '') .replace(/\n/g, ' ') .replace(/\s+/g, ' ') .trim() .split(' ') .filter(Boolean) .length; } function showErrorMessage(id) { let postContent = ""; const editor = tinymce.get(id); if (editor) { postContent = editor.getContent(); } else { postContent = jQ("#" + id).val(); } const totalWord = countWords(postContent); if (!isAdministratorOrModerator() && totalWord > maximumWords) { wtbx.dialog.alert("Error: The text that you have entered is too long (" + totalWord + " words). Please shorten it to " + numberWithCommas(maximumWords) + " words."); return 1; } return 0; } function showWordCountMessage(id) { const editor = tinymce.get(id); if (!editor) return; const content = editor.getContent(); const totalWord = countWords(content); let message = ""; if (totalWord && totalWord <= '< (totalword + 100) else if message="<span style="color: #27415f !important; padding-top:10px; font-weight:bold;">" span>'; totalword { }>=> 100) { message = '<span style="color: #dc2f2f; padding-top:10px; font-weight:bold;">' + totalWord + '</span>'; } if (message) { let wordText = 'word'; if(totalWord > 1) { wordText = 'words'; } message = 'You\'ve typed ' + message + ' '+wordText+'. Your submission must not exceed ' + numberWithCommas(maximumWords) + ' words.'; } const containerId = 'errorMessage' + id; const existingContainer = jQ('#' + containerId); if (!existingContainer.length) { const editorContainer = jQ(editor.iframeElement).closest('.mce-tinymce'); editorContainer.after('' + message + ''); } else { existingContainer.html(message); } } function removeWordCountMessage(id) { jQ('#errorMessage' + id).remove(); } function numberWithCommas(num) { return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); } </script> <style> #errorMessagemessage:has(span), #errorMessagemessage1:has(span) { font-size: 14px; color: #777; } #quickReplyPost #errorMessagemessage:has(span) ~ #reply_options { margin-top: -70px; } #quickReplyPost:has(#showCaptcha:not(.hidden)) #errorMessagemessage:has(span) ~ #reply_options { margin-top: -6px; } @media (max-width: 767px) { #quickReplyPost #errorMessagemessage:has(span) ~ #reply_options { margin-top: -87px; } } @media (max-width: 555px) { #quickReplyPost [id^="showCaptcha"]:not(.hidden) ~ .reply-menu .reply-options { margin-top: -187px; } } </style> [^> - Sur la deuxième ligne du code que vous avez copié/collé, modifiez le numéro à côté de Nombre maximum de mots au nombre maximum de mots que vous souhaitez autoriser.
- Enregistrer les changements.
If you still need help, please contact us.