Страница 1 из 7

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

Добавлено: 15.12.2007 2:15
Pirat2007
Собственно вопрос в теме. Решение для второй версии форума не подходит. Что делать?

Добавлено: 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 не потребуется.

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

Добавлено: 22.08.2008 14:44
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]

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;

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

Добавлено: 25.08.2008 13:25
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>
и вроде как работает у меня:)
предлагаю вынести в первый пост...

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

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

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

Добавлено: 20.09.2008 13:05
crash
zolti
в названии темы 400 символов. Там можно изложить всю проблему, а не только тему назвать. Может поле сообщение вообще можно удалить.

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

Добавлено: 20.09.2008 13:27
crash
не вижу смысла в аком названии темы, но дело ваше

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

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

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

Добавлено: 24.12.2008 18:36
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>


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

Добавлено: 13.01.2009 23:50
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 Готовить мазь от геморроя или ничего страшного?

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

Добавлено: 14.01.2009 1:23
Палыч
Думаю, ничего.

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

Добавлено: 19.12.2010 20:40
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;
А вот эти первые строчки в какой файл вставлять и куда именно?

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

Добавлено: 19.12.2010 21:29
Палыч
phpbbuser
Если вы задаёте этот вопрос, то для вас ответ такой: Никуда.
Это SQL-запросы, которые выполняются, напрямую работая с базой. Инструментов для работы с базой много, но наиболее распространённый и имеющийся практически на каждом хостинге - phpmyadmin.
Читать: http://www.php-myadmin.ru

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

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