Перейти к публикации
View in the app

A better way to browse. Learn more.

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

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Адаптировать хук 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

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

Сейчас на странице 0

  • Нет пользователей, просматривающих эту страницу.

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.