phpBB — популярный скрипт форума. phpBB создан в 2000 году и на сегодняшний день является самым используемым в мире форумом с открытым исходным кодом. Zebroid имеет максимальную поддержку этой CMS (импорт контента из сайта в программу, экспорт с программы на сайт, а так же поддержку комментариев).
Экспорт
Экспорт в phpBB3 реализован в виде
файловый экспорт. Программа генерирует XML файл, который необходимо импортировать в специальный модуль на сайте.
Процесс установки модуля импорта
Внимательно следите за тем, где нужно добавлять перед, где после, а где заменять код.
- Скачать архив с модулем
- Закидываем содержимое архива в корень сайта
- Открыть файл "/includes/acp/acp_board.php"
Ищем:
switch ($mode)
{
Далее добавляем:
/* Start Zebroid import */
case 'zebroid_import':
$display_vars = array(
'title' => 'ACP_ZEBROID',
'vars' => array(
'legend1' => 'ZEBROID_SETTINGS',
'zeb_filename' => array('lang' => 'ZEBROID_FILENAME', 'validate' => 'string', 'type' => 'select', 'method' => 'get_zebroid_files', 'explain' => true),
'forum_perm_from' => array('lang' => 'ZEBROID_PERMISSIONS', 'validate' => 'string', 'type' => 'select', 'method' => 'select_all_forums', 'explain' => true),
'usr_pass' => array('lang' => 'ZEBROID_USR_PASS', 'validate' => 'string', 'type' => 'text:20:50', 'explain' => true),
'usr_group' => array('lang' => 'ZEBROID_USR_GROUP', 'validate' => 'int', 'type' => 'select', 'method' => 'select_groups_list', 'explain' => true),
'views_count' => array('lang' => 'ZEBROID_VIEWS_COUNT', 'validate' => 'string', 'type' => 'text:20:50', 'explain' => true),
'use_avatars' => array('lang' => 'ZEBROID_AVATAR', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
'uniq_check' => array('lang' => 'ZEBROID_UNIQ_CHECK', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
),
);
break;
/* End Zebroid import */
- В этом же файле
Ищем:
function quick_reply($value, $key)
{
global $user;
$radio_ary = array(1 => 'YES', 0 => 'NO');
return h_radio('config[allow_quick_reply]', $radio_ary, $value) .
'
<input class="button2" type="submit" id="' . $key . '_enable" name="' . $key . '_enable" value="' . $user->lang['ALLOW_QUICK_REPLY_BUTTON'] . '" />';
}
Далее добавляем:
/* Start Zebroid import */
function get_zebroid_files()
{
global $phpbb_root_path;
$file_list = glob($phpbb_root_path . "/zeb_import/*.xml");
$result = '';
if($file_list)
foreach ($file_list as $value) {
$filename = substr($value, (strlen ($value)) - (strlen (strrchr($value, '/'))) + 1, (strlen ($value)));
$result .= "<option value='$filename'>$filename</option>";
}
return $result;
}
function select_all_forums($value, $key)
{
global $user, $config;
$forum_list = make_forum_select(false, false, true, true, true, false, true);
foreach ($forum_list as $f_id => $f_row)
{
$f_row['selected'] = phpbb_optionget(FORUM_OPTION_FEED_NEWS, $f_row['forum_options']);
$s_forum_options .= '<option value="' . $f_id . '"' . (($f_row['selected']) ? ' selected="selected"' : '') . (($f_row['disabled']) ? ' disabled="disabled" class="disabled-option"' : '') . '>' . $f_row['padding'] . $f_row['forum_name'] . '</option>';
}
return $s_forum_options;
}
function select_groups_list(){
return group_select_options(2, array(4,5,6), false);
}
/* End Zebroid import */
- В этом же файле
Ищем:
// We validate the complete config if whished
validate_config_vars($display_vars['vars'], $cfg_array, $error);
if ($submit && !check_form_key($form_key))
{
$error[] = $user->lang['FORM_INVALID'];
}
Далее добавляем:
/* Start Zebroid import */
if ($mode == 'zebroid_import' && $submit) {
include($phpbb_root_path . 'includes/functions_zebroid.php');
$zeb_err = zebroid_import_file($phpbb_root_path . 'zeb_import/' . $cfg_array['zeb_filename'], //Путь к файлу
$cfg_array['forum_perm_from'], //Форумные права
$cfg_array['usr_pass'], //Пароль для пользователей
$cfg_array['usr_group'], //Группа пользователей
$cfg_array['views_count'], //Просмотров
$cfg_array['use_avatars'], //Использовать аватары
$cfg_array['uniq_check'], //Проверять на наличие дубликатов
$this->u_action); //Ссылка назад
if ($zeb_err != '') $error[] = $zeb_err;
}
//Значения по умолчанияю
$cfg_array['usr_pass'] = '123456';
$cfg_array['use_avatars'] = '1';
$cfg_array['uniq_check'] = '1';
$cfg_array['views_count'] = '30-300';
/* End Zebroid import */
- Открыть файл "/language/en/acp/board.php" или "/language/ru/acp/board.php" в зависимости от языка в настройках (можно и оба править)
Ищем:
?>
Перед этим добавляем:
/* Start Zebroid import */
$lang = array_merge($lang, array(
'ACP_ZEBROID_EXPLAIN' => 'Импорт контента подготовленого программой Зеброид',
'ZEBROID_SETTINGS' => 'Настройки',
'ZEBROID_FILENAME' => 'Имя файла',
'ZEBROID_FILENAME_EXPLAIN' => 'Для того, чтобы можно было выбрать файл для импорта, его сначала нужно загрузить в папку "zeb_import", которая находится в корне сайта. Имя файла обязательно должно быть на латинице.',
'ZEBROID_PERMISSIONS' => 'Копировать форумные права',
'ZEBROID_PERMISSIONS_EXPLAIN' => 'Устанавливает такие же права доступа на созданные форумы, что и у выделеного',
'ZEBROID_USR_PASS' => 'Пароль для пользователей',
'ZEBROID_USR_PASS_EXPLAIN' => 'Всем новым пользователям, которых создаёт данный скрипт будет установлен указанный здесь пароль',
'ZEBROID_USR_GROUP' => 'Группа для пользователей',
'ZEBROID_USR_GROUP_EXPLAIN' => 'Группа, в которую попадут созданные скриптом пользователи',
'ZEBROID_VIEWS_COUNT' => 'Количество просмотров темы',
'ZEBROID_VIEWS_COUNT_EXPLAIN' => 'Можна указать точное значение, тогда скрипт новым темам будет присваивать его ±20, или же указать диапазон, например, "50-80"',
'ZEBROID_AVATAR' => 'Загружать аватары',
'ZEBROID_AVATAR_EXPLAIN' => 'Если эта опция включена - тогда пользователям, что создаются скриптом, будут загружаться аватары из папки "zeb_avatar" (каждый аватар используется только 1 раз и удаляется из папка)',
'ZEBROID_UNIQ_CHECK' => 'Отсеивать дубликаты',
'ZEBROID_UNIQ_CHECK_EXPLAIN' => 'Перед созданием тем, скрипт будет проверять нет ли темы с таким названием в базе данных и только в случае отсутствия создавать новую',
));
/* End Zebroid import */
- Открыть файл «language/en/acp/common.php» или «language/ru/acp/common.php» в зависимости от языка в настройках (можно и оба править)
Ищем:
?>
Перед этим добавляем:
/* Start Zebroid import */
$lang = array_merge($lang, array(
'ACP_ZEBROID' => 'Зеброид импорт',
'LOG_CONFIG_ZEBROID' => '<strong>Импорт Зеброид</strong>',
));
/* End Zebroid import */
- Открыть файл «includes/acp/info/acp_board.php»
Ищем:
'registration' => array('title' => 'ACP_REGISTER_SETTINGS', 'auth' => 'acl_a_board', 'cat' => array('ACP_BOARD_CONFIGURATION')),
Далее добавляем:
'zebroid_import' => array('title' => 'Zebroid Import', 'auth' => 'acl_a_board', 'cat' => array('ACP_BOARD_CONFIGURATION')),
- Открыть файл «includes/functions_posting.php»
Ищем:
function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $update_message = true, $update_search_index = true)
Заменять на:
function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $update_message = true, $update_search_index = true, $custom_time = '')
- В этом же файле
Ищем:
$current_time = time();
Заменять на:
if(!$custom_time) $current_time = time();
else $current_time = $custom_time;
- После установки заходим в админку, вкладка «Система» -> «Управление модулями» -> «Центр администрирования». В списке по середине выбираем «Общее», потом «Конфигурация» и внизу страницы из выпадающего списка выбираем «Zebroid import» (скриншот) и нажимаем кнопку добавить. Далее в списке возле Zebroid import нажимаем «включить». После всего чистим кеш (вкладка «Общие») Теперь настройка мода будет доступна «Общие» → «Конфигурация» → «Zebroid import» (скриншот).
- Если вы собираетесь использовать аватары, тогда обязательным пунктом есть их включение в настройках форума и увеличение допустимого размера загружаемых аватаров до уровня, который не будет меньше добавляемых вами в папку «zeb_avatar». Скрипт автоматически уменьшает загруженные вами картинки до 90 пикселей по большей стороне.
Модуль умеет постить комментарии, но phpBB3 не следит за тем, чтобы комментарии и темы были опубликованы в нужно время, а отображает сразу все. Если вы хотите иметь отложенную публикацию для этой CMS — воспользуйтесь модифицированной сборкой
phpBB3 Zebroid Edititon.
Импорт
Для phpBB3 был создан специальный модуль экспорта форума, который потом можно без проблем импортировать, используя профиль
XML импорта сгенерированого модулем файла. Установка модуля:
- Качаем модуль и распаковываем архив
- Открываем файл с помощью редактора и устанавливаем логин и пароль в 6 и 7 строках
- Заливаем файл zexport.php в папку с форумом
Далее открываем страницу:
http://полный_путь_к_форуму/zexport.php
Вводим логи и пароль, указываем какую ветку форума экспортировать и запускаем процесс.
После экспорта скачиваем сгенерированный файл и импортируем его с использованием правильного профиля импорта XML. Если полученный проект вы не планируете в будущем экспортировать в phpBB3, тогда с помощью снипета поиска и замены, который называется phpBB3, проект можно почистить от BB-кодов (точнее перевести их в HTML-коды).
Сборка phpBB3 Zebroid Edititon
Основная особенность и достоинство этой модификации есть то, что скрипт форума строго контролирует вывод тем и сообщений в зависимости от текущей даты. Таким образом, если мы с помощью Зеброида наполнили форум в котором есть посты и темы с не наступившей датой, то такие темы и посты появятся именно тогда, когда дата их публикации наступит. Что это дает? — теперь очень просто создать псевдо-активные форумы, которые будут жить своей жизнью и не завесить от вас.
При внесении модификаций было уделено внимание малейшим деталям:
- Количество тем, сообщений и пользователей соответствует данным для текущего момента времени
- Пользователей с не наступившей датой регистрации в списках пользователей нету
- Количество сообщений у пользователя всегда показывается верное на данный момент времени
- В поиске нельзя найти постов и тем из будущего
- Последняя активность пользователя никогда не бывает больше текущего времени
- Посты всегда отображаются в хронологическом порядке
Последний, кстати, очень важен. Вот к примеру: Есть тема, в которой 7 сообщений, но в данный момент отображается только 3 (дата публикации остальных еще не наступила). Пользователь читает тему и решает оставить свой ответ, которой в результате попадает на место четвертого в теме и никуда не сдвигается. Все ответы, имеющие более позднюю дату публикации — отображаются в теме после этого поста.
Внимание: Обновляться с официальных источников категорически запрещено
Скрипт импорта контента Зеброид в движок уже установлен.