[FAQ] Как изменить длину названия темы?

Темы по наиболее часто задаваемым вопросам без привязки к версии phpBB. Читать в первую очередь!
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB 3.1.x/3.2.x | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Pirat2007
phpBB 1.0.0
Сообщения: 8
Зарегистрирован: 14.12.2007 16:16

[FAQ] Как изменить длину названия темы?

Сообщение Pirat2007 » 15.12.2007 2:15

Собственно вопрос в теме. Решение для второй версии форума не подходит. Что делать?
Последний раз редактировалось Pirat2007 14.12.2007 17:57, всего редактировалось 1 раз.

Аватара пользователя
Поручик
Former team member
Сообщения: 3942
Зарегистрирован: 12.05.2005 17:25
Откуда: Оренбург (Южный Урал)
Благодарил (а): 24 раза
Поблагодарили: 54 раза
Контактная информация:

Сообщение Поручик » 15.12.2007 11:32

Решение для второй версии в общем подходит, только есть небольшой нюанс. Перед записью сообщения в базу данных название темы обрезается до 60 символов функцией truncate_string, что видно из данного кода

Код: Выделить всё

	$subject = truncate_string($subject);
	$data['topic_title'] = truncate_string($data['topic_title']);
Заголовок функции truncate_string

Код: Выделить всё

function truncate_string($string, $max_length = 60, $allow_reply = true, $append = '')
Таким образом, для изменения длины названия темы в Олимпусе решение примерно такое (для SQL запросов не забудьте изменить префикс таблиц phpbb_ на актуальный для вашей конференции):

Код: Выделить всё

#
#------- [SQL] -----------
#
ALTER TABLE `phpbb_posts` CHANGE `post_subject` `post_subject` VARCHAR( 200 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL;
ALTER TABLE `phpbb_topics` CHANGE `topic_title` `topic_title` VARCHAR( 200 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL;

#
#------- [OPEN] -----------
#
includes\functions_posting.php

#
#------- [FIND] -----------
#
	$subject = truncate_string($subject);
	$data['topic_title'] = truncate_string($data['topic_title']);

#
#------- [REPLACE WITH] -----------
#
	$subject = truncate_string($subject, 120);
	$data['topic_title'] = truncate_string($data['topic_title'], 120);

#
#------- [OPEN] -----------
#
styles\prosilver\template\mcp_topic.html

#
#------- [FIND] -----------
#
<dd><input type="text" name="subject" id="subject" size="45" maxlength="64" tabindex="2" value="{SPLIT_SUBJECT}" title="Type the post subject" class="inputbox" /></dd>

#
#------- [REPLACE WITH] -----------
#
<dd><input type="text" name="subject" id="subject" size="60" maxlength="128" tabindex="2" value="{SPLIT_SUBJECT}" title="Type the post subject" class="inputbox" /></dd>

#
#------- [OPEN] -----------
#
styles\subsilver2\template\posting_body.html

#
#------- [FIND] -----------
#
		<input class="post" style="width:450px" type="text" name="subject" size="45" maxlength="<!-- IF S_NEW_MESSAGE -->60<!-- ELSE -->64<!-- ENDIF -->" tabindex="2" value="{SUBJECT}" />

#
#------- [REPLACE WITH] -----------
#
		<input class="post" style="width:450px" type="text" name="subject" size="60" maxlength="<!-- IF S_NEW_MESSAGE -->120<!-- ELSE -->128<!-- ENDIF -->" tabindex="2" value="{SUBJECT}" />

#
#------- [OPEN] -----------
#
styles\subsilver2\template\mcp_topic.html

#
#------- [FIND] -----------
#
<input class="post" style="width: 350px" type="text" size="35" maxlength="64" name="subject" value="{SPLIT_SUBJECT}" />

#
#------- [REPLACE WITH] -----------
#
<input class="post" style="width: 350px" type="text" size="45" maxlength="128" name="subject" value="{SPLIT_SUBJECT}" />
После внесения изменений в файлы не забудьте очистить кэш в администраторском разделе.

Можно изменить значение по умолчанию $max_length в truncate_string, тогда правка functions_posting.php не потребуется.
Последний раз редактировалось Поручик 15.12.2007 17:33, всего редактировалось 2 раза.
Профессионал - тот же дилетант, только знающий, где ошибётся.
Генератор db_update.php для phpBB2 с некоторыми удобствами. Многие моды я беру или ищу здесь, здесь, тут
Все консультации только на форуме, приваты и стук в аську по таким вопросам игнорируются!
FAQ-phpBB3 | Ошибки новичков, или как не поссориться с модератором | Правила конференции

наш форум http://forum.aeroion.ru/cat1.html

Аватара пользователя
RedNaxi
Former team member
Сообщения: 916
Зарегистрирован: 21.02.2007 2:05
Откуда: BeBoss.ru
Поблагодарили: 4 раза

Re: [FAQ] Как изменить длину названия темы?

Сообщение RedNaxi » 22.08.2008 14:44

на оффсайте предложили еще такое дополнение к моду:

Код: Выделить всё

    ALTER TABLE phpbb3_forums CHANGE `forum_last_post_subject` `forum_last_post_subject` VARCHAR( 200 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL;
которое по идее должно решить проблему
Общая ошибка
SQL ERROR [ mysql4 ]

Data too long for column 'forum_last_post_subject' at row 1 [1406]

Аватара пользователя
Палыч
Former team member
Сообщения: 9683
Зарегистрирован: 24.05.2006 23:20
Откуда: Питер
Благодарил (а): 3 раза
Поблагодарили: 453 раза
Контактная информация:

Re: [FAQ] Как изменить длину названия темы?

Сообщение Палыч » 22.08.2008 14:51

Интересно, а зачем CHANGE, если имя поля остаётся то же... достаточно MODIFY

Код: Выделить всё

ALTER TABLE phpbb3_forums MODIFY `forum_last_post_subject` VARCHAR( 200 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL;
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.

Аватара пользователя
RedNaxi
Former team member
Сообщения: 916
Зарегистрирован: 21.02.2007 2:05
Откуда: BeBoss.ru
Поблагодарили: 4 раза

Re: [FAQ] Как изменить длину названия темы?

Сообщение RedNaxi » 25.08.2008 13:25

В итоге окончательный вариант выглядит так:

Код: Выделить всё

        #
        #------- [SQL] -----------
        #
        ALTER TABLE `phpbb_posts` MODIFY  `post_subject` VARCHAR( 200 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL;
        ALTER TABLE `phpbb_topics` MODIFY `topic_title` VARCHAR( 200 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL;
        ALTER TABLE `phpbb_forums` MODIFY `forum_last_post_subject` VARCHAR( 200 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL;
        #
        #------- [OPEN] -----------
        #
        includes\functions_posting.php

        #
        #------- [FIND] -----------
        #
           $subject = truncate_string($subject);
           $data['topic_title'] = truncate_string($data['topic_title']);

        #
        #------- [REPLACE WITH] -----------
        #
           $subject = truncate_string($subject, 120);
           $data['topic_title'] = truncate_string($data['topic_title'], 120);

        #
        #------- [OPEN] -----------
        #
        styles\prosilver\template\mcp_topic.html

        #
        #------- [FIND] -----------
        #
        <dd><input type="text" name="subject" id="subject" size="45" maxlength="64" tabindex="2" value="{SPLIT_SUBJECT}" title="Type the post subject" class="inputbox" /></dd>

        #
        #------- [REPLACE WITH] -----------
        #
        <dd><input type="text" name="subject" id="subject" size="60" maxlength="128" tabindex="2" value="{SPLIT_SUBJECT}" title="Type the post subject" class="inputbox" /></dd>

        #
        #------- [OPEN] -----------
        #
        styles\subsilver2\template\posting_body.html

        #
        #------- [FIND] -----------
        #
              <input class="post" style="width:450px" type="text" name="subject" size="45" maxlength="<!-- IF S_NEW_MESSAGE -->60<!-- ELSE -->64<!-- ENDIF -->" tabindex="2" value="{SUBJECT}" />

        #
        #------- [REPLACE WITH] -----------
        #
              <input class="post" style="width:450px" type="text" name="subject" size="60" maxlength="<!-- IF S_NEW_MESSAGE -->120<!-- ELSE -->128<!-- ENDIF -->" tabindex="2" value="{SUBJECT}" />

        #
        #------- [OPEN] -----------
        #
        styles\subsilver2\template\mcp_topic.html

        #
        #------- [FIND] -----------
        #
        <input class="post" style="width: 350px" type="text" size="35" maxlength="64" name="subject" value="{SPLIT_SUBJECT}" />

        #
        #------- [REPLACE WITH] -----------
        #
        <input class="post" style="width: 350px" type="text" size="45" maxlength="128" name="subject" value="{SPLIT_SUBJECT}" />
        #
        #------- [OPEN] -----------
        #
        styles\prosilver\template\posting_editor.html

        #
        #------- [FIND] -----------
        #

              <dd><input type="text" name="subject" id="subject" size="45" maxlength="<!-- IF S_NEW_MESSAGE -->60<!-- ELSE -->64<!-- ENDIF -->" tabindex="2" value="{SUBJECT}{DRAFT_SUBJECT}" class="inputbox autowidth" /></dd>

        #
        #------- [REPLACE WITH] -----------
        #
              <dd><input type="text" name="subject" id="subject" size="60" maxlength="<!-- IF S_NEW_MESSAGE -->124<!-- ELSE -->128<!-- ENDIF -->" tabindex="2" value="{SUBJECT}{DRAFT_SUBJECT}" class="inputbox autowidth" /></dd>
и вроде как работает у меня:)
предлагаю вынести в первый пост...

zolti
phpBB 1.4.0
Сообщения: 38
Зарегистрирован: 17.09.2008 20:32
Забанен: Бессрочно

Re: [FAQ] Как изменить длину названия темы?

Сообщение zolti » 20.09.2008 13:01

Я конечно не очень разбираюсь в SQL, но 200 varchar мне не хватило, я поставил 400, на что он мне ответил что максимально 255, и сказал если хотите больше лучше varchar сменить на blob, что я и сделал. в итоге длина сообщения в поле тема может составлять то значение, которое вы укажите уже непосредственно в файлах настройки, о которых было написано в предыдущем посте.
к примеру:
$subject = truncate_string($subject, 250);
$data['topic_title'] = truncate_string($data['topic_title'], 250);

Аватара пользователя
crash
Former team member
Сообщения: 6517
Зарегистрирован: 07.07.2004 17:12
Откуда: Бердск
Поблагодарили: 15 раз
Контактная информация:

Re: [FAQ] Как изменить длину названия темы?

Сообщение crash » 20.09.2008 13:05

zolti
в названии темы 400 символов. Там можно изложить всю проблему, а не только тему назвать. Может поле сообщение вообще можно удалить.
Как правильно задавать вопросы
Для особо одаренных: поиск - это есть круто.
FAQ v.2 | FAQ v.3 | Шаблон запроса

Аватара пользователя
crash
Former team member
Сообщения: 6517
Зарегистрирован: 07.07.2004 17:12
Откуда: Бердск
Поблагодарили: 15 раз
Контактная информация:

Re: [FAQ] Как изменить длину названия темы?

Сообщение crash » 20.09.2008 13:27

не вижу смысла в аком названии темы, но дело ваше
Как правильно задавать вопросы
Для особо одаренных: поиск - это есть круто.
FAQ v.2 | FAQ v.3 | Шаблон запроса

master114
phpBB 1.4.0
Сообщения: 36
Зарегистрирован: 16.02.2008 0:32

Re: [FAQ] Как изменить длину названия темы?

Сообщение master114 » 13.10.2008 20:38

у меня все 200 символов вытянулись в 1 строке, что привело к появлению горизонтального скролла.
Как сделать перенос слов на 2-ую, и т. п. строку?

vint
phpBB 1.0.0
Сообщения: 6
Зарегистрирован: 24.12.2008 18:28
Откуда: minsk, belarus
Контактная информация:

Re: [FAQ] Как изменить длину названия темы?

Сообщение vint » 24.12.2008 18:36

В моем случае (версия 3.0.3) выполнять запросы не понадобилось. VARCHAR в указанных таблицах уже был выставлен в 255.
Но зато пришлось еще дополнительно править:

Код: Выделить всё

файл
styles/prosilver/template/posting_editor.html

найти
<dd><input type="text" name="subject" id="subject" size="45" maxlength="<!-- IF S_NEW_MESSAGE -->60<!-- ELSE -->64<!-- ENDIF -->" tabindex="2" value="{SUBJECT}{DRAFT_SUBJECT}" class="inputbox autowidth" /></dd>

заменить на
<dd><input type="text" name="subject" id="subject" size="60" maxlength="<!-- IF S_NEW_MESSAGE -->100<!-- ELSE -->128<!-- ENDIF -->" tabindex="2" value="{SUBJECT}{DRAFT_SUBJECT}" class="inputbox autowidth" /></dd>


Sheogorath
phpBB 1.2.0
Сообщения: 11
Зарегистрирован: 09.01.2009 14:22

Re: [FAQ] Как изменить длину названия темы?

Сообщение Sheogorath » 13.01.2009 23:50

Всё сделал, заработало. Только один момент: в базе

Код: Выделить всё

ALTER TABLE `phpbb_forums` MODIFY `forum_last_post_subject` VARCHAR( 200 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL;
стояло utf8_bin я сменил на utf8_unicode_ci Готовить мазь от геморроя или ничего страшного?

Аватара пользователя
Палыч
Former team member
Сообщения: 9683
Зарегистрирован: 24.05.2006 23:20
Откуда: Питер
Благодарил (а): 3 раза
Поблагодарили: 453 раза
Контактная информация:

Re: [FAQ] Как изменить длину названия темы?

Сообщение Палыч » 14.01.2009 1:23

Думаю, ничего.
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.

phpbbuser
phpBB 1.2.1
Сообщения: 27
Зарегистрирован: 18.12.2010 1:06
Благодарил (а): 2 раза

Re: [FAQ] Как изменить длину названия темы?

Сообщение phpbbuser » 19.12.2010 20:40

ALTER TABLE `phpbb_posts` MODIFY `post_subject` VARCHAR( 200 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL;
ALTER TABLE `phpbb_topics` MODIFY `topic_title` VARCHAR( 200 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL;
ALTER TABLE `phpbb_forums` MODIFY `forum_last_post_subject` VARCHAR( 200 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL;
А вот эти первые строчки в какой файл вставлять и куда именно?

Аватара пользователя
Палыч
Former team member
Сообщения: 9683
Зарегистрирован: 24.05.2006 23:20
Откуда: Питер
Благодарил (а): 3 раза
Поблагодарили: 453 раза
Контактная информация:

Re: [FAQ] Как изменить длину названия темы?

Сообщение Палыч » 19.12.2010 21:29

phpbbuser
Если вы задаёте этот вопрос, то для вас ответ такой: Никуда.
Это SQL-запросы, которые выполняются, напрямую работая с базой. Инструментов для работы с базой много, но наиболее распространённый и имеющийся практически на каждом хостинге - phpmyadmin.
Читать: http://www.php-myadmin.ru
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.

phpbbuser
phpBB 1.2.1
Сообщения: 27
Зарегистрирован: 18.12.2010 1:06
Благодарил (а): 2 раза

Re: [FAQ] Как изменить длину названия темы?

Сообщение phpbbuser » 19.12.2010 22:54

Палыч писал(а):Если вы задаёте этот вопрос, то для вас ответ такой: Никуда.Это SQL-запросы, которые выполняются, напрямую работая с базой.
Т.е. правильно ли я понял, что можно создать php-скрипт и там выполнить эти SQL-запросы, просто отредактировать соответствующие базы, верно?

Перенесено из форума FAQ (phpBB 3.0.x) в форум FAQ 28.09.2016 15:02 модератором rxu

Ответить

Вернуться в «FAQ»