Увеличение длины заголовка тем в SMF 2.0x

Дата: 31 октября, 2010 год

По умолчанию в SMF 2.0x названание темы имеет ограничение в длине — не более 80 символов. На одном из форумов мне надо было увеличить длину заголовка темы до 160 символов. Давайте посмотрим, как это можно сделать.

Ограничение может быть в нескольких местах:

  1. При создании новой темы ее название лимитировано длиной формы input с помощью аттрибута maxlength.
  2. После нажатия кнопки «Отправить» при создании новой темы, уже при проверке введенной информации скрипт php может тупо обрезать заголовок темы
  3. Ограничение на длину поля в БД, заголовок просто обрезается при записи туда.
  4. Очень маловероятно, но возможно при выводе заголовка темы в различных частях форума этот вывод может быть также обрезан, т.е, идет динамиеское укорочение при выводе из БД, уже после внесения информации в базу.
  5. И нужно не забыть также про случай, когда идет редактирование уже созданного заголовка.

Для начала, конечно, я залез в БД и посмотрел, какое ограничение стоит в самой ячейки для заголовка — там было ограничение в 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 символов, что нам и было нужно.

Еще по теме: ,

Категория: Хаки и доработки

Comments (4)

 

  1. keks:

    сделал как написано-но не изменилась длина

  2. keks:

    вот этот мод помог http://custom.simplemachines.org/mods/index.php?mod=2688

SEO Powered by Platinum SEO from Techblissonline