Skip to content

(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

Featured Replies

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

 

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

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

  • Author

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

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

 

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

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

  • Author

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

 

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

Edited by Strategius

  • Author

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

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

  • Author

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

 

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

 

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

 

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

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

Edited by Strategius

  • 1 month later...
  • Author

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

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

  • 2 months later...
  • Author

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

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

  • Author

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

 

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

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

Edited by 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']

Create an account or sign in to comment

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.