Опубликовано: 17 ноября 201510 г Подниму тему. Подскажите, а как вывести в статистике главной страницы кол-во залитых на форум аттачей? Не могу отыскать по ключу...
Опубликовано: 17 ноября 201510 г Автор Я думал, раз у вложений есть id, то и можно как-то вывести их статистику. Спасибо.
Опубликовано: 17 ноября 201510 г У всех сущностей в бд есть id, на статистику он не влияет. Это уникальный идентификатор записи в таблице. Статистика вложений форумом не ведется, чтобы ее вывести нужно подсчитать количество строк в самой таблице - это +1 sql запрос.
Опубликовано: 17 ноября 201510 г Если интересен сам запрос: Всего аттачей: {parse expression="( $row = $this->DB->buildAndFetch( array('select' => 'COUNT(*) as count', 'from' => 'attachments') ) ) ? $row['count'] : 0"}При желание результат можно кешировать и обновлять раз в 30 минут, час. <php> if( $this->settings['show_totals'] ) { if( ! isset( $stats['total_attachments'] ) OR $stats['update_attachments'] < ( IPS_UNIX_TIME_NOW - 1 * 60 * 60 ) ) { $row = $this->DB->buildAndFetch( array('select' => 'COUNT(*) as count', 'from' => 'attachments') ); $stats['total_attachments'] = $row['count']; $this->caches['stats']['total_attachments'] = $stats['total_attachments']; $this->caches['stats']['update_attachments'] = IPS_UNIX_TIME_NOW; $this->cache->setCache( 'stats', $this->caches['stats'], array( 'array' => 1 ) ); } } </php> Всего аттачей: {$stats['total_attachments']} Шаблон Список форумов -> boardIndexTemplate
Опубликовано: 18 ноября 201510 г Автор Решил задачу немного иначе.В boardIndexTemplate сделал вот так: <li class='clear'> <span class='value'>{$this->caches['stats']['total_attachments']}</span> {$this->lang->words['total_attachments']} </li>, предварительно в Языки добавив строку: Приложение: Форумы Набор слов: public_boards Ключ: total_attachments Текст по умолчанию: Аттачей Вот только при прикреплении аттачей, порядковый номер 30000 с небольшим, а в статистике на главной 28212... странно... :huh:
Опубликовано: 18 ноября 201510 г Вот только при прикреплении аттачей, порядковый номер 30000 с небольшим, а в статистике на главной 28212... странно... Почитайте про автоинкремент.Решил задачу немного иначе.Я бы вообще перенес php в задачу, предварительно создав ее в планировщике. Дальше, если будет нужно, можно добавлять другие статистики.
Опубликовано: 18 ноября 201510 г Решил задачу немного иначе.{$this->caches['stats']['total_attachments']}Никак не могу понять как именно иначе, если используете тот же самый ключ кеша, а значит и пример который я приводил выше. То как оформили блок в шаблоне это уже дело вкуса и верстки шаблона.
Опубликовано: 18 ноября 201510 г Автор Ну я собственно так и понял.Только вот остался один вопрос!Создал я файл в /admin/applications/forums/tasks/total_attachments.php и создал задачу с подобным путём и представленным выше php-кодом в планировщике. Но задача не запускается. Сижу копаю, пытаюсь разобраться в чем дело. Может неправильный пишу ключ в задаче? Изменено 18 ноября 201510 г пользователем Одмин
Опубликовано: 18 ноября 201510 г Ну я собственно так и понял.Вы не правильно поняли. Никакую задачу создавать не нужно. Просто вставляете указанный php код в шаблоне, и в нужном месте выводите статистику аттачей, он сам будет обновлять кеш раз в один час.Возможно задачей было бы идеологически правильнее, но для нее нужно писать отдельно задачу и регистрировать в менеджер задач.
Опубликовано: 18 ноября 201510 г Автор @siv1987, о, теперь вроде всё работает! Сделал так: <php> if( $this->settings['show_totals'] ) { if( ! isset( $stats['total_attachments'] ) OR $stats['update_attachments'] < ( IPS_UNIX_TIME_NOW - 1 * 60 * 60 ) ) { $row = $this->DB->buildAndFetch( array('select' => 'COUNT(*) as count', 'from' => 'attachments') ); $stats['total_attachments'] = $row['count']; $this->caches['stats']['total_attachments'] = $stats['total_attachments']; $this->caches['stats']['update_attachments'] = IPS_UNIX_TIME_NOW; $this->cache->setCache( 'stats', $this->caches['stats'], array( 'array' => 1 ) ); } } </php> <li class='clear'> <span class='value'>{$this->caches['stats']['total_attachments']}</span> {$this->lang->words['total_attachments']} </li>
Опубликовано: 23 ноября 201510 г Создал я файл в /admin/applications/forums/tasks/total_attachments.php и создал задачу с подобным путём и представленным выше php-кодом в планировщике. Но задача не запускается. Сижу копаю, пытаюсь разобраться в чем дело. Может неправильный пишу ключ в задаче? Если надумаете, то https://www.invisionpower.com/support/guides/_/advanced-and-developers/application/tasks-r202
Подниму тему. Подскажите, а как вывести в статистике главной страницы кол-во залитых на форум аттачей? Не могу отыскать по ключу...