Русская поддержка phpFox 3
Статистика записей текущего дня не учитывает часовой пояс
Давно заметил, что статистика записей за текущий день, что отображается в Админ панели, считает начало дня, не учитывая часовой пояс. Это потому что, во всех методах
Из за этого статистика может быть неточной.
У меня наконец то дошли руки до этого и сейчас расскажу, как я добился, чтобы статистика записей учитывала часовой пояс.
Для определения времени с учётом часового пояса пользователя, в PHPFox есть метод:
...
getSiteStatsForAdmins() (Файлы модулей: "callback.class.php"), по умолчанию нацелено на часовой пояс 0:
$today = mktime(0, 0, 0, date('m'), date('d'), date('Y'));Из за этого статистика может быть неточной.
У меня наконец то дошли руки до этого и сейчас расскажу, как я добился, чтобы статистика записей учитывала часовой пояс.
Для определения времени с учётом часового пояса пользователя, в PHPFox есть метод:
convertToGmt(), в библиотеке date (Файл: "include/library/phpfox/date/date.class.php"). Однако функция может работать только с типом переменной int, то есть принимает только цифру (Метка времени). А я хочу ей отправлять строку midnight. Для этого я слегка правлю метод convertToGmt(), добавив в начало метода:
// Конвертирование строки в Unix-timestamp (Например: 'midnight')
if (!is_numeric($time))
{
- Жалоба
Как обновлять счётчик записей
Для точного пересчёта счётчика каких либо записей, буду использовать функцию:
Допустим, нам необходимо пересчитать количество комментариев у фотографии. Делаем так:
Функция имеет пять параметров:
Тут будет пересчёт всех существующих записей, с указанными параметрами выборки, после чего обновится указанное поле.
В phpFox есть ещё один вариант обновления счётчика, который просто добавляет единицу, либо отнимает единицу, от количества записей. Допустим, задача та же, обновления счётчика комментов у фотографии....
updateCount библиотеки: database.Допустим, нам необходимо пересчитать количество комментариев у фотографии. Делаем так:
$this->database()->updateCount(
'comment',
'parent_id = 0 AND type_id = \'photo\' AND item_id = ' . (int) $photo['photo_id'],
'total_comment',
'photo',
'photo_id = ' . (int) $photo['photo_id']
);Функция имеет пять параметров:
- Название таблицы, в которой будет пересчитывать записи.
- Строка запроса: По каким параметрам считать записи.
- Поле: Счётчик, который необходимо обновить.
- Название таблицы, где будет обновлён счётчик.
- Строка запроса: Счётчик какой записи обновлять.
Тут будет пересчёт всех существующих записей, с указанными параметрами выборки, после чего обновится указанное поле.
В phpFox есть ещё один вариант обновления счётчика, который просто добавляет единицу, либо отнимает единицу, от количества записей. Допустим, задача та же, обновления счётчика комментов у фотографии....
Замена hreh="URL": vanity_url контролёра pages.add
После того, как мы меняем URL своей страницы, в настройках страницы, ссылка "На страницу" может привести нас на 404 ошибку.
Решение: Открыть файл: "module/pages/include/component/ajax/ajax.class.php", найти метод
Добавить:
Внимание: Названия переменных могут отличаться от Ваших, меняйте на свои....
Решение: Открыть файл: "module/pages/include/component/ajax/ajax.class.php", найти метод
changeUrl, в нём перед строчкой:
$this->alert(phpfox::getPhrase('pages.successfully_updated_your_pages_url'), phpfox::getPhrase('pages.url_updated'), 300, 150, true);Добавить:
$this->call('$(\'.page_section_menu_link:first\').attr(\'href\', \'' . phpfox::getService('pages')->getUrl($this->get('id'), $vals['title'], $newTitle) . '\');');Внимание: Названия переменных могут отличаться от Ваших, меняйте на свои....
Как установить в контроллёре другой контроллёр
Данная строчка кода, внутри одного контроллёра, включает другой контроллёр, что будет указан:
В phpFox довольно часто можно встретить включение контроллёра в контроллёре, например, для вывода ошибки 404:
В случае вывода ошибки 404, перед строкой включения контроллёра необходимо писать
phpfox::getLib('module')->setController('module.controller');В phpFox довольно часто можно встретить включение контроллёра в контроллёре, например, для вывода ошибки 404:
if ($error)
{
return phpfox::getLib('module')->setController('error.404');
}В случае вывода ошибки 404, перед строкой включения контроллёра необходимо писать
return (Как в примере выше), чтобы не продолжать выполнять код текущего контроллёра. Если есть необходимость выполнения кода сразу в двух контроллёрах, return не нужен....Как передавать параметры в блок или контроллёр
Из контроллёра можно передавать параметры в блок или другой контроллёр. Для этого в движок введены два метода:
Допустим нам необходимо передать массив, каких либо данных, пишем в контроллёре (Из которого передаём):
В блоке или контроллёре, что должен принять данный массив, пишем следующее:
Теперь переменная
setParam()- Служит для установки / передачи параметров.getParam()- Служит для получения установленных параметров.
Допустим нам необходимо передать массив, каких либо данных, пишем в контроллёре (Из которого передаём):
$this->setParam('paramArray', [
'key-1' => 'val-1',
'key-2' => 'val-2'
]
);В блоке или контроллёре, что должен принять данный массив, пишем следующее:
$paramArray = $this->getParam('paramArray');Теперь переменная
$paramArray содержит в себе массив, что мы передали с другого контролёра....