Перейти к содержимому
Открыть в приложении

Удобный способ просмотра. Узнать больше.

Дизайн и модификация Invision Community

Полноэкранное приложение на главном экране с push-уведомлениями, медалями и многим другим.

Чтобы установить это приложение на iOS и iPadOS
  1. Нажмите иконку «Поделиться» в Safari
  2. Прокрутите меню и нажмите На экран «Домой».
  3. Нажмите Добавить в правом верхнем углу.
Чтобы установить это приложение на Android
  1. Нажмите меню из трёх точек (⋮) в правом верхнем углу браузера.
  2. Нажмите Добавить на главный экран или Установить приложение.
  3. Подтвердите, нажав Установить.
Русский язык для Invision Community 5

Адаптировать хук Pinposts для IPB 3.3

Есть такой замечательный хук http://community.invisionpower.com/files/file/5160-pinposts/ - закрепление любых постов в теме форума.

На версии 3.2 все прекрасно работает, а для IPB 3.3 к сожалению нет.

Написал автору хука, на что он ответил что делал хук для себя, а для версии 3.3 адаптировать нет времени. На сколько я понимаю в версии 3.3 изменили вывод панели модератора, поэтому пункты Pinpost, Unpin при установки хука не вставляются.

Готов заплатить за адаптацию данного хука. Жду предложений.

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

Вот например:

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Date: Mon, 05 Nov 2012 06:28:33 +0000
Error: 1054 - Unknown column 'p.pinposts_pinned' in 'where clause'
IP Address: *** - /game/topic/2538-%d0%bf%d1%80%d0%b8%d1%91%d0%bc%d0%bd%d0%b0%d1%8f-%d0%b0%d0%b4%d0%bc%d0%b8%d0%bd%d0%b8%d1%81%d1%82%d1%80%d0%b0%d1%86%d0%b8%d0%b8-%d0%bf%d0%be-%d0%be%d0%b1%d1%89%d0%b8%d0%bc-%d0%b2%d0%be%d0%bf%d1%80%d0%be%d1%81%d0%b0%d0%bc/page__st__3360
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
mySQL query error: SELECT p.pid FROM ibf_posts p WHERE (p.topic_id = 2538) AND (p.pinposts_pinned > 0)
.--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.
| File                                                                       | Function                                                                      | Line No.          |
|----------------------------------------------------------------------------+-------------------------------------------------------------------------------+-------------------|
| admin/sources/classes/output/publicOutput.php(3491) : eval()'d code        | [TopicsHelper].getPinnedPids                                                  | 33                |
'----------------------------------------------------------------------------+-------------------------------------------------------------------------------+-------------------'
| admin/sources/classes/output/publicOutput.php(3491) : eval()'d code        | [PinpostsTopicSkin].topicViewTemplate                                         | 24                |
'----------------------------------------------------------------------------+-------------------------------------------------------------------------------+-------------------'
| admin/applications/forums/modules_public/forums/topics.php                 | [tbSiaoSkinTopic].topicViewTemplate                                           | 343               |
'----------------------------------------------------------------------------+-------------------------------------------------------------------------------+-------------------'
| admin/sources/base/ipsController.php                                       | [public_forums_forums_topics].doExecute                                       | 306               |
'----------------------------------------------------------------------------+-------------------------------------------------------------------------------+-------------------'

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

Ну что?)

В ошибке написано что не существует колонка pinposts_pinned в таблице ( скорее всего ) posts вашей базы данных.

В ошибке написано что не существует колонка pinposts_pinned в таблице ( скорее всего ) posts вашей базы данных.

Спасибо большое! :)

 

А нельзя ли указать вместо конккретных форумов все?

$INFO['pin_topic_forums'] = array(2,3,4);

 

И чтобы при создании они уже были включены в этот параметр.

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

Так, разобрался.

Кому-то может поможет :)

 

В conf_global.php вносим не

$INFO['pin_topic_forums'] = array(1,2,3);

 

а

$INFO['pin_topic_forums'] = range(0,10000);

где 10000 - заведомо преувеличенное число форумов.

 

Скажем, если у вас на данный момент, например, 1212 форумов, указав значение в 10000 у вас будут закрепляться первые сообщения во всех темах в новых и уже существующих форумах до форума с id=10001.

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

  • 1 месяц спустя...

Подскажите, довели данных Хук до логического завершения или нет?

  • 2 недели спустя...

Хук обновлен и доступен здесь: http://community.inv.../5160-pinposts/

Добавлена поддержка IP.Board 3.4.x. Файл на ipbskins.

weiss, спасибо за адаптацию. Поддержал, купил на IPS.

Благодарю, оставил бы бесплатным, но уж больно много времени убилsmile.gif

Верю, я смотрел последнюю версию которая была доступна на гитхабе, она была почти рабочая, потому решил приобрести ваш мод. Думаю, что будет достаточно востребованной данная модификация :)

большое спасибо за адаптацию хука.

купил его на этом сайте, появился такой вопрос - при установке форум вываливается в 504 а потом вообще в 502 (до перезагрузки сервера). Версия форума 3.4.1. База на форуме занимает около 800 мегабайт.

Насколько я понимаю, сервер задыхается на том, что пытается добавить дополнительные поля в таблицу Posts, которая одна из самых больших в базе.

Пробовал увеличить время для обработки скрипта (все равно установка вываливалась почти сразу), оперативную память и так далее. Все равно хук нормально не ставился и новых строчек в модерской панели не появлялось.

 

Подскажите, можно ли как-то победить эту проблему?

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

Странно, операция по добавлению новой колонки в таблицу posts дело простое, сколько бы та не занимала места. Есть какие-нибудь ошибки в Logs -> SQL Error Logs?

Странно, операция по добавлению новой колонки в таблицу posts дело простое

Не такое уж и простое если в таблице 100К+ постов. При изменении структуры идет перестроение таблицы. На гигабайтных таблиц такая операция может занимать до часу.

 

mysql> ALTER TABLE ibf_posts ADD COLUMN temp int(1) NOT NULL DEFAULT '0';
Query OK, 69040 rows affected (2 min 38.41 sec)
Records: 69040  Duplicates: 0  Warnings: 0

В данном конкретном случае можно убрать SQL запрос из инсталлятора и сделать его вручную, желательно через ssh. Или подумать о другой структуре хука - хранения закрепленных постов в отдельной таблице.

 

PS.

С отключением индексов таблицы запрос выполняется быстро, зато включение индексов обратно занимает тоже довольно приличное время.

А, ну ок, запрос выглядит так: ALTER TABLE префикс_posts ADD pinposts_pinned tinyint(1) DEFAULT 0

Из xml-файла хука надо в таком случае удалить текст:

s:8:"database";s:58:"ALTER TABLE posts ADD pinposts_pinned tinyint(1) DEFAULT 0";

Сделать сначала запрос, потом установить хук.

Или подумать о другой структуре хука - хранения закрепленных постов в отдельной таблице.

Идея хорошая, надо будет обдумать.

логи пишут следующее

 

Date: Fri, 04 Jan 2013 12:27:10 +0000
Error: 1054 - Unknown column 'p.pinposts_pinned' in 'where clause'
IP Address: 188.17.220.195 - /Portal/index.php?showtopic=8921&page=49
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
mySQL query error: SELECT p.pid FROM ibf_posts p WHERE (p.topic_id = 8921) AND (p.pinposts_pinned > 0) ORDER BY pid asc
.--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.
| File                                                                       | Function                                                                      | Line No.          |
|----------------------------------------------------------------------------+-------------------------------------------------------------------------------+-------------------|
| admin/sources/classes/output/publicOutput.php(3796) : eval()'d code        | [TopicsHelper].getPinnedPids                                                  | 28                |
'----------------------------------------------------------------------------+-------------------------------------------------------------------------------+-------------------'
| admin/applications/forums/modules_public/forums/topics.php                 | [PinpostsTopicSkin].topicViewTemplate                                         | 370               |

хотя, кажется, это к просмотру форума относится.

 

Date: Fri, 04 Jan 2013 14:39:00 +0000
Error: 2013 - Lost connection to MySQL server during query
IP Address: 95.24.227.184 - /Portal/admin/index.php?adsess=eb4f83abb644dad8eaf2dee43d2133d4&app=core&module=applications&section=hooks&do=install_hook
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
mySQL query error: UPDATE ibf_core_hooks SET hook_extra_data='a:1:{s:8:\"database\";a:1:{s:5:\"alter\";a:1:{i:0;a:6:{s:9:\"altertype\";s:3:\"add\";s:5:\"table\";s:5:\"posts\";s:5:\"field\";s:15:\"pinposts_pinned\";s:8:\"newfield\";s:0:\"\";s:9:\"fieldtype\";s:10:\"tinyint(1)\";s:7:\"default\";s:1:\"0\";}}}}' WHERE hook_id=132
.--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.
| File                                                                       | Function                                                                      | Line No.          |
|----------------------------------------------------------------------------+-------------------------------------------------------------------------------+-------------------|
| admin/applications/core/modules_admin/applications/hooks.php               | [db_main_mysql].update                                                        | 1576              |
'----------------------------------------------------------------------------+-------------------------------------------------------------------------------+-------------------'
| admin/applications/core/modules_admin/applications/hooks.php               | [admin_core_applications_hooks].installHook                                   | 355               |
'----------------------------------------------------------------------------+-------------------------------------------------------------------------------+-------------------'
| admin/applications/core/modules_admin/applications/hooks.php               | [admin_core_applications_hooks]._installHook                                  | 119               |
'----------------------------------------------------------------------------+-------------------------------------------------------------------------------+-------------------'
| admin/sources/base/ipsController.php                                       | [admin_core_applications_hooks].doExecute                                     | 306               |
'----------------------------------------------------------------------------+-------------------------------------------------------------------------------+-------------------'

 

простите за возможно глупый вопрос, но я могу сам изменить хлм-файл чтобы это все хранилось в отельной таблице или заменой пары строк там не обойтись? я не очень опытный программер.

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

Гость
Эта тема закрыта для дальнейших сообщений.

Аккаунт

Навигация

Поиск

Поиск

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

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