Русская поддержка phpFox 3
Ответов нет
64 ответа
5 ответов
1 ответ
Для точного пересчёта счётчика каких либо записей, буду использовать функцию:
Допустим, нам необходимо пересчитать количество комментариев у фотографии. Делаем так:
Функция имеет пять параметров:
Тут будет пересчёт всех существующих записей, с указанными параметрами выборки, после чего обновится указанное поле.
В 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 есть ещё один вариант обновления счётчика, который просто добавляет единицу, либо отнимает единицу, от количества записей. Допустим, задача та же, обновления счётчика комментов у фотографии. Делаем так:
$this->database()->updateCounter(
'photo',
'total_comment',
'photo_id',
$photo['photo_id']
);
Тут функция
updateCounter
принимает четыре параметра:
- Название таблицы, в котором находится поле для обновления.
- Название поля, что будем обновлять.
- По какому полю находим нужную запись.
- Что должно соответствовать полю.
В данном случае, значение:
total_comment
станет на единицу больше. Чтобы значение стало на единицу меньше, необходимо вставить пятый параметр (true
) в функцию:
$this->databas
- Жалоба
После того, как мы меняем 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
содержит в себе массив, что мы передали с другого контролёра.
Опрос :: 29.04.2024 11:20:29 am
Если Вы владелец phoFox 3, то поделитесь своим мнением с нами, стоит ли обновлять движок до phpFox 4?
Статистика доступна после голосования Публичный опрос
Чтобы сообщить пользователю, что страницы или файла не существует, то есть отдать ему 404 ошибку, мы будем использовать родной метод
Допустим мы получаем какие либо данные, и в случае, если нужная запись не найдена, выводим 404 ошибку:
URL страницы останется именно таким, каким на него перешли. А если надо отправить пользователя по адресу: "site/error.404/", делаем так:
На мой взгляд, первый вариант лучше.
setController
, библиотеки module
. Вот так:
phpfox::getLib('module')->setController('error.404')
Допустим мы получаем какие либо данные, и в случае, если нужная запись не найдена, выводим 404 ошибку:
if ($editID = $this->request()->getInt('id'))
{
if (!($row = phpfox::getService('ad')->getAd($editID)))
{
// В случае ненайденной записи выводим 404 ошибку
return phpfox::getLib('module')->setController('error.404');
}
// Тут код при успешно найденной записи
}
URL страницы останется именно таким, каким на него перешли. А если надо отправить пользователя по адресу: "site/error.404/", делаем так:
phpfox::getLib('url')->send('error.404');
На мой взгляд, первый вариант лучше.
Оказывается, не все вложенные картинки, по клику открываются в модульном окне, по размеру самого файла (ThickBox), например, превью для опроса. Изначально, по клику на превью опроса, в ленте новостей, открывается новая вкладка со страницей опросом. Мне захотелось, чтобы в ленте новостей, по клику на превью, открывалось окошко с фото опроса. Ниже расскажу, как я это сделал.
Открываю: "module/poll/include/service/callback.class.php", нахожу метод getActivityFeed, где в массив
Получается так:
А в
Получается так:
...
Открываю: "module/poll/include/service/callback.class.php", нахожу метод getActivityFeed, где в массив
$return
добавляю строку:
'no_target_blank' => true,
Получается так:
$return = [
'feed_title' => $row['question'],
'feed_link' => phpfox::permalink('poll', $row['poll_id']),
'feed_content' => !empty($row['description']) ? $row['description'] : null,
'total_comment' => $row['total_comment'],
'feed_total_like' => $row['total_like'],
'feed_is_liked' => $row['is_liked'],
'feed_icon' => phpfox::getLib('image.helper')->display(['theme' => 'module/poll.png', 'return_url' => true]),
'time_stamp' => $row['time_stamp'],
'enable_like' => true,
'comment_type_id' => 'poll',
'like_type_id' => 'poll',
'no_target_blank' => true,
'feed_custom_html' => $tpl->getTemplate('poll.block.vote', true)
];
А в
$return['feed_image']
добавляю:
'thickbox'=> true
Получается так:
$return['feed_image'] = phpfox::getLib('image.helper')->display([
'server_id' => $row['server_id'],
'path' =>
2 января 2019 года разработчики phpFox сообщили о релизе версии 4.7.2.
В основном релиз - исправление различных ошибок и доработка того, что просили пользователи.
Источник: https://www.phpfox.c ... ficial-release/.
В основном релиз - исправление различных ошибок и доработка того, что просили пользователи.
Источник: https://www.phpfox.c ... ficial-release/.
Разработчики phpFox под Новогодние праздники объявили о релизе 4.6.0 RC. Дизайн данной версии выглядит гораздо красивее (и аккуратнее), чем 4.5.x.
Новость о релизе: https://www.phpfox.c ... 6-0-rc-release/.
Новость о релизе: https://www.phpfox.c ... 6-0-rc-release/.
Dolphin 31.12.2017 07:56:51 am
Дизайн действительно радует глаз, приятный! А исходный код, какой был, такой, видимо (шибко не разглядывал), и остался... Разве, что позаботились о кириллице (еще до 4.6.0 версии). Их решение я использовал в своей Тройке: Журнал пользователя движка phpFOX 3 (Сообщение отдельно: #1035). Вижу, что избавились от многих сторонних библиотек, возможно, написали свои. Разработчики до сих пор не избавились от MySQL, зачем то находится в папке драйверов Базы Данных. Думаю, что MySQLi необходимо, а про MySQL уже надо забыть и выпилить его из движка.
Как я понял, чтобы обновить Тройку до Четверки Про, необходимо доплатить 240 долларов.
Как я понял, чтобы обновить Тройку до Четверки Про, необходимо доплатить 240 долларов.
Dolphin 10.01.2018 11:43:57 am
9 января, 2018 года, то есть вчера, разработчики сообщили об официальном релизе phpFox 4.6.0. По их словам эта версия самая лучшая версия за всю историю phpFox.
Здравствуйте.
Сегодня решил избавиться от тройного w в адресе своей соцсети, полез в .htaccess. Там уже есть закомментированный код редиректа на www. в случаи если его нет, это мне не нужно. Кстати, у меня было написан этот код с ошибкой:
В последней строке, после знака процента есть пробел пробел, его там быть не должно. Если у Вас тоже есть этот пробел, уберите его, он может привести к ошибке на сайте.
Что бы убрать www., после код, что приведен выше дописываем:
Теперь Ваш домен без www..
Спасибо за внимание.
Надеюсь информация Вам была полена.
Сегодня решил избавиться от тройного w в адресе своей соцсети, полез в .htaccess. Там уже есть закомментированный код редиректа на www. в случаи если его нет, это мне не нужно. Кстати, у меня было написан этот код с ошибкой:
# 301 redirect if missing www.
#RewriteCond %{HTTP_HOST} !^www\.
#RewriteRule ^(.*)$ http://www.% {HTTP_HOST}/$1 [R=301,L]
В последней строке, после знака процента есть пробел пробел, его там быть не должно. Если у Вас тоже есть этот пробел, уберите его, он может привести к ошибке на сайте.
Что бы убрать www., после код, что приведен выше дописываем:
# 301 redirect without www.
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]
Теперь Ваш домен без www..
Спасибо за внимание.
Надеюсь информация Вам была полена.
В phpFOX 3 есть вшитая подсветка синтаксиса, но только для HTML тегов и то её надо допилить... Я её "выкинул напрочь" и вставил highlight.js. Делал так:
Открыть: theme/frontend/nebula/template/template.html.php, найти:
Выше добавить:
Открыть: include/library/phpfox/phpfox/phpfox.class.php, найти:
Выше добавить:
Открыть: include/library/phpfox/parse/bbcode.class.php, найти:
Заменить на:
Найти и удалить или закомментировать:
...
Открыть: theme/frontend/nebula/template/template.html.php, найти:
</body>
</html>
{/if}
Выше добавить:
<script type="text/javascript">
hljs.initHighlightingOnLoad();
</script>
Открыть: include/library/phpfox/phpfox/phpfox.class.php, найти:
if (Phpfox::isModule('friend'))
{
$oTpl->setPhrase(array('friend.show_more_results_for_search_term'));
}
Выше добавить:
if (Phpfox::isModule('forum') | Phpfox::isModule('blog'))
{
$oTpl->setHeader('cache', array(
'code.css' => 'style_css',
'highlight.pack.js' => 'static_script'
)
);
}
Открыть: include/library/phpfox/parse/bbcode.class.php, найти:
$sTxt = '<div class="quote">' . ($bNoTitle ? '' : '<div class="quote_title">' . trim($sTitle) . ':</div>') . '<div class="quote_body" style="overflow:auto;' . ($this->_aBlockHeight[$sTxt] >= 540 ? ' height:' . $this->_aBlockHeight[$sTxt] . 'px;' : '') . '">' . $sPrefix . $sNewTxt . $sSuffix . '</div></div>';
Заменить на:
$sTxt = '<div class="quote"><div class="quote_title">' . trim($sTitle) . ':</div><div class="quote_body" style="overflow: auto; max-height: 180px;"><pre><code>' . $sNewTxt . '</code></pre></div></div>';
Найти и удалить или закомментировать:
$sPrefix = '';
$sSuffix = '';
if ($sType != 'php')
{
$sPrefix = '<pre>';
$sSuffix =