-
Постов
2310 -
Зарегистрирован
-
Посещение
-
Победитель дней
171
Тип контента
Профили
Загрузки
База знаний IPS Community Suite 4
База знаний IP.Board 3.x
Форумы
События
Магазин
Совместные покупки
Сообщения, опубликованные by_ix
-
-
3 минуты назад, Desti сказал:
Тянет на целое приложение
о чём и речь.
@BlackShot будет очередной повод изучить строение плагинов и приложений. -
-
6 минут назад, BlackShot сказал:
отображать календарь со временем
не совсем понимаю, что это значит.
нужно просто давать доступ людям к календарю в определённое время? или что.
-
BlackShot самый простой вариант, это создать новую страницу c блоком.
Спойлервставить свой код туда, я немного изменил его.
$servername = "***"; $username = "***"; $password = ""***";"; $dbname = ""***";"; // Create connection $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } $perm = ''; $pid = '8'; $ptypeid = '3'; $sql = "UPDATE core_permission_index SET perm_3='$perm' WHERE perm_id=$pid AND perm_type_id=$ptypeid"; if ($conn->query($sql) === TRUE) { echo "<span style='color:green;'>Record updated successfully!</span>"; } else { echo "<span style='color:red;'>Error updating record: </span>" . $conn->error; } $conn->close(); ?>
создать страницу, в принципе, без разницу какую, но тебе удобнее второй вариант, думаю.
вставить во вкладку Content тот самый ключ с созданного блока.
дать нужным группам разрешения для доступа к странице и блоку и перейти на страницу.
наслаждаться.
при желании, можно на страницу добавить ввод необходимых значений через инпут.
ещё можно запрос сделать логикой ипс, как писал Desti, но я привык так. -
-
36 минут назад, BlackShot сказал:
Что вы подразумеваете под "в соседней теме дали ссылку"?
https://ipbmafia.ru/topic/23438-plugin-tutorialrukovodstvo-po-plaginam/
тут дали ссылку на документацию.
перейдя по ней, можно найти раздел с плагинами.33 минуты назад, BlackShot сказал:Вы ведь не записали, как создавали плагин
просто в режиме разработчика создаёшь плагин, заходишь в developer center в плагине и делаешь там всё, что хочешь.
-
-
-
@BlackShot в соседней теме дали ссылку. да и в режиме разработчика создавать небольшие плагины давольно-таки не сложно.
полезный плагин при использовании дев режима, дабы не заходить постоянно в constants.php: Toggle Developers Mode On/Off Deluxe.
-
-
@the.bunin начало положено. дело за малым, реализовать. 👍
-
а, ты там хочешь сделать. ну тогда имеет место быть.
но я и не говорил, что полностью скрыть, имелось ввиду про одну-две строки открытые и остальные скрыты.
-
-
-
@the.bunin открой код, почти в конце стоит условие для вертикального блока, в нём только 60 человек могут отображаться, насколько помню. примерно то же самое нужно сделать для горизонтального.
-
@the.bunin да. в дефолтном плагине обновление раз в 30 минут. в котором я кинул - в 20. пользователи рандом из тех, что в базе.
и при каждом редактировании и измении значений, новые плюсуются к предыдущим.
через 20+ минут старые спишутся и будут отображаться только новые.
-
@the.bunin если в настройки 1 поставить, тоже будет много их?
-
-
Спойлер
<?php /** * @brief whosOnline Widget * @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a> * @copyright (c) Invision Power Services, Inc. * @license https://www.invisioncommunity.com/legal/standards/ * @package Invision Community * @since 28 Jul 2014 */ namespace IPS\core\widgets; /* To prevent PHP errors (extending class does not exist) revealing path */ if ( !\defined( '\IPS\SUITE_UNIQUE_KEY' ) ) { header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' ); exit; } /** * whosOnline Widget */ class _whosOnline extends \IPS\Widget { /** * @brief Widget Key */ public $key = 'whosOnline'; /** * @brief App */ public $app = 'core'; /** * @brief Plugin */ public $plugin = ''; /** * Render a widget * * @return string */ public function render() { /* Do we have permission? */ if ( !\IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'core', 'online' ) ) ) { return ""; } /* Init */ $members = array(); $anonymous = 0; $users = \IPS\Session\Store::i()->getOnlineUsers( \IPS\Session\Store::ONLINE_MEMBERS, 'desc', NULL, NULL, TRUE ); foreach( $users as $row ) { switch ( $row['login_type'] ) { /* Not-anonymous Member */ case \IPS\Session\Front::LOGIN_TYPE_MEMBER: if ( $row['member_id'] != \IPS\Member::loggedIn()->member_id ) // We add them manually to make sure they go at the top of the list { if ( $row['member_name'] ) { $members[ $row['member_id'] ] = $row; } } break; /* Anonymous member */ case \IPS\Session\Front::LOGIN_TYPE_ANONYMOUS: $anonymous += 1; break; } } $memberCount = \count( $members ); /* Get an accurate guest count */ $guests = \IPS\Session\Store::i()->getOnlineUsers( \IPS\Session\Store::ONLINE_GUESTS | \IPS\Session\Store::ONLINE_COUNT_ONLY, 'desc', NULL, NULL, TRUE ); /* If it's on the sidebar (rather than at the bottom), we want to limit it to 60 so we don't take too much space */ if ( $this->orientation === 'vertical' and \count( $members ) >= 60 ) { $members = \array_slice( $members, 0, 60 ); } /* Add ourselves at the top of the list */ if( \IPS\Member::loggedIn()->member_id ) { $memberCount++; $members = array_merge( array( \IPS\Member::loggedIn()->member_id => array( 'member_id' => \IPS\Member::loggedIn()->member_id, 'member_name' => \IPS\Member::loggedIn()->name, 'seo_name' => \IPS\Member::loggedIn()->members_seo_name, 'member_group' => \IPS\Member::loggedIn()->member_group_id ) ), $members ); } /* Display */ return $this->output( $members, $memberCount, $guests, $anonymous ); } }
-
-
-
@the.bunin верни как было. после установки обратно поставишь.
и вообще, почему лезет ошибка эта, если при обнове все файлы с приложений заменяются. мб ты замену не сделал?
-
@the.bunin нет относятся. ему тоже сделали кэширование, поэтому и отображается не сразу.
-
/applications/core/widgets/activeUsers.php
заменить всё на:<?php /** * @brief activeUsers Widget * @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a> * @copyright (c) Invision Power Services, Inc. * @license https://www.invisioncommunity.com/legal/standards/ * @package Invision Community * @since 19 Nov 2013 */ namespace IPS\core\widgets; /* To prevent PHP errors (extending class does not exist) revealing path */ if ( !\defined( '\IPS\SUITE_UNIQUE_KEY' ) ) { header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' ); exit; } /** * activeUsers Widget */ class _activeUsers extends \IPS\Widget { /** * @brief Widget Key */ public $key = 'activeUsers'; /** * @brief App */ public $app = 'core'; /** * @brief Plugin */ public $plugin = ''; /** * Render a widget * * @return string */ public function render() { /* Do we have permission? */ if ( !\IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'core', 'online' ) ) ) { return ""; } $members = array(); $memberCount = 0; /* Build WHERE clause */ $parts = parse_url( (string) \IPS\Request::i()->url()->setPage() ); if ( \IPS\Settings::i()->htaccess_mod_rewrite ) { $url = $parts['scheme'] . "://" . $parts['host'] . ( isset( $parts['port'] ) ? ':' . $parts['port'] : '' ) . $parts['path']; } else { $url = $parts['scheme'] . "://" . $parts['host'] . ( isset( $parts['port'] ) ? ':' . $parts['port'] : '' ) . $parts['path'] . ( isset( $parts['query'] ) ? '?' . $parts['query'] : '' ); } $members = \IPS\Session\Store::i()->getOnlineMembersByLocation( \IPS\Dispatcher::i()->application->directory, \IPS\Dispatcher::i()->module->key, \IPS\Dispatcher::i()->controller, \IPS\Request::i()->id, $url ); if ( isset( $members[ \IPS\Member::loggedIn()->member_id ] ) ) { unset( $members[ \IPS\Member::loggedIn()->member_id ] ); } $memberCount = \count( $members ); /* If it's on the sidebar (rather than at the bottom), we want to limit it to 60 so we don't take too much space */ if ( $this->orientation === 'vertical' and \count( $members ) >= 60 ) { $members = \array_slice( $members, 0, 60 ); } if( \IPS\Member::loggedIn()->member_id ) { if( !isset( $members[ \IPS\Member::loggedIn()->member_id ] ) ) { $memberCount++; } $members = array_merge( array( \IPS\Member::loggedIn()->member_id => array( 'member_id' => \IPS\Member::loggedIn()->member_id, 'member_name' => \IPS\Member::loggedIn()->name, 'seo_name' => \IPS\Member::loggedIn()->members_seo_name, 'member_group' => \IPS\Member::loggedIn()->member_group_id, 'in_editor' => 0 ) ), $members ); } /* Display */ return $this->output( $members, $memberCount ); } }
Traffic Generator 1.0.9 ENG + RUS
в Интерфейс
Опубликовано
the.bunin получилось что-нибудь?