Перейти к публикации

Рекомендованные сообщения

Добрый день.

У меня стояла задача установить форум SimpleBB v2.1 на движок DLE 11.2.

Цитата

 

Но возникли 2 проблемы:

1) Без полного право не установиться.

2) Код старой версий DLE немного отличается от DLE 11.2, а также не совместимость не которых модулей.

 

Из всего этого я решил установить Форум Simplebb вручную без установки, а также поделиться с вами инструкцией.

 

Установка:

1) Качаем последнюю версию с github.com (https://github.com/dlenettr/simplebb);

2) Извлекаем из архива папки: language и engine на ваш хостинг. Так же можно удалить не используемые языки из language.

3) Извлекаем из архива папку forum, находящаяся в \templates\THEME_ru\, в ваш шаблон.

4) Редактируем код:

 

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
Ссылка на сообщение
Поделиться на других сайтах

Не видел раньше этот интегрированный в шаблон форум, как он вообще? Я смотрю больше года не обновлялся, не тяжело без русской поддержки, как у него с безопасностью. В плане работы/нагрузки, а главное SEO он как?

Ссылка на сообщение
Поделиться на других сайтах
4 часа назад, Kolbaser сказал:

Не видел раньше этот интегрированный в шаблон форум, как он вообще? Я смотрю больше года не обновлялся, не тяжело без русской поддержки, как у него с безопасностью. В плане работы/нагрузки, а главное SEO он как?

Пока не могу точно сказать.

Недавно установил, пока все работает.

Как будут замечание, так сразу и напишу.

 

Ссылка на сообщение
Поделиться на других сайтах

Установка:

  1. Перед тем как начать установку, сделайте бэкап вашего сайта;
  2. Создайте Категорию с альтернативным именем: forum, после этого создайте подкатегории в том порядке как на Скриншоте, в дальнейшем вы можете дополнить или изменить подкатегории;
  3. В подкатегории необходимо указать путь к шаблонам: короткой и полных новости (пример Скриншоте), заходим в настройки и прописываем путь:
    1. Шаблон короткой новости: forum/threads
    2. Шаблон полной новости: forum/post
  4. После того как Категория и подкатегории будут созданный приступайте к установке форума (Инструкция по установки Simplebb v2.1 для DLE 11.2);
  5. Если у вас DLE 11.2, то пропускаем данный шаг, а если у вас DLE 10.6 или 10.5 распаковываем архив на ваш хостинг, после распаковки в адресную строку вводим: Ваш_сайт.рф/Install_module.php, перед этим не забываем дать доступ файлам и папкам:
    1. .htaccess,
    2. engine/engine.php,
    3. engine/classes/google.class.php, 
    4. engine/modules/main.php,
    5. engine/modules/functions.php,
    6. engine/modules/show.full.php,
    7. engine/modules/show.short.php,
    8. install/backup/
    9. install/logs/
    10. install/xml/
  6. После установки заходим в Админ панель > Сторонние модули > MWS SimpleBB v2.1 и в поле Категория вашего форума выберите созданную заранее категорию.
  7. Если вам нужно чтобы форум запускался через поддомен (пример: forum.ваш_сайт.ru), включаем в настройке "Форум на поддомене" и в .htaccess находим 
    RewriteEngine On

    После ней вставить:

    RewriteCond %{HTTP_HOST} ^forum\.Ваш-сайт\.ru$ [NC]
    RewriteRule ^$ index.php?do=cat&category=forum [L,NC]

    Не забудьте изменить .Ваш-сайт на ваш Домен.

  8. Чтобы попасть на форум в адресной строке прописываем в конце домена альтернативное имя форум (Которое вы указали в Категорий).

  9. Добавьте часть кода в файл main.tpl:

    [forum]<link media="screen" href="{THEME}/forum/css/simplebb.css" type="text/css" rel="stylesheet" />[/forum]

    Для версий DLE 11.2 вам придется создавать стиль с нуля. вы также можете не добавлять данную строчку, а использовать style.css.

Удаление:

  1. Находим файлы и удаляем:
    1. engine/classes/install.class.php
    2. engine/data/simplebb.conf.php
    3. engine/inc/simplebb.php
    4. modules/addpost.php
    5. modules/show.forum.php
    6. modules/simplebb.php
    7. skins/images/simplebb.png
  2. Для DLE 10.6 и 10.5, если вы не удалили папку install, то заходим в install/backup/ и распаковываем архив на ваш хостинг, ну а если вы удалили данную папку, то делаем по инструкций, но наоборот. Также для DLE 11.2 делаем по инструкций, но наоборот.

Теги (Данный теги работают в любом файле .tpl)

  1. [forum:main]Отобразить только на главной странице Форума[/forum:main]
  2. [forum:cat] Отобразить только в Категориях[/forum:cat]
  3. [forum:forum]Отобразить только в Подфоруме[/forum:forum]
  4. [forum:inside]Отобразить только в Категориях или в Подфоруме[/forum:inside]
  5. [forum:thread]Отобразить только в Теме[/forum:thread]
  6. [forum]Отобразить в Форуме[/forum]
  7. [not-forum]На любой странице кроме Форума[/not-forum]

 

  1. {forum-stats} : Статистика форума (forum/stats.tpl);
  2. {category echo="id"} : Текущей категории ID (в show.short - тег не будет работать);
  3. {category echo="name"} :  Название категории (в show.short - тег не будет работать);
  4. {page-title} : show.full Заголовок страницы, также может быть использовано место {title};
  5. {count_all} : отображает количество созданных постов в категорий;
  6. {lastposter-foto} : [lastpost]  [/lastpost]  Ссылка на аватар пользователя создавший новый пост;
  7. {user-group} : show.full Группа пользователя;
  8. {avatar} : show.full  Ссылка на аватар пользователя;
  9. {user-group-icon} : show.full Значок в группе пользователей;
  10. {forum-cats} : отображает список пользователей в категорий.

Файл addpost.tpl может быть таким же как и ваш файл addnews.tpl, вам только необходимо удалить Выбор категории.

В это шаблон может быть использован тега - {selected-cat} имя категорий, в который вы планируете создать пост.

Ссылка на сообщение
Поделиться на других сайтах
  • 5 недель спустя...
16 часов назад, wildport сказал:

Кричит, что в этой строке синтаксическая ошибка:

$main_host = str_replace( $cat_info[ $sbbsett['id'] ]['alt_name'] . ".", "", $_SERVER['HTTP_HOST'] );

Вы правильно вставили? Проверьте, должно быть так:

if ($config['allow_rss']) $metatags .= <<<HTML

<link rel="alternate" type="application/rss+xml" title="{$rss_title}" href="{$rss_url}" />
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 ) . "\" />";
}

 

Изменено пользователем Xaker1493
Ссылка на сообщение
Поделиться на других сайтах
  • 1 месяц спустя...
13 часа назад, ollegus сказал:

Форум тоже понравился, но установить так и не получилось :(

 

Если у тебя версия DLE 11.2 ,11.1 или 11.0, то есть обновлённая версия:

Если не получилось установить, пиши проблему, помогу решить.

 

Ссылка на сообщение
Поделиться на других сайтах
  • 1 месяц спустя...
В 01.03.2017 в 13:52, Xaker1493 сказал:

Если у тебя версия DLE 11.2 ,11.1 или 11.0, то есть обновлённая версия:

Если не получилось установить, пиши проблему, помогу решить.

 


Установил по инструкций для весрий 11.2, работает но криво. В категориях дублирует все, скрин:
pi8U78rLgQ8.jpgAEzJLOSAlFI.jpg

Ссылка на сообщение
Поделиться на других сайтах
8 часов назад, swladimir сказал:


Установил по инструкций для весрий 11.2, работает но криво. В категориях дублирует все, скрин:
pi8U78rLgQ8.jpgAEzJLOSAlFI.jpg

Нашел ошибку. Это я криво поставил, устанавливал вручную + автоматом, пришлось вручную снова лезть по файлам и удалять дублирующий код, как удалил все заработало нормально. Спасибо.

Ссылка на сообщение
Поделиться на других сайтах

На файле engine/engine.php выдает ошибку. Хотя все точно сделал

 

Parse error: syntax error, unexpected '<<' (T_SL) in /home/f/public_html/engine/engine.php on line 1074

Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, Karat7 сказал:

На файле engine/engine.php выдает ошибку. Хотя все точно сделал

 

Parse error: syntax error, unexpected '<<' (T_SL) in /home/f/public_html/engine/engine.php on line 1074

Лишний символ. 

Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, Xaker1493 сказал:

Лишний символ. 

Я пробовал убирать по всякому)) Он тогда другие ошибки пишет. Если не сложно скинь измененные файлы движка. Попробую твои (11.2) okcq@bk.ru

Ссылка на сообщение
Поделиться на других сайтах
В 07.04.2017 в 19:32, Karat7 сказал:

Я пробовал убирать по всякому)) Он тогда другие ошибки пишет. Если не сложно скинь измененные файлы движка. Попробую твои (11.2) okcq@bk.ru

// SimpleBB - 07
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 ) . "\" />";
}
// SimpleBB - 07

Проблема тут: 

<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 ) . "\" />";

Ищи внимательно.

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...