Форум Vanilla, конечно, довольно интересный и очень удобный, но ещё достаточно сыроват. Поэтому приходится некоторые ошибки по ходу находить и самому править. Собственно обнаружилась ошибка в проверке на максимальную длину названия темы в Vanilla. Описываемая ошибка у меня проявилась в версии 1.1.5a.
Итак в файле [путь к форуму]/appg/settings.php есть такой параметр $Configuration['MAX_TOPIC_WORD_LENGTH'], который вероятно и должен отвечать за максимальную длину названия темы. Но как не менял я этот параметр - результат был один и тот же: ограничение всегда было в 100 символов.
Стоит сказать, что определил-то я это не сразу :). Ошибка показывается, не как обычно что-то вроде “Превышено ограничение в N символов”, а показывается на сколько символов длина заголовка превышает ограничение, поэтому у меня число было всегда разным, а перевод был не правильным: "Заголовок темы превышает N символов". Я перевел для себя так (см. файл [путь к форуму]/languages/[название языка]/definitions.php):
$Context->Dictionary['ErrInputLength'] = '//1 слишком длинный. Сократите его на //2 символ(а, ов).';
Но собственно к ошибке с проверкой длинны. Раз ограничение всегда было одно - в 100 символов, значит оно где-то жестко прописано, вместо того, чтобы использовать наш параметр. Порывшись в исходниках, обнаружилось проблемное место. Итак, чтобы исправить этот глюк открываем файл [путь к форуму]/library/Vanilla/Vanilla.Class.DiscussionManager.php и заменяем в нём строку 448:
Validate($this->Context->GetDefinition('DiscussionTopicLower'), 1, $Name, 100, '', $this->Context);
на строку:
Validate($this->Context->GetDefinition('DiscussionTopicLower'), 1, $Name, $this->Context->Configuration['MAX_TOPIC_WORD_LENGTH'], '', $this->Context);
Теперь проверка на длину строки будет работать корректно.
В шаблоне также ограничение на длину прописано жестко, то есть параметр maxlength=”100″. Заменим его. Открываем файл [путь к форуму]/themes/discussion_form.php и заменяем в нем:
<input id="txtTopic" type="text" name="Name" class="DiscussionBox" maxlength="100" value="'.$Discussion->Name.'" />
на
<input id="txtTopic" type="text" name="Name" class="DiscussionBox" maxlength="'.$this->Context->Configuration['MAX_TOPIC_WORD_LENGTH'].'" value="'.$Discussion->Name.'" />
Вот теперь вроде бы всё. Ошибка исправлена полностью.
PS Много информациии по Vanilla вы найдете здесь: Русскоязычное сообщество Vanilla forum.