Установка форума SimpleBB v2.1 на движок DLE 11.2.
Как установить Форум Simplebb вручную без установки, инструкция.
- Качаем последнюю версию с github.com (https://github.com/dlenettr/simplebb);
- Извлекаем из архива папки: language и engine на ваш хостинг. Так же можно удалить не используемые языки из language.
- Извлекаем из архива папку forum, находящаяся в \templates\THEME_ru\, в ваш шаблон.
- Редактируем код:
1).htaccess
Найти строку:
RewriteEngine On
После ней вставить:
# SimpleBB
RewriteRule ^addpost/([0-9]+)(/?)$ index.php?do=addpost&cat=$1 [L]
# Для Поддомена (Если у вас "Форум на поддомене" выключена - закоментируйте или удалите)
RewriteCond %{HTTP_HOST} ^forum\.Ваш-сайт\.ru$ [NC]
RewriteRule ^$ index.php?do=cat&category=forum [L,NC]
2) engine/classes/google.class.php
Найти строку:
$loc = htmlspecialchars( $loc, ENT_QUOTES, 'ISO-8859-1' );
Заменить:
global $config;
$cat_info = get_vars( "category" );
if ( $sbbsett['use_subdomain'] AND ! empty( $cat_info[ $sbbsett['id'] ]['alt_name'] ) ) {
$main_host = str_replace( $cat_info[ $sbbsett['id'] ]['alt_name'] . ".", "", $_SERVER['HTTP_HOST'] );
$loc = str_replace ( "http://" . $main_host . "/" . $cat_info[ $sbbsett['id'] ]['alt_name'], "http://" . $cat_info[ $sbbsett['id'] ]['alt_name'] . "." . $main_host, $loc );
}
3) engine/engine.php
1.Найти строку:
switch ( $do ) {
Перед ней вставить:
require_once ENGINE_DIR . '/data/simplebb.conf.php';
require_once ROOT_DIR . "/language/" . $config['langs'] . "/simplebb.lng";
2.Найти строку:
case "changemail" :
Перед ней вставить:
case "addpost" :
if ( $is_logged ) {
$config['allow_cache'] = false;
include ENGINE_DIR . '/modules/addpost.php';
} else
msgbox ( $lang['all_err_1'], $lang['sbb_s_0'] );
break;
3.Найти строку:
$allow_list = explode ( ',', $user_group[$member_id['user_group']]['allow_cats'] );
Заменить:
require_once (ENGINE_DIR . '/modules/show.forum.php');
$forum = new SimpleBB( $config, $db, $tpl, $cat_info, $user_groups, $member_id ); // notaviablemain
$forum_cats = array_merge( $forum->get_cats(), $forum->get_forums() );
if ( $user_group[$member_id['user_group']]['allow_cats'] == "all" ) { $all_cats = array_keys( $cat_info ); }
else { $all_cats = explode ( ',', $user_group[$member_id['user_group']]['allow_cats'] ); }
$allow_list = array_diff( $all_cats, $forum_cats );
4.Найти строку:
if ($active) {
Перед ней вставить:
include_once (ENGINE_DIR . '/modules/show.forum.php');
$forum = new SimpleBB( $config, $db, $tpl, $cat_info, $user_groups, $member_id ); // category
if ( $category_id == $sbbsett['id'] ) { $forum_where = "main"; }
else if ( in_array( $category_id, $forum->get_cats() ) ) { $forum_where = "cat"; }
else if ( in_array( $category_id, $forum->get_forums() ) ) { $forum_where = "forum"; }
5.Найти строку:
include_once (ENGINE_DIR . '/modules/show.full.php');
После ней вставить:
if ( in_array( $category_id, $forum->get_forums() ) ) { $forum_where = "thread"; }
6.Найти строку:
include_once (ENGINE_DIR . '/modules/show.short.php');
Заменить:
if ( $category_id == $sbbsett['id'] ) {
if ( $sbbsett['use_subdomain'] && strpos( $_SERVER['SERVER_NAME'], $cat_info[ $sbbsett['id'] ]['alt_name'] . "." ) !== 0 ) {
header("HTTP/1.0 301 Moved Permanently");
header("Location: http://{$cat_info[ $sbbsett['id'] ]['alt_name']}.{$_SERVER['SERVER_NAME']}");
die("Redirect");
}
$forum->run();
$tpl->result["content"] = $forum->html( );
} else {
include_once (ENGINE_DIR . '/modules/show.short.php');
if (! $config['allow_quick_wysiwyg']) $allow_comments_ajax = false;
if ($config['files_allow']) if (strpos ( $tpl->result['content'], "[attachment=" ) !== false) {
$tpl->result['content'] = show_attach ( $tpl->result['content'], $attachments );
}
if ($view_template == "rss" AND $news_found) {
if ($catalog) create_cache ( "rss", $tpl->result['content'], $catalog, false );
else create_cache ( "rss", $tpl->result['content'], $category_id, false );
} elseif ($news_found AND $cache_id < 11)
create_cache ( "news", $tpl->result['content'], $cache_id . $cache_prefix, true );
}
7.Найти строку:
if ($config['allow_rss']) $metatags .= <<<HTML
После ней вставить:
else if ( isset( $full_link ) ) {
$main_host = str_replace( $cat_info[ $sbbsett['id'] ]['alt_name'] . ".", "", $_SERVER['HTTP_HOST'] );
$metatags .= "<link rel=\"canonical\" href=\"" . str_replace ( "http://" . $main_host . "/" . $cat_info[ $sbbsett['id'] ]['alt_name'], "http://" . $cat_info[ $sbbsett['id'] ]['alt_name'] . "." . $main_host, $full_link ) . "\" />";
}
8.Найти строку:
if ($user_group[$member_id['user_group']]['allow_short']) $stop_list = "";
Закомментировать или удалить:
//if ($user_group[$member_id['user_group']]['allow_short']) $stop_list = "";
9.Найти строку:
if ($do == "cat" and $category != '' and $subaction == '') {
Заменить:
if ($do == "cat" and $category != '' and $subaction == '' AND $category_id != $sbbsett['id']) {
10.Найти строку:
if ($re_cat != $_GET['category'] OR substr ( $_SERVER['REQUEST_URI'], - 1, 1 ) != '/' OR $_GET['cstart'] == 1 ) {
Заменить:
$bb_cat = $cat_info[ $sbbsett['id'] ]['alt_name'];
if ( strpos( $re_cat, $bb_cat . "/" ) === false AND ( $re_cat != $_GET['category'] OR substr ( $_SERVER['REQUEST_URI'], - 1, 1 ) != '/' OR $_GET['cstart'] == 1 ) ) {
4) engine/modules/show.full.php
1.Найти строку:
if( $user_group[$member_id['user_group']]['allow_hide'] ) $tpl->result['content'] = str_ireplace( "[hide]", "", str_ireplace( "[/hide]", "", $tpl->result['content']) );
Перед ней вставить:
$user = $db->super_query("SELECT foto, user_group FROM " . PREFIX . "_users WHERE name = '{$row['autor']}'");
$tpl->result['content'] = str_replace( "{user-group}", $user_group[$user['user_group']]['group_prefix'].$user_group[$user['user_group']]['group_name'].$user_group[$user['user_group']]['group_suffix'], $tpl->result['content'] );
$tpl->result['content'] = str_replace( "{user-group-icon}", $user_group[ $user['user_group'] ]['icon'], $tpl->result['content'] );
if ( count( explode( "@", $user['foto'] ) ) == 2 ) {
$tpl->result['content'] = str_replace( "{avatar}", "http://www.gravatar.com/avatar/" . md5( trim( $user['foto'] ) ), $tpl->result['content'] );
} else {
if ( ! empty( $user['foto'] ) && file_exists( ROOT_DIR . strchr( $user['foto'], "/uploads" ) ) ) {
$tpl->result['content'] = str_replace( "{avatar}", $user['foto'], $tpl->result['content'] );
} else {
$tpl->result['content'] = str_replace( "{avatar}", $config['http_home_url'] . "templates/" . $config['skin'] . "/dleimages/noavatar.png", $tpl->result['content'] );
}
}
2.Найти строку:
$category_id = intval( $row['category'] );
После ней вставить:
include ENGINE_DIR . '/data/simplebb.conf.php';
$bb_cat = $cat_info[ $sbbsett['id'] ]['alt_name'];
3.Найти строку:
if ($config['seo_control'] AND ( isset($_GET['seourl']) OR strpos ( $_SERVER['REQUEST_URI'], "?" ) !== false ) ) {
Заменить:
if ( ( strpos( $c_url, $bb_cat . "/" ) === false ) AND $config['seo_control'] AND ( isset($_GET['seourl']) OR strpos ( $_SERVER['REQUEST_URI'], "?" ) !== false ) ) {
4.Найти строку:
$tpl->load_template( 'addcomments.tpl' );
Заменить:
if ( in_array( $category_id, $forum->get_forums() ) && ! empty( $sbbsett['addcomm_tpl'] ) ) $tpl->load_template( $sbbsett['addcomm_tpl'] . '.tpl' );
else $tpl->load_template( 'addcomments.tpl' );
5.Найти строку:
$comments->build_comments('comments.tpl', 'news', $allow_full_cache, $full_link );
Заменить:
if ( in_array( $category_id, $forum->get_forums() ) && ! empty( $sbbsett['comments_tpl'] ) ) {
$comm_tpl = trim( $sbbsett['comments_tpl'] ) . ".tpl";
} else {
$comm_tpl = "comments.tpl";
}
$comments->build_comments( $comm_tpl, 'news', $allow_full_cache, $full_link );
6.Найти строку:
else $tpl->load_template( 'fullstory.tpl' );
Заменить:
else {
if ( $dle_module == "showfull" && in_array( $category_id, $forum->get_forums() ) && ! empty( $sbbsett['fullstory_tpl'] ) ) {
$tpl->load_template( $sbbsett['fullstory_tpl'] . ".tpl" );
} else {
$tpl->load_template( 'fullstory.tpl' );
}
}
5) engine/modules/show.short.php
1.Найти строку:
else $tpl->load_template( 'shortstory.tpl' );
Заменить:
else {
if ( ( $forum_where == "cat" || $forum_where == "forum" ) && ! empty( $sbbsett['shortstory_tpl'] ) ) {
$tpl->load_template( $sbbsett['shortstory_tpl'] . ".tpl" );
} else {
$tpl->load_template( 'shortstory.tpl' );
}
}
Для DLE AJAX переключение вида краткой новости
$user_short_tpl = array(
'default' => 'shortstory.tpl', //дефолтный шаблон
'list' => 'shortstory_list.tpl', // шаблон списком
'tablet' => 'shortstory_tablet.tpl' // шаблон картинки
);
if($template_ajax)
$user_tpl = $user_short_tpl[$template_ajax];
else
$user_tpl =(isset($_COOKIE['short_template']) && isset($user_short_tpl[$_COOKIE['short_template']])) ? $user_short_tpl[$_COOKIE['short_template']] : $user_short_tpl["default"];
if( $category_id and $cat_info[$category_id]['short_tpl'] != '' )
$tpl->load_template( $cat_info[$category_id]['short_tpl'] . '.tpl' );
else {
if (( $forum_where == "cat" || $forum_where == "forum" ) && ! empty( $sbbsett['shortstory_tpl'] )){
$tpl->load_template( $sbbsett['shortstory_tpl'] . ".tpl" );
}else{
$tpl->load_template($user_tpl);
}
}
6) engine/modules/functions.php
1.Найти строку:
function custom_print( $matches=array() )
Перед ней вставить:
function custom_cat_print( $matches = array() ) {
global $db, $cat_info, $config, $user_group, $category_id, $_TIME, $lang, $category_id, $PHP_SELF;
if ( !count($matches) ) return "";
$param_str = trim( $matches[1] );
if( preg_match( "#echo=['\"](.+?)['\"]#i", $param_str, $match ) ) {
$echo = $db->safesql( trim( $match[1] ) );
if ( $echo == "name" ) { $key = "name"; }
else if ( $echo == "url" ) { $key = "alt_name"; }
else if ( $echo == "description" ) { $key = "descr"; }
else if ( $echo == "keywords" ) { $key = "keywords"; }
else if ( $echo == "title" ) { $key = "metatitle"; }
else if ( $echo == "id" ) { $key = "id"; }
else { if ( in_array( $echo, array_keys( $cat_info[ $category_id ] ) ) ) { $key = $echo; } }
return $cat_info[ $category_id ][ $key ];
} else return "";
}
7) engine/modules/main.php
1.Найти строку:
if ($replace_url) $tpl->result['main'] = str_replace ( $replace_url[0]."/", $replace_url[1]."/", $tpl->result['main'] );
Закомментировать или удалить:
// if ($replace_url) $tpl->result['main'] = str_replace ( $replace_url[0]."/", $replace_url[1]."/", $tpl->result['main'] );
2.Найти строку:
echo $tpl->result['main'];
Перед ней вставить:
$forum_compile = "after";
include ROOT_DIR . '/engine/modules/simplebb.php';
3.Найти строку:
$tpl->set ( '{content}', "<div id='dle-content'>" . $tpl->result['content'] . "</div>" );
Перед ней вставить:
$forum_compile = "before";
include ROOT_DIR . '/engine/modules/simplebb.php';
4.Найти строку:
$tpl->load_template ( 'main.tpl' );
После ней вставить:
if (isset($forum )){$tpl->copy_template = str_replace( "{forum-cats}", implode( ",", $forum->get_forums() ), $tpl->copy_template );}
7) /templates/THEME/Main.tpl
1.Найти строку:
</head>
Перед ней вставить:
[forum]<link media="screen" href="{THEME}/forum/css/simplebb.css" type="text/css" rel="stylesheet" />[/forum]
5) Всё.
у а дальше делаем по инструкций github.com (https://github.com/dlenettr/simplebb);
Или смотрим видео инструкцию:
- Шаблон короткой новости: forum/threads
- Шаблон полной новости: forum/post
Автор темы: Xaker1493
Перед тем как начать установку, сделайте бэкап вашего сайта!