Everything posted by Desti
-
Plugin Tutorial/Руководство по плагинам?
Для начала вам надо разобраться с классами в php, без этого будет невозможно понять устройство и функционирование движка форума. А поскольку движок еще и глючный, иногда будет очень сложно понять, что вообще происходит Посмотрите youtube - "classes in php", там есть много хороших курсов.
-
Plugin Tutorial/Руководство по плагинам?
Весь ISP построен на классах, поэтому ваша задача найти файл, который отвечает за исполнение функции, которую вы хотите изменить/заменить. Например, вы хотите изменить что-то в логике галереи при показе изображения. После недолгих поисков вы найдете файл modules/front/view.php и в нем функцию manage(), которая отвечает за показ изображения. Теперь надо сказать инструменту разработчика, какой класс вы хотите изменить. Смотрим в первые строки файла view.php и видим: namespace IPS\downloads\modules\front\downloads; - нашли первую часть головоломки. Теперь смотрим ниже - class _view extends \IPS\Content\Controller - вторая часть головоломки. Убираем '_', получаем полное имя класса IPS\downloads\modules\front\downloads\view Отлично, класс найден. Теперь идем в инструменты разработчика на созданном нами плагине, закладка hooks, нажимаем create hook и заполняем поля как нам надо: Hook Type: Code plugin Class to extend: downloads\modules\front\downloads\view (IPS\ уже есть) Filename: downloadsViewHook Жмем Save, если не ошиблись, то на экране появится наш новый хук, а в директории hooks плагина файл downloadsViewHook.php Теперь надо кликнуть на карандаш и войти в режим редактирования хука. Слева список функций, которые мы может изменить нашим хуком, справа поле редактирования. Находим в начале списка функций manage() и один раз кликаем на ней. Справа в окне появляется шаблон нашего хука с новой функцией. Опа пока ничего не делает, просто вызывает родительскую функцию, но наш код уже работает. Теперь у вас есть два пути: вызвать родителя и потом добавить/изменить что-то в данных, которые он создал, либо удалить return parent::manage();, полностью скопировать код из оригинальной функции и отредактировать его. Первый путь, по мнению разработчиков движка, считается правильным, т.к. не изменяет родительский код и позволяет строить цепочки хуков, второй путь - путь джедая, вы берете на себя ответственность за то, что цепочки хуков к этому классу работать не будут и это будет единственный хук для этого класса. Выбираете свой путь, пишете свой код, радуетесь жизни.
-
Как пересобрать весь пакет используя dev tools?
Не совсем понятно, про какой пакет речь.. Если вы хотите пересобрать приложение или плагин, то в dev режиме у вас появятся пункты меню: Внесите изменения, нажмите их подряд и потом выйдите из режима dev, приложение будет перестроено и активировано.
-
Защита от двойных регистраций
Это скорее норма, чем ошибка. Я уже вам говорил, что IP с разницей в одну цифру в последней группе физически могут располагаться на разных континентах. Предлагать более выгодные условия, наверное?
-
Значние дополнительных полей по умолчанию
Вы спрашиваете про штатные функции движка, а в пример приводите стороннее приложение. Сделал он это просто, добавил поле для значения по умолчанию и хранит его в свойствах поля. А в движке нет поля по умолчанию, его можно туда добавить хаками формы и обработчика, но это не "как-то малой кровью".
-
Значние дополнительных полей по умолчанию
Судя по всему таких функций штатно нет. Если у вас свое приложение, то можно пробежаться по $member->profileFields() и установить в нужном 0, если там NULL.
-
Traffic Generator 1.0.9 ENG + RUS
а... я думал, под 8-ку работает.. Там что-то сильно поменяли в работе с сессиями, надо разбираться..
-
Traffic Generator 1.0.9 ENG + RUS
Ну и мне киньте, даже интересно, почему не работает. Обнаружил только то, что в php7 сессии живут в базе, а в 8-м - там, куда указывает Data Storage Method.
-
Traffic Generator 1.0.9 ENG + RUS
Дома еще гляну.
-
Traffic Generator 1.0.9 ENG + RUS
да вроде работает и там и там после такой правки.
-
Traffic Generator 1.0.9 ENG + RUS
Там банальные ошибки, поставьте обратный слеш ( \ ) перед всеми функциями call_user_func_array() и func_get_args() в hooks/tgenerator.php и всё заработает под php 8.0
-
Traffic Generator 1.0.9 ENG + RUS
Можно, конечно, поставить php8 и проверить... Попозже.
-
Traffic Generator 1.0.9 ENG + RUS
С такими цифрами даже реальный форум будет тормозить
-
Не могу обновить движок!
Восстанавливать не надо, она (_new) не нужна для 4.6, это просто какая-то промежуточная фигня для апгрейда.
-
Traffic Generator 1.0.9 ENG + RUS
Потому что он сидит на dispatcher/front/init() и дергается при каждом обращении к функциям фронта.
- Donations
-
Traffic Generator 1.0.9 ENG + RUS
Глазастый какой да, я не то скопировал.. строку 59 заменить на $getMembers = \IPS\Db::i()->select( 'core_members.member_id', 'core_members', $whereMembers, $order, $limit )->join( 'core_sessions', 'core_sessions.member_id=core_members.member_id' )->join( 'core_groups', 'core_members.member_group_id=core_groups.g_id' )->setKeyField( 'member_id' );
-
Traffic Generator 1.0.9 ENG + RUS
2 строки с 26 заменить на # Check if we got max members online $sessionsMembers = \IPS\Db::i()->select( 'core_sessions.id,core_sessions.member_id,core_sessions.member_name,core_sessions.seo_name,core_sessions.member_group,core_sessions.is_generated,core_sessions.generated_expire', 'core_sessions', $where, 'core_sessions.running_time DESC', 60 )->join( 'core_members', 'core_members.member_id=core_sessions.member_id' )->join( 'core_groups', 'core_members.member_group_id=core_groups.g_id' )->setKeyField( 'member_id' ); $memberCount = \IPS\Db::i()->select( 'count(*)', 'core_sessions', $where, 'core_sessions.running_time DESC', 60 )->first(); Строку 59 заменить на $getMembers = \IPS\Db::i()->select( 'core_members.member_id', 'core_members', $whereMembers, $order, $limit, NULL, NULL, \IPS\Db::SELECT_SQL_CALC_FOUND_ROWS )->join( 'core_sessions', 'core_sessions.member_id=core_members.member_id' )->join( 'core_groups', 'core_members.member_group_id=core_groups.g_id' )->setKeyField( 'member_id' ); 3 строки со 117 заменить на $sessionsGuests = \IPS\Db::i()->select( 'core_sessions.id,core_sessions.member_id,core_sessions.member_name,core_sessions.seo_name,core_sessions.member_group,core_sessions.is_generated,core_sessions.generated_expire', 'core_sessions', $whereGuest, 'core_sessions.running_time DESC', 60); $maxGuest = isset( \IPS\Settings::i()->tGenerator_max_guests ) ? \IPS\Settings::i()->tGenerator_max_guests : 0; $guestCount = \IPS\Db::i()->select( 'count(*)', 'core_sessions', $whereGuest, 'core_sessions.running_time DESC', 60)->first; Все заботает, пользатели (гесты) в активности появляются. Но если нет трафика мемберов на тестовом сайте, они не появятся.
-
Traffic Generator 1.0.9 ENG + RUS
Да там пару строчек подправить надо, проблема известная и легко решаемая, зачем такое покупать???
-
Snow 1.1.0 - Снег для IPS4
Для любителей ставить снежинки на форумах есть отдельный котел в аду Но всё равно спасибо. by_ix это яваскрипт, он на всех 4.х работать должен.
-
Как закрывать форумы автоматически?
Строчка \IPS\Session\Front::i(); лишняя, можно удалить. Если размещать файл не в корне, то надо указать правильный путь к init.php, типа require_once '../../init.php';
-
Как закрывать форумы автоматически?
<?php \define('REPORT_EXCEPTIONS', TRUE); $_SERVER['SCRIPT_FILENAME'] = __FILE__; require_once 'init.php'; \IPS\Session\Front::i(); \IPS\Db::i()->update( 'core_permission_index', array('perm_3'=>''), array( 'perm_id=? and perm_type_id=?', 114, 29 )); Создайте файлик в корне, вызывайте через cron
-
CJ Duplicate Member Logger
Теоретически работает на всех >4.1. Если заглючит, просто удалить строку cназванием приложения из таблицы core_application
-
HTTP ERROR 500
не бывает, но пусть будет так.
-
HTTP ERROR 500
Не ищите проблему там, где ее нет. В базе живут настройки файловой системы, у вас точно совпадают полные пути к старому форуму и новому?