Перейти к содержимому
Русский язык для Invision Community 5

(Pav33) Topic Description

Добрый день. Установлен хук, возвращающий описание в тему для ipb 3.4 - (Pav33) Topic Description, https://invisionpower.com/forums/topic/349558-download-pav33-topic-description/

 

Проблема в том, что я не могу настроить его, чтобы описание для тем было больше 250-ти символов - настройка роли почему то не играет. Меня смущает строка в хуке:

 

<fieldtype>varchar(250)</fieldtype>

Может быть, дело в ней? Как исправить этот косяк, подскажите, пожалуйста. Спасибо.

 

Вот сам хук: (Pav33) Topic Description.zip

Рекомендованные сообщения

Максимальная длина ограничена размером поле description - 250 символов. Если этого мало увеличьте размер этого поле в таблице topics.

 

ALTER TABLE topics CHANGE COLUMN description description varchar(500) DEFAULT NULL

или редактированием поле в phpmyadmin.

  • Автор

А ограничение это было в хуке выставлено, да? И после установки хука записалось в таблицу базы данных? А то эту строку - varchar(250) в файлах хука так и не нашел.

Выше - sql запрос, его нужно выполнить в phpmyadmin или через админцентр форума.

 

А ограничение это было в хуке выставлено, да?

Это размер поле description которое указано в хуке.

  • Автор

Понял. А как дописать префикс в запрос? А то у меня ошибку выбивает:

 

#1146 - Table 'ibf.topics' doesn't exist

Изменено пользователем Strategius

  • Автор

а нельзя вообще удалить это условие - размер поля description? Просто такая настройка в хуке есть отдельная, настраивается через админку.

Нельзя. Это не условие а длина поле в бд.

  • Автор

Получилось сделать запрос, спасибо! :)

 

Еще один косяк нашел. Если отредактировать описание темы из опций модератора (где такие опции, как перенести тему, закрыть и т.п.), то длинное описание (например, в 200 символов), сокращается автоматически до 70-ти символов... За это какая строка в хуке отвечает, или это баг?

 

Upd. Нашел :) За это отвечает строка:

 

$this->request['TopicDesc'] =  IPSText::mbsubstr( $this->request['TopicDesc'], 0, 70  );

Исправил на 700.

Изменено пользователем Strategius

  • 1 месяц спустя...
  • Автор

Добрый день. Есть вопрос по хуку: можно ли сделать так, чтобы заполнение поля "Описание темы" было обязательным при создании и редактировании темы? И чтобы если поле не было заполнено, выдавало такое же предупреждение, если не заполнено поле названия темы.

skin_post -> topicDescForm, добавить к input атрибут required

  • 2 месяца спустя...
  • Автор

Подскажите, пожалуйста, если можно, как добавить троеточие, если описание превышает количество символов, разрешенное в поле?

$this->request['TopicDesc'] =  ( mb_strlen( $this->request['TopicDesc'] ) > 70 ) ? IPSText::mbsubstr( $this->request['TopicDesc'], 0, 67  ).'...' : $this->request['TopicDesc'];

  • Автор

Странно, почему-то не работает... В этом хуке путаница какая-то, длина описания ограничена настройкой (которая тоже не работает), и длиной поля в базе данных. Насколько я понял, настройка должна автоматически обновлять значение в базе данных? Если должна, то не обновляет вроде, а просто устанавливает ограничение количества символов в поле описания. Вот эта строка:

 

$this->DB->update( 'topics', array( 'description' => $desc ), 'tid=' . $data['topic_id'] );

И троеточие не появляется почему-то, видимо из-за бага с настройкой...

Изменено пользователем Strategius

Автоматически ничего не обновляется, старые значения как были записаны в бд так и останутся. Настройка работает при сохранение описания.

$this->request['TopicDesc'] - это только при редактирование темы из модераторских опции. Там еще есть другие файлы, которые выполняются при создание или редактирование темы и также необходимо отредактировать.

 

IPSText::mbsubstr( $desc, 0, $this->settings['topic_desc_max_len'] )
заменить на 
( mb_strlen( $desc ) > $this->settings['topic_desc_max_len'] ) ? IPSText::mbsubstr( $desc, 0, $this->settings['topic_desc_max_len'] - 3 ) . '...' : $desc

 

IPSText::mbsubstr( $data['description'], 0, $this->settings['topic_desc_max_len'] )
заменить на
( mb_strlen( $data['description'] ) > $this->settings['topic_desc_max_len'] ) ? IPSText::mbsubstr( $$data['description'], 0, $this->settings['topic_desc_max_len'] - 3 ) . '...' : $data['description']

 

IPSText::mbsubstr( $this->request['TopicDesc'], 0, 70  )
заменить на
( mb_strlen( $this->request['TopicDesc'] ) > $this->settings['topic_desc_max_len'] ) ? IPSText::mbsubstr( $this->request['TopicDesc'], 0, $this->settings['topic_desc_max_len'] - 3 ) . '...' : $this->request['TopicDesc']

Создайте аккаунт или войдите в него для комментирования

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.