Help > Forum > Argomenti e Post > Limitare il numero di parole in un post

Limitare il numero di parole in un post

Puoi impostare un limite di parole per nuovi argomenti o risposte seguendo i passaggi seguenti. Sotto la casella di testo verrà visualizzato un contatore di parole per aiutare gli utenti a rimanere entro il limite e non saranno in grado di inviare i propri post se superano tale limite. I moderatori e gli amministratori sono esentati da questo limite.

  1. Accedi al tuo account Website Toolbox.
  2. Fai clic su Integra link nel menu principale.
  3. Fai clic su HTML collegamento.
  4. Copia il codice HTML qui sotto nel Codice HTML del tag principale del forum casella di testo.

    <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>
  5. Nella seconda riga del codice copiato/incollato, modifica il numero accanto a Numero massimo di parole al numero massimo di parole che desideri consentire.
  6. Salva le modifiche.


If you still need help, please contact us.