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

Темы по наиболее часто задаваемым вопросам по phpBB 3.0.x. Читать в первую очередь!

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

Сообщение Pirat2007 15.12.2007 3:15

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


Сообщение Поручик 15.12.2007 12: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 18:33, всего редактировалось 2 раз(а).
Профессионал - тот же дилетант, только знающий, где ошибётся.
Генератор db_update.php для phpBB2 с некоторыми удобствами. Многие моды я беру или ищу здесь, здесь, тут
Все консультации только на форуме, приваты и стук в аську по таким вопросам игнорируются!
FAQ-phpBB2 | FAQ-phpBB3 | Ошибки новичков, или как не поссориться с модератором | Правила конференции

наш форум http://forum.aeroion.ru/
Аватара пользователя
Поручик
Его Благородие
Его Благородие
 
Сообщения: 3668
Зарегистрирован: 12.05.2005 17:25
Откуда: Оренбург (Южный Урал)

Сообщение Kovu 23.12.2007 15:45

Спасибо. Только вот в моем случае надо было перенести длинные темы из пхпбб2 в 3.

Подправил файлы. Установил форум. Выполнил SQL запрос. Начал конвертирование и конвектор стал ругаться на topic_last_post_subject, что мол данные для него длинноваты.
В SQL понимаю мало, но решил попробывать сделать запрос подобный и для topic_last_post_subject. Все сконвертировалось. И вроде даже работает. Не знаю правда верно ли поступил или надо было как-то иначе.
Kovu
phpBB 1.2.0
 
Сообщения: 11
Зарегистрирован: 23.12.2007 15:18

Сообщение Merlin 25.12.2007 3:42

Небольшое доволнение

Код: Выделить всё
#
#------- [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>
Если спросят: "Куда?", отвечай: "В никуда!",
Это правда, и в этом беда!
Аватара пользователя
Merlin
phpBB 1.4.2
 
Сообщения: 51
Зарегистрирован: 06.03.2005 7:24
Откуда: odessa.ua

Сообщение makcblm 07.03.2008 1:04

А зачем в input-ах maxlength ставится 128, если truncate_string все равно до 120 символов строку режет?
makcblm
phpBB 1.0.0
 
Сообщения: 4
Зарегистрирован: 24.02.2008 21:18
Откуда: Тула

Сообщение rxu 07.03.2008 17:15

makcblm писал(а):truncate_string все равно до 120 символов строку режет?

Кажется, даже до 60-ти.
Изображение
Аватара пользователя
rxu
phpBB Guru
 
Сообщения: 4445
Зарегистрирован: 12.05.2006 18:16
Откуда: Красноярск

Сообщение makcblm 07.03.2008 20:40

rxu писал(а):Кажется, даже до 60-ти.


Наверху прописано как формат вызова функции модифицировать truncate_string($subject, 120) или как вариант $max_length в самой функции выставить в 120.

А вот почему тут 120, а в шаблонах 128 я не понял - возможно опечатка или же какой-то тайный для меня смысл есть.
makcblm
phpBB 1.0.0
 
Сообщения: 4
Зарегистрирован: 24.02.2008 21:18
Откуда: Тула

Сообщение rxu 07.03.2008 21:16

makcblm писал(а):или же какой-то тайный для меня смысл есть.

Это вряд ли :)
Изображение
Аватара пользователя
rxu
phpBB Guru
 
Сообщения: 4445
Зарегистрирован: 12.05.2006 18:16
Откуда: Красноярск

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

Сообщение Виталий В. 28.06.2008 23:36

Я сделал, как написал Поручик 15.12.2007 12:32 + дополнение от Merlin 25.12.2007 3:42.
При исправлении старых тем действительно название темы можно увеличить до 120 символов кириллицей. Больше при редактировании в заголовке набрать не получается. При сохранении первого сообщения оно сохраняется со 120 символами кириллицей.
Но если я пишу новое сообщение, но при наборе около 120 символов кириллицей набирается в строке заголовка и при предварительном просмотре тема смотрится нормально. Но при нажатии кнопки "отправить" выскакивает:

Код: Выделить всё
Общая ошибка
SQL ERROR [ mysql4 ]

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

SQL

UPDATE phpbb3_forums SET forum_topics_real = forum_topics_real - 1, forum_posts = forum_posts - 1, forum_topics = forum_topics - 1, forum_last_post_id = 7700, forum_last_post_subject = '/&quot;FARMLINK&quot;: ОБМАНЫ ПО ЗАРПЛАТЕ И РАСХОДАМ + КРИМИНАЛЬНЫЕ ДЕЙСТВИЯ В ОТНОШЕНИИ СОТРУДНИКОВ !!!', forum_last_post_time = 1214681093, forum_last_poster_id = 2, forum_last_poster_colour = '', forum_last_poster_name = 'Молодогвардеец-Котище' WHERE forum_id = 6

BACKTRACE

FILE: includes/db/mysql.php
LINE: 158
CALL: dbal->sql_error()

FILE: includes/functions_posting.php
LINE: 1512
CALL: dbal_mysql->sql_query()

FILE: posting.php
LINE: 1443
CALL: delete_post()

FILE: posting.php
LINE: 280
CALL: handle_post_delete()


Чтобы этого не возникало - надо не 120 символов кириллицей набирать, а около 100 по примерному подсчёту, тогда нормально сохраняется.
Но тут ещё одна заковыка:
тема в форуме постится несколько раз подряд одна и та-же, от 2 до 4 раз. При удалении выскакивает такая-же "общая ошибка...", обновляю страницу с "общей ошибкой..." - пишет:
Информация
Сообщение не существует.

Надо снова возвращаться в список форумов и снова удалять несколько раз через эти-же шаги.
Виталий В.
phpBB 1.4.4
 
Сообщения: 71
Зарегистрирован: 07.06.2008 9:26

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

Сообщение rxu 29.06.2008 4:59

Подождите версии 3.0.2, где длина названий тем и сообщений штатно увеличена в два с половиной раза.
Изображение
Аватара пользователя
rxu
phpBB Guru
 
Сообщения: 4445
Зарегистрирован: 12.05.2006 18:16
Откуда: Красноярск

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

Сообщение Виталий В. 29.06.2008 12:48

Так а те изменения, которые я сделал, нужно вернуть назад? Или можно что-то сделать, чтобы длина названия была хотя бы 100 символов кириллицей?
Виталий В.
phpBB 1.4.4
 
Сообщения: 71
Зарегистрирован: 07.06.2008 9:26

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

Сообщение rxu 29.06.2008 18:51

Зависит от того, как вы будете обновляться. Единого рецепта нет. Можете попробовать и так, и так.
Изображение
Аватара пользователя
rxu
phpBB Guru
 
Сообщения: 4445
Зарегистрирован: 12.05.2006 18:16
Откуда: Красноярск

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

Сообщение Виталий В. 01.07.2008 23:09

А может, проблемы с "общей ошибкой" и размножением топика связаны с тем, что Merlin вместо 124 написал 128? Я тоже со 128 у себя сделал...
Код: Выделить всё
<!-- IF S_NEW_MESSAGE -->124<!-- ELSE -->128

см. его небольшое дополнение выше
Виталий В.
phpBB 1.4.4
 
Сообщения: 71
Зарегистрирован: 07.06.2008 9:26

Re:

Сообщение Виталий В. 02.07.2008 21:26

Kovu писал(а):решил попробывать сделать запрос подобный и для topic_last_post_subject. Все сконвертировалось. И вроде даже работает. Не знаю правда верно ли поступил или надо было как-то иначе.

И я сделал аналогичный запрос для topic_last_post_subject:
ALTER TABLE `phpbb3_topics` CHANGE `topic_last_post_subject` `topic_last_post_subject` VARCHAR( 200 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL
Но при создании нового сообщения с темой кириллицей ровно 120 символов всё равно выдаёт:
Код: Выделить всё
Общая ошибка
SQL ERROR [ mysql4 ]

Field 'topic_last_post_subject' doesn't have a default value [1364]

SQL

INSERT INTO phpbb3_topics (topic_poster, topic_time, forum_id, icon_id, topic_approved, topic_title, topic_first_poster_name, topic_first_poster_colour, topic_type, topic_time_limit, topic_attachment) VALUES (2, 1215019281, 6, 0, 1, 'ОСТОРОЖНО - &quot;ФАРМЛИНК&quot;/&quot;FARMLINK&quot;: ОБМАНЫ ПО ЗАРПЛАТЕ И РАСХОДАМ', 'Молодогвардеец-Котище', '', 0, 0, 0)

BACKTRACE

FILE: includes/db/mysql.php
LINE: 158
CALL: dbal->sql_error()

FILE: includes/functions_posting.php
LINE: 1826
CALL: dbal_mysql->sql_query()

FILE: posting.php
LINE: 1004
CALL: submit_post()


Добавлено спустя 1 минуту 24 секунды:
Re: [FAQ] Как изменить длину названия темы?
Может, кому-то удалось-таки успешно увеличить длину навания топика до 120? Поделитесь опытом.
Виталий В.
phpBB 1.4.4
 
Сообщения: 71
Зарегистрирован: 07.06.2008 9:26

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

Сообщение Виталий В. 05.07.2008 15:22

Сегодня опять попробовал создать тему с коротким названием (всего-навсего 35 символов) - и опять предпросмотр работает, а при сохранении ("отправить") темы такая-же ошибка, как чуть выше написано.
Полез в ПХП Май Админ, нашёл таблицу "мой префикс_ topics" и в ней поле "topic_last_post_subject".
В режиме "изменить" в поле "по умолчанию" прописал "default".
После этого тему успешно удалось "отправить", т.е. сохранить.

Добавлено спустя 23 минуты 3 секунды:
Но и после этого название темы в новом сообщении можно сделать 90, 99 символов (вариабельно почему-то), если больше - опять выдаёт:

Код: Выделить всё
Общая ошибка
SQL ERROR [ mysql4 ]

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

SQL

UPDATE phpbb3_forums SET forum_last_post_subject = '1234567890NK&quot;: ОБМАНЫ ПО ЗАРПЛАТЕ И РАСХОДАМ + КРИМИНАЛЬНЫЕ ДЕЙСТВИЯ В ОТНОШЕНИИ СОТРУДНИКОВ !!!' WHERE forum_id = 6

BACKTRACE

FILE: includes/db/mysql.php
LINE: 158
CALL: dbal->sql_error()

FILE: includes/functions_posting.php
LINE: 2312
CALL: dbal_mysql->sql_query()

FILE: posting.php
LINE: 1004
CALL: submit_post()


Вопрос - что за column 'forum_last_post_subject' at row 1 ? И как там поменять предел длины названия темы?
Виталий В.
phpBB 1.4.4
 
Сообщения: 71
Зарегистрирован: 07.06.2008 9:26

След.

Вернуться в FAQ (phpBB 3.0.x)

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0