Help > Forum > Themen & Beiträge > Begrenzung der Anzahl der Wörter in einem Beitrag

Begrenzung der Anzahl der Wörter in einem Beitrag

Du kannst ein Wortlimit für neue Themen oder Antworten festlegen, indem du die folgenden Schritte befolgst. Unter dem Textfeld wird ein Wortzähler angezeigt, der Benutzern hilft, das Limit einzuhalten. Wenn sie das Limit überschreiten, können sie ihre Beiträge nicht einreichen. Moderatoren und Administratoren sind von diesem Limit ausgenommen.

  1. Loggen Sie sich in Ihr Website Toolbox-Konto ein.
  2. Klicken Sie auf Integrieren Link im Hauptmenü.
  3. Klicken Sie auf HTML Link.
  4. Kopieren Sie den folgenden HTML-Code in das HTML-Code für Forenüberschrift Textfeld.

    <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. Ändern Sie in der zweiten Zeile des Codes, den Sie kopiert/eingefügt haben, die Zahl neben Maximale Anzahl Wörter auf die maximale Anzahl von Wörtern, die Sie zulassen möchten.
  6. Speichern die Änderungen.


If you still need help, please contact us.