phpbb

Подключаем CDN хостинг для phpBB

В нашем прошлом материале мы рассказывали о том, как можно подключить CDN хостинг к форуму Invision Power Board. Пришло время поделиться с вами методом, благодаря которому можно заставить работать в сети CDN другой популярный движок для форума — phpBB. В этой статье в качестве форума для теста мы использовали phpBB версии 3.0.7,  данный метод также будет работать и на более поздних версиях. 

Готового модуля который бы с лёгкостью перевёл работу форума под управлением phpBB как в случае с Invision Power Board нет. Поэтому следует сделать ряд изменений в скриптах вашего движка.

Прежде чем вы начнёте вносить изменения в работу скриптов сайта, настоятельно рекомендуем вам сделать резервную копию.

Итак,  приступим.

Forum images

Для начала мы поменяем путь для изображений, которые хранятся на форуме. Необходимо отредактировать файл includes/functions_display.php:

Находим строки

[sourcecode language=»php»]
‘FORUM_IMAGE’ => ($row[‘forum_image’]) ? ‘</pre>
<img src="’ . $phpbb_root_path . $row[‘forum_image’] . ‘" alt="’ . $user->lang[‘FORUM_CAT’] . ‘" />
<pre>’ : »,
‘FORUM_IMAGE_SRC’ => ($row[‘forum_image’]) ? $phpbb_root_path . $row[‘forum_image’] : »,
[/sourcecode]

И меняем их на

[sourcecode language=»php»]
‘FORUM_IMAGE’ => ($row[‘forum_image’]) ? ‘</pre>
<img src="http://cdn.вашдомен.com/directory/path/’ . $row[‘forum_image’] . ‘" alt="’ . $user->lang[‘FORUM_CAT’] . ‘" />
<pre>’ : »,
‘FORUM_IMAGE_SRC’ => ($row[‘forum_image’]) ? ‘http://cdn.вашдомен.com/directory/path/’ . $row[‘forum_image’] : »,
[/sourcecode]

Smiles

Теперь меняем путь к смайликам фашего форума. Для этого отредактируем файл includes/functions_content.php:

[sourcecode language=»php»]
/**
* Smiley processing
*/
function smiley_text($text, $force_option = false)
{
global $config, $user, $phpbb_root_path;

if ($force_option || !$config[‘allow_smilies’] || !$user->optionget(‘viewsmilies’))
{
return preg_replace(‘#<!—\-\- s(.*?) \-\—></pre>
<img src="\{SMILIES_PATH\}\/.*? \/><!\-\- s\1 \-\->#’, ‘\1’, $text); } else { $root_path = (defined(‘PHPBB_USE_BOARD_URL_PATH’) && PHPBB_USE_BOARD_URL_PATH) ? generate_board_url() . ‘/’ : $phpbb_root_path; return preg_replace(‘#<!\-\- s(.*?) \-\-><img src=" alt="" />
<pre><!—\-\- s\1 \-\—>#’, ‘
[/sourcecode]

Делаем следующие исправления

[sourcecode language=»php»]
{
global $config, $user, $phpbb_root_path;

if ($force_option || !$config[‘allow_smilies’] || !$user->optionget(‘viewsmilies’))
{
return preg_replace(‘#<!—\-\- s(.*?) \-\—></pre>
<img src="\http://cdn.вашдомен.com/directory/path\/.*? \/><!\-\- s\1 \-\->#’, ‘\1’, $text);
}
else
{
$root_path = (defined(‘PHPBB_USE_BOARD_URL_PATH’) && PHPBB_USE_BOARD_URL_PATH) ? generate_board_url() . ‘/’ : $phpbb_root_path;
return preg_replace(‘#<!\-\- s(.*?) \-\-><img src=" alt="" />
<pre><!—\-\- s\1 \-\—>#’, ‘</pre>
<img src="&quot;http://cdn.вашдомен.com/directory/path/’" alt="" />
<pre>’, $text);
}
}
[/sourcecode]

Теперь отредактируем файл includes/functions_posting.php:

[sourcecode language=»php»]
‘SMILEY_IMG’ => $root_path . $config[‘smilies_path’] . ‘/’ . $row[‘smiley_url’],
[/sourcecode]

Заменим на

[sourcecode language=»php»]
‘SMILEY_IMG’ => ‘http://cdn.вашдомен.com/directory/path/’ . $config[‘smilies_path’] . ‘/’ . $row[‘smiley_url’],
[/sourcecode]

Ranks

Для изменения пути к изображениям для званий следует отредактировать файл includes/functions_display.php:

[sourcecode language=»php»]
$rank_img = (!empty($ranks[‘special’][$user_rank][‘rank_image’])) ? ‘</pre>
<img title="’ . $ranks[‘special’][$user_rank][‘rank_title’] . ‘" src="’ . $phpbb_root_path . $config[‘ranks_path’] . ‘/’ . $ranks[‘special’][$user_rank][‘rank_image’] . ‘" alt="’ . $ranks[‘special’][$user_rank][‘rank_title’] . ‘" />
<pre>’ : »;
[/sourcecode]

Меняем на

[sourcecode language=»php»]
$rank_img = (!empty($ranks[‘special’][$user_rank][‘rank_image’])) ? ‘</pre>
<img title="’ . $ranks[‘special’][$user_rank][‘rank_title’] . ‘" src="http://cdn.вашдомен.com/directory/path/’ . $ranks[‘special’][$user_rank][‘rank_image’] . ‘" alt="’ . $ranks[‘special’][$user_rank][‘rank_title’] . ‘" />
<pre>’ : »;
[/sourcecode]

ImageSet

Сейчас отредактируем файл includes/session.php:

[sourcecode language=»php»]
$img_data[‘src’] = $root_path . ‘styles/’ . rawurlencode($this->theme[‘imageset_path’]) . ‘/imageset/’ . ($this->img_array[$img][‘image_lang’] ? $this->img_array[$img][‘image_lang’] .’/’ : ») . $this->img_array[$img][‘image_filename’];
[/sourcecode]

Поменяем на

[sourcecode language=»php»]
$img_data[‘src’] = ‘http://cdn.вашдомен.com/directory/path/’ . rawurlencode($this->theme[‘imageset_path’]) . ‘/imageset/’ . ($this->img_array[$img][‘image_lang’] ? $this->img_array[$img][‘image_lang’] .’/’ : ») . $this->img_array[$img][‘image_filename’];
[/sourcecode]

Также вы можете изменить путь к вашему CSS, прописав в шаблоне вашего форума полный путь

[sourcecode language=»html»]

[/sourcecode]