Можно ли считать символы в TYPO3 RTE?

Есть ли способ подсчитать количество символов в RTE? По умолчанию он подсчитывает количество слов, но можем ли мы это изменить?

Я прочитал все документы и ничего не нашел.

Захват RTE


person alienlebarge    schedule 19.02.2014    source источник


Ответы (2)


Исходная версия HTMLArea не поддерживает эту функцию. TYPO3 поставляется с модифицированной версией HTMLArea, где несколько лет назад была реализована функция подсчета слов. .

Я просмотрел исходный код TYPO3 RTE HTMLArea, и количество слов жестко запрограммировано и не настраивается.

Возможность добавить количество символов заключается в изменении поставляемой версии HTMLArea.

Откройте файл \typo3\sysext\rtehtmlarea\htmlarea\htmlarea.js и замените функцию updateWordCount следующей.

updateWordCount: function() {
    var wordCount = 0;
    if (this.getEditor().getMode() == 'wysiwyg') {
            // Get the html content
        var text = this.getEditor().getHTML();
        if (!Ext.isEmpty(text)) {
                // Replace html tags with spaces
            text = text.replace(HTMLArea.RE_htmlTag, ' ');
                // Replace html space entities
            text = text.replace(/ | /gi, ' ');
                // Remove numbers and punctuation
            text = text.replace(HTMLArea.RE_numberOrPunctuation, '');
                // Get the number of word
            wordCount = text.length;
        }
    }
        // Update the word count of the status bar
    this.statusBarWordCount.dom.innerHTML = wordCount + ' ' + ( wordCount == 1 ? 'char' : 'chars');
},

Обратите внимание, что это быстрое и грязное решение, которое не соответствует переводу слов «char» и «chars».

Если вы изменяете htmlarea.js, имейте в виду, что вам придется вручную обновлять свои изменения после каждого обновления ядра TYPO3.

person derhansen    schedule 21.02.2014

Если вы используете TYPO3 7, вы должны использовать этот модифицированный скрипт из предыдущего ответа:

updateWordCount: function() {
var wordCount = 0;
if (this.getEditor().getMode() == 'wysiwyg') {
        // Get the html content
    var text = this.getEditor().getHTML();
    if (!Ext.isEmpty(text)) {
            // Replace html tags with spaces
        text = text.replace(HTMLArea.RE_htmlTag, ' ');
            // Replace html space entities
        text = text.replace(/ | /gi, ' ');
            // Remove numbers and punctuation
        text = text.replace(HTMLArea.RE_numberOrPunctuation, '');
            // Get the number of word
        wordCount = text.length;
    }
}
    // Update the word count of the status bar
this.statusBarWordCount.innerHTML = wordCount + ' ' + ( wordCount == 1 ? 'char' : 'chars');
}, 

мне пришлось удалить .dom из следующей строки:

this.statusBarWordCount.dom.innerHTML
person Klizzy    schedule 02.03.2017