Увеличение длины заголовка тем в SMF 2.0x
Дата: 31 октября, 2010 год
По умолчанию в SMF 2.0x названание темы имеет ограничение в длине — не более 80 символов. На одном из форумов мне надо было увеличить длину заголовка темы до 160 символов. Давайте посмотрим, как это можно сделать.
Ограничение может быть в нескольких местах:
- При создании новой темы ее название лимитировано длиной формы input с помощью аттрибута maxlength.
- После нажатия кнопки «Отправить» при создании новой темы, уже при проверке введенной информации скрипт php может тупо обрезать заголовок темы
- Ограничение на длину поля в БД, заголовок просто обрезается при записи туда.
- Очень маловероятно, но возможно при выводе заголовка темы в различных частях форума этот вывод может быть также обрезан, т.е, идет динамиеское укорочение при выводе из БД, уже после внесения информации в базу.
- И нужно не забыть также про случай, когда идет редактирование уже созданного заголовка.
Для начала, конечно, я залез в БД и посмотрел, какое ограничение стоит в самой ячейки для заголовка — там было ограничение в 255 символов, значит, ограничение в файлах.
Чтобы его найти, я скачал чистый дистрибутив SMF 2.0 RC3 и поискал вот такую строку:
maxlength="80"
В результате нашлось 5 файлов в папке /Themes/default/: Display.template.php, MessageIndex.template.php, Pos.template.php, Wireless.template.php и Help.template.php. Два последних, очевидно, нам не нужны, остальные мы открываем, ищем, где конкретно находится вышеназванная строка. Бегло просмотрев, я понял, что это то, что надо. Все поля ввода с найденным ограничением относятся к заголовку. Чтобы увеличить его длину, нужно просто в этих трех файлах заменить maxlength=»80″ на maxlength=»160″, что я и сделал.
Думаете все? Нифига! :) Длина заголовка увеличилась, но не до 160, а до 100 символов. При этом, ограничение на ввод заголовка при создании темы стало, как мы и сделали, 160. Видимо, это скрипт перед записью в БД обрезает наш заголовок до 100 символов. Функции, связанные с процессом постинга, находятся в файле /Sources/Post.php, открываем его и заменяем в трех местах 100 на 160, вот эти три куска кода:
// Make sure the subject isn't too long - taking into account special characters. if ($smcFunc['strlen']($form_subject) > 100) $form_subject = $smcFunc['substr']($form_subject, 0, 100);
// At this point, we want to make sure the subject isn't too long. if ($smcFunc['strlen']($_POST['subject']) > 100) $_POST['subject'] = $smcFunc['substr']($_POST['subject'], 0, 100);
// Maximum number of characters. if ($smcFunc['strlen']($_POST['subject']) > 100) $_POST['subject'] = $smcFunc['substr']($_POST['subject'], 0, 100);
После проделанных манипуляций максимальная длина заголовка стала 160 символов, что нам и было нужно.
Еще по теме: SMF 2.0x, заголовок
Категория: Хаки и доработки
сделал как написано-но не изменилась длина
вот этот мод помог http://custom.simplemachines.org/mods/index.php?mod=2688