Русская поддержка phpFox 3
Русская поддержка phpFox 3

Как выводить ошибку 404 (Not Found)

Чтобы сообщить пользователю, что страницы или файла не существует, то есть отдать ему 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)

Оказывается, не все вложенные картинки, по клику открываются в модульном окне, по размеру самого файла (ThickBox), например, превью для опроса. Изначально, по клику на превью опроса, в ленте новостей, открывается новая вкладка со страницей опросом. Мне захотелось, чтобы в ленте новостей, по клику на превью, открывалось окошко с фото опроса. Ниже расскажу, как я это сделал.

Открываю: "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',
...

phpFOX url с "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 (BBcode: code|html|php)

В phpFOX 3 есть вшитая подсветка синтаксиса, но только для HTML тегов и то её надо допилить... Я её "выкинул напрочь" и вставил highlight.js. Делал так:
Открыть: 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;' .
...