Jump to content

Desti

Актив
  • В сети

  • Количество сообщений

    2 149
  • Reputation

    1,2k Desti's Reputation

Everything posted by Desti

  1. Сейчас это (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 - будет за час. Не проверял, но это, похоже, единственное место, где используются интервалы для счета сессий ползателей.
  2. Не, задачи такой не стояло, я просто немножко докопался до разрабов А сам плагин - да, сделал, работает себе на сайте, но честно нарушает все правила ипс-ов и, скорее всего, не может быть размещен в магазине. Как быть вам - не знаю. Если пишете на продажу - придется следовать рекомендациям.
  3. Я разговаривал на эту тему с разрабами движка, почитайте. Там есть ответы на некоторые вопросы. invisioncommunity.com/forums/topic/455654-plugin-code-hooks/ Иногда проще сделать свой JS файл, а не модифицировать оригинал. Ограничение по копированию кода относится только к "When overriding a method...". Но в любом случае команда, проверяющая код перед публикацией укажет вам на нарушения и предложит их исправить, так что всё можно решить.
  4. Да, именно так. Вы не можете залезть в функции и переменные родителя и что-то изменить, но вы можете дополнить базовый класс своими функциями или полностью заменить функции родителя своими.
  5. Эти ограничения касаются только приложений и плагинов, которые вы хотите выставить в маркет инвижына для других людей. В рамках своего форума вы можете делать с кодом что угодно.
  6. Давайте вы сначала определитесь, что вам нужно, а? Все поля пользователя доступны в структуре типа $member, она обычно передается и в шаблон профиля и в сообщение пользователя (или запрашивается по ID внутри шаблона). Но если для вас всё это пустой звон, то идёте сюда и просите вам помочь (за денежку).
  7. {{$member = \IPS\Member::load( $memberID);}} Ник ползателя с ID={$memberID} - {$member->name} $memberID естессно, надо передать в шаблон в параметрах или получить из уже имеющихся данных.
  8. Получить пользователя по ID через $member = \IPS\Member::load( $id ), вывести поле ( $member->name, например.. )
  9. Ну так может они и правда одинаковые? В базу должны разные запросы уходить, причем этот подсчет делается в файле, который мы не трогали.
  10. В шаблоне в третьей снизу строке изменить id="ipsTabs_elTopContributors_el_topContributorsWeek_panel" на id="ipsTabs_elTopContributors_el_topContributorsAll_panel"
  11. Не, с такими вопросами не ко мне (Платные услуги)
  12. это можно удалить, limit уже есть в запросе
  13. 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> У меня в таком виде всё работает нормально
  14. еще один {{endif}} нужен в конце
  15. В jquery есть функция prepend(), которая вставляет контент первым чилдом. Родителем, в нашем случае, будет элемент, в котором объявлен скрипт. Поэтому this.scope.prepend(menu) вставит сгенеренную менюшку в начало секции. data-title вставляется в тег заголовка секции, якорь перед ним, типа <a id="anchor-label" rel=""></a> <h2 class="cDocs_mainTitle" data-role="title">Заголовок</h2> У инвижинов для этого, скорее всего, есть приложение, а вам придется расставлять теги и якоря руками.
  16. А что не понятно? В меню справа - ссылки с якорями, в тексте якоря. Жмем ссылку, перепрыгиваем на якорь. А <nav></nav> генерит скрипт простенький, прошаривая по [data-role='title']
  17. Только в код лезть, он динамический, ищите member_posts в content/item, наверное можно проверять "app" и, если это "downloads", не увеличивать счетчик.
  18. В языках, ключ "downloads"
  19. Дык для тем отдельный раздел обычно создают, отключите в нем счетчик сообщений.
  20. Может в фильтр слов что-то типа "jpg" попало?
  21. Таблицу только перед этим обязательно чекнуть, оптимизировать и забекапить.
  22. Никакая. Функции в php коде, в шаблоне вы можете делать только проверку доступных переменных и в зависимости от результата выводить тот или иной блок. {{if $forum->id !== 33}} (тут ссылка на создание новой темы) {{else}} (а тут ссылка на скачивание файла) {{endif}}
  23. Вам уже отвечали на этот вопрос.