Уважаемые пользователи!
Напоминаем, что с 7 ноября 2020 года phpBB Group прекращает поддержку phpBB версии 3.2.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2020 года.
С учетом этого, а также того, что версия 3.2.x больше не будет получать обновлений, за исключением связанных с проблемами безопасности
(только при их наличии и только до 7 ноября 2020 года), рекомендуется обновить конференции до версии 3.3.x.

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

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

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

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

Сообщение Pirat2007 »

Собственно вопрос в теме. Решение для второй версии форума не подходит. Что делать?
Последний раз редактировалось Pirat2007 14.12.2007 17:57, всего редактировалось 1 раз.
Аватара пользователя
Поручик
Former team member
Сообщения: 3942
Стаж: 16 лет
Откуда: Оренбург (Южный Урал)
Благодарил (а): 24 раза
Поблагодарили: 54 раза

Сообщение Поручик »

Решение для второй версии в общем подходит, только есть небольшой нюанс. Перед записью сообщения в базу данных название темы обрезается до 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
Сообщения: 933
Стаж: 14 лет 2 месяца
Откуда: BeBoss.ru
Благодарил (а): 2 раза
Поблагодарили: 13 раз

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

Сообщение RedNaxi »

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

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

    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
Стаж: 14 лет 11 месяцев
Откуда: Питер
Благодарил (а): 3 раза
Поблагодарили: 454 раза

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

Сообщение Палыч »

Интересно, а зачем 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
Сообщения: 933
Стаж: 14 лет 2 месяца
Откуда: BeBoss.ru
Благодарил (а): 2 раза
Поблагодарили: 13 раз

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

Сообщение RedNaxi »

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

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

        #
        #------- [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
Стаж: 12 лет 7 месяцев
Забанен: Бессрочно

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

Сообщение zolti »

Я конечно не очень разбираюсь в 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
Стаж: 16 лет 10 месяцев
Откуда: Бердск
Поблагодарили: 15 раз

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

Сообщение crash »

zolti
в названии темы 400 символов. Там можно изложить всю проблему, а не только тему назвать. Может поле сообщение вообще можно удалить.
Как правильно задавать вопросы
Для особо одаренных: поиск - это есть круто.
FAQ v.2 | FAQ v.3 | Шаблон запроса
Аватара пользователя
crash
Former team member
Сообщения: 6517
Стаж: 16 лет 10 месяцев
Откуда: Бердск
Поблагодарили: 15 раз

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

Сообщение crash »

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

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

Сообщение master114 »

у меня все 200 символов вытянулись в 1 строке, что привело к появлению горизонтального скролла.
Как сделать перенос слов на 2-ую, и т. п. строку?
vint
phpBB 1.0.0
Сообщения: 6
Стаж: 12 лет 4 месяца
Откуда: minsk, belarus

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

Сообщение vint »

В моем случае (версия 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
Стаж: 12 лет 4 месяца

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

Сообщение Sheogorath »

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

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

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
Стаж: 14 лет 11 месяцев
Откуда: Питер
Благодарил (а): 3 раза
Поблагодарили: 454 раза

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

Сообщение Палыч »

Думаю, ничего.
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
phpbbuser
phpBB 1.2.1
Сообщения: 27
Стаж: 10 лет 4 месяца
Благодарил (а): 2 раза

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

Сообщение phpbbuser »

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
Стаж: 14 лет 11 месяцев
Откуда: Питер
Благодарил (а): 3 раза
Поблагодарили: 454 раза

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

Сообщение Палыч »

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

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

Сообщение phpbbuser »

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

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