Everything posted by Desti
-
В 4.6 методом кеширования будет только база данных
Ну к примеру у меня на форуме работает плагин приложение "последние сообщения". Раньше оно работало с базой, на каждое обновление главной страницы делало запрос в базу на последние 10 сообщений. При полутора тысячах пользователей это солидная нагрузка. А с редисом сделано по другому, висит задача, каждые 30 секунд делает один запрос и сохраняет в редисе последние сообщения, а приложение больше не лезет в базу, просто берет из редиса подготовленный блок данных и показывает пользователю.
-
В 4.6 методом кеширования будет только база данных
У меня все плагины на редис переделаны, в базу обращений почти нет, только при обновлении данных.
-
В 4.6 методом кеширования будет только база данных
Владельцу большого форума ничего не остаётся, кроме как вручную добавить кэширование в редис (из 4.5). Думаю, они просто уберут эту опцию, не меняя алгоритмов.
-
Вам запрещено регистрировать аккаунт на этом сайте. Код ошибки: 2S129/1
Да нет, только одна причина, включенный спам-сервис и попытка регистрации с "плохого" мыла. if( $member->spamService() == 4 ) { \IPS\Output::i()->error( 'spam_denied_account', '2S129/1', 403, '' ); } У меня таких "хорошистов" в день по 5-10 штук, обычные спамеры.
-
Пользователи онлайн
Сейчас это (30 минут) жестко зашито в system/Session/Store/Database.php array( 's.running_time>?', \IPS\DateTime::create()->sub( new \DateInterval( 'PT30M' ) )->getTimeStamp() ), Менять, соответственно, PT30M на PT60M или сколько вам там надо и в system/Session/Store/Redis.php (если используете redis) if ( $data['running_time'] < ( time() - ( 30 * 60 ) ) ) Менять 30 на 60. Можно без математики, просто указать интервал в секундах, 3600 - будет за час. Не проверял, но это, похоже, единственное место, где используются интервалы для счета сессий ползателей.
-
mixins jquery в ips
Не, задачи такой не стояло, я просто немножко докопался до разрабов А сам плагин - да, сделал, работает себе на сайте, но честно нарушает все правила ипс-ов и, скорее всего, не может быть размещен в магазине. Как быть вам - не знаю. Если пишете на продажу - придется следовать рекомендациям.
-
mixins jquery в ips
Я разговаривал на эту тему с разрабами движка, почитайте. Там есть ответы на некоторые вопросы. invisioncommunity.com/forums/topic/455654-plugin-code-hooks/ Иногда проще сделать свой JS файл, а не модифицировать оригинал. Ограничение по копированию кода относится только к "When overriding a method...". Но в любом случае команда, проверяющая код перед публикацией укажет вам на нарушения и предложит их исправить, так что всё можно решить.
-
mixins jquery в ips
Да, именно так. Вы не можете залезть в функции и переменные родителя и что-то изменить, но вы можете дополнить базовый класс своими функциями или полностью заменить функции родителя своими.
-
mixins jquery в ips
Эти ограничения касаются только приложений и плагинов, которые вы хотите выставить в маркет инвижына для других людей. В рамках своего форума вы можете делать с кодом что угодно.
-
Кастомный вывод определённого поля пользователей
Ну да.
-
Кастомный вывод определённого поля пользователей
Давайте вы сначала определитесь, что вам нужно, а? Все поля пользователя доступны в структуре типа $member, она обычно передается и в шаблон профиля и в сообщение пользователя (или запрашивается по ID внутри шаблона). Но если для вас всё это пустой звон, то идёте сюда и просите вам помочь (за денежку).
-
Кастомный вывод определённого поля пользователей
{{$member = \IPS\Member::load( $memberID);}} Ник ползателя с ID={$memberID} - {$member->name} $memberID естессно, надо передать в шаблон в параметрах или получить из уже имеющихся данных.
-
Кастомный вывод определённого поля пользователей
Получить пользователя по ID через $member = \IPS\Member::load( $id ), вывести поле ( $member->name, например.. )
-
Как сделать?
Ну так может они и правда одинаковые? В базу должны разные запросы уходить, причем этот подсчет делается в файле, который мы не трогали.
-
Как сделать?
В шаблоне в третьей снизу строке изменить id="ipsTabs_elTopContributors_el_topContributorsWeek_panel" на id="ipsTabs_elTopContributors_el_topContributorsAll_panel"
-
Как сделать?
Не, с такими вопросами не ко мне (Платные услуги)
-
Как сделать?
это можно удалить, limit уже есть в запросе
-
Как сделать?
topContributors.php public function render() { /* How many? */ $limit = isset( $this->configuration['number_to_show'] ) ? $this->configuration['number_to_show'] : 5; /* Work out who has got the most reputation this week... */ $topContributorsThisWeek = array(); $topContributorsThisWeek = iterator_to_array( \IPS\Db::i()->select( 'member_id as themember, pp_reputation_points as rep', 'core_members', array( 'pp_reputation_points > 0' ), 'rep DESC', $limit )->setKeyField('themember')->setValueField('rep') ); arsort( $topContributorsThisWeek ); $topContributorsThisWeek = \array_slice( $topContributorsThisWeek, 0, $limit, TRUE ); /* Load their data */ if( \count( $topContributorsThisWeek ) ) { foreach ( \IPS\Db::i()->select( '*', 'core_members', \IPS\Db::i()->in( 'member_id', array_keys( $topContributorsThisWeek ) ) ) as $member ) { \IPS\Member::constructFromData( $member ); } } /* Display */ return $this->output( $topContributorsThisWeek, $limit ); } Шаблон topContributors <h3 class='ipsType_reset ipsWidget_title'>{lang="block_topContributors"}</h3> <div class='ipsTabs ipsTabs_small ipsTabs_stretch ipsClearfix' id='elTopContributors' data-ipsTabBar data-ipsTabBar-updateURL='false' data-ipsTabBar-contentArea='#elTopContributors_content'> <a href='#elTopContributors' data-action='expandTabs'><i class='fa fa-caret-down'></i></a> <ul role="tablist" class='ipsList_reset'> <li> <a href='#ipsTabs_elTopContributors_el_topContributorsAll_panel' aria-selected='true' class='ipsTabs_item ipsTabs_activeItem' id='el_topContributorsAll' role="tab" aria-selected='false'>{lang="alltime"}</a> </li> <li> <a href='{url="app=core&module=system&controller=ajax&do=topContributors&time=week&limit={$limit}&orientation={$orientation}"}' id='el_topContributorsWeek' role="tab" class='ipsTabs_item'>{lang="week"}</a> </li> <li> <a href='{url="app=core&module=system&controller=ajax&do=topContributors&time=month&limit={$limit}&orientation={$orientation}"}' id='el_topContributorsMonth' class='ipsTabs_item' role="tab" aria-selected='false'>{lang="month"}</a> </li> <li> <a href='{url="app=core&module=system&controller=ajax&do=topContributors&time=year&limit={$limit}&orientation={$orientation}"}' id='el_topContributorsYear' class='ipsTabs_item' role="tab" aria-selected='false'>{lang="year"}</a> </li> </ul> </div> <section id='elTopContributors_content' class='ipsWidget_inner ipsPad_half'> <div id="ipsTabs_elTopContributors_el_topContributorsWeek_panel" class='ipsTabs_panel'> {template="topContributorRows" group="widgets" app="core" params="$topContributorsThisWeek, 'all', $orientation"} </div> </section> У меня в таком виде всё работает нормально
-
Кнопка "Изменить" в IPS 4.5.x
еще один {{endif}} нужен в конце
-
Как сделать "якоря" по тексту и вот такое меню Гайд-меню???
В jquery есть функция prepend(), которая вставляет контент первым чилдом. Родителем, в нашем случае, будет элемент, в котором объявлен скрипт. Поэтому this.scope.prepend(menu) вставит сгенеренную менюшку в начало секции. data-title вставляется в тег заголовка секции, якорь перед ним, типа <a id="anchor-label" rel=""></a> <h2 class="cDocs_mainTitle" data-role="title">Заголовок</h2> У инвижинов для этого, скорее всего, есть приложение, а вам придется расставлять теги и якоря руками.
-
Как сделать "якоря" по тексту и вот такое меню Гайд-меню???
А что не понятно? В меню справа - ссылки с якорями, в тексте якоря. Жмем ссылку, перепрыгиваем на якорь. А <nav></nav> генерит скрипт простенький, прошаривая по [data-role='title']
-
Счетчик сообщений в Downloads
Только в код лезть, он динамический, ищите member_posts в content/item, наверное можно проверять "app" и, если это "downloads", не увеличивать счетчик.
-
Название раздела.
В языках, ключ "downloads"
-
Счетчик сообщений в Downloads
Дык для тем отдельный раздел обычно создают, отключите в нем счетчик сообщений.
-
Отключить одобрение сообщений
Может в фильтр слов что-то типа "jpg" попало?