Я пытаюсь вести подсчет слов в наборе длинных текстовых полей. Насколько я вижу, есть несколько вариантов:
- Создайте представление и добавьте php в пользовательский шаблон, который производит подсчет слов. Большинство решений, которые я нашел, слишком ссылаются на этот выпуск 2005 года, который значительно устарел.
Это было бы жизнеспособным решением, за исключением того, что ни один из перечисленных вариантов кода не работает, и я недостаточно разбираюсь в своих php или jquery, чтобы самостоятельно обновить их до D7. Я пробовал это:
<?php $wordcount = " | ".count(explode(" ", strip_tags(trim($content))))." words" ; ?>
Но я получаю ошибку недопустимой переменной.
- В нижней части той же проблемы есть решение D6, которое сохраняет количество слов всякий раз, когда узел сохраняется:
function od_tweaks_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
if ($op == "insert") { // Сохраняем количество слов
$тело = $узел->тело;
$word_count = count(explode(" ", strip_tags(trim($body))));
$нид = $узел->нид;
db_query("ВСТАВИТЬ В {od_tweaks} (nid, wordcount) VALUES ($nid, $word_count)");
} иначе если ($op == "обновить") {
$тело = $узел->тело;
$word_count = count(explode(" ", strip_tags(trim($body))));
$нид = $узел->нид;
db_query("ОБНОВЛЕНИЕ {od_tweaks} SET wordcount = $word_count WHERE nid = $nid");
}
}
- Используйте модуль, которого я бы предпочел избежать. Кроме того, большинство модулей подсчета слов D7 уже устарели. Количество слов кажется, не очень много и нет документации. Проверка поля требует нескольких модулей и изрядной суеты. Это похоже на тяжелое решение проблемы с легким кодом. Большинство других решений, которые я нашел, производят подсчет слов для активного поля, но не сохраняют и не комбинируют.
Рассматриваемые поля могут обновляться вместе с полным узлом или обновляться через редактируемые поля, поэтому я думаю, что лучший способ — это либо крючок, либо jquery, который пересчитывает слова каждый раз, когда поле обновляется, а затем сохраняет это значение в новое поле. Учитывая мой вариант использования, это даст мне возможность добавлять и комбинировать значения количества слов различными способами.
Итак, похоже, что вариант 2 является правильным направлением, но код устарел. Есть ли лучший способ сделать это в D7?