| Новичок
Регистрация: 24.02.2008 Сообщений: 13 Репутация: 15 | phpBB 2 - интеграция Документации по тому, как устроен этот форум и как в его интегрировать я не читал. Но по роду деятельности пришлось с ним столкнуться. И чтобы не забыть, что и как я в нем менял, сохранил это себе на комп. Выложу здесь, вдруг кому пригодится.
1. Дизайн. Без создания новых шаблонов. Просто прикрутить дизайн моего сайта к форуму. Меняем 2 файла шаблона в папке templates/subSilver - overall_header.tpl и overall_footer.tpl.
2. Внедрить свой php код в шаблон. Например вставить какую-нибудь баннеро-крутику:
В конце файла includes/page_header.php , там где идет наполнение массива темплейта. Добавляем в массив свою вставку, например в моем случае это была форма авторизации на сайте: PHP код: 'RX_AUTH' => rx_auth_form(),// rx added
Здесь мы сказали движку, что если он встретит в шаблоне строку {RX_AUTH}, то заменить её на результат работы ф-ции rx_auth_form().
Перед этим массивом пишем нашу ф-цию: PHP код: function rx_auth_form(){ ... return "hello world"; } Теперь добавляем встаку в шаблон (напр. файл templates/subSilver/overall_header.tpl) вставляем в нужном месте {RX_AUTH}. И всё, теперь здесь будет выводится результат работы нашей ф-ции
3. Если будете что-либо писать для форума, то можно пользоваться сл. переменными/функциями: СООБЩЕНИЕ ОБ ОШИБКЕ message_die(GENERAL_MESSAGE, "сообщение"); message_die(GENERAL_ERROR, "сообщение");
РАСПОЗНАТЬ ПОЛЬЗОВАТЕЛЯ: if($userdata['user_id'] == ANONYMOUS) аноним if($userdata['session_logged_in']) вошедший
$userdata данные пользователя $lang языковой файл $template массив темплейта(замены) redirect(append_sid("index.$phpEx", true)); переадресация с добавлением сессии
4. Некоторые ф-ции, которые я использовал в форуме для интеграции с сайтом: $bb_prefix-префикс таблиц
ЧИСТКА ФОРУМА ОТ МЕРТВЫХ ПОЛЬЗОВАТЕЛЕЙ $user_lastvisit=31536000;//год. Сколько секунд назад был пользователь на сайте $user_lastvisit2=889200;//неделя. В этот период можно оставлять 1 сообщение $msg_count=2;// сколько сообщений оставил // Выбираем пользователей $result=@mysql_query("SELECT user_id FROM `".$bb_prefix."_users` WHERE (user_lastvisit<$user_lastvisit)or(user_posts<$msg_count)"); while($data=@mysql_fetch_array($result)){ $user_id=intval($data['user_id']); $result2=@mysql_query("DELETE FROM `".$bb_prefix."_users` WHERE user_id=$user_id"); $result2=@mysql_query("SELECT group_id FROM `".$bb_prefix."_user_group` WHERE user_id=$user_id"); $data2=@mysql_fetch_array($result2); $group_id=intval($data['group_id']); $result2=@mysql_query("DELETE FROM `".$bb_prefix."_user_group` WHERE user_id=$user_id"); $result2=@mysql_query("DELETE FROM `".$bb_prefix."_groups` WHERE group_id=$group_id"); }
---------------------------------------
// проверка существования логина function rx_forum_check_username($username, $bb_prefix='phpbb'){ $result=@mysql_query("SELECT * FROM `".$bb_prefix."_users` WHERE username='$username' LIMIT 1"); return (@mysql_num_rows($result))?true:false; }
---------------------------------------
// добавить пользователя function rx_forum_registration($login, $pass, $mail, $bb_prefix='phpbb'){ $time=time(); $pass=md5($pass);
// ид пользователя $result=@mysql_query("SELECT MAX(user_id) as max_user FROM `".$bb_prefix."_users`"); $data=@mysql_fetch_array($result); $user_id=intval($data['max_user']); $user_id++;
// ид группы $result=@mysql_query("SELECT MAX(".$bb_prefix."_groups.group_id) as max_g1, MAX(".$bb_prefix."_user_group.group_id) as max_g2 FROM `".$bb_prefix."_user_group`, `".$bb_prefix."_groups`"); $data=@mysql_fetch_array($result); $group_id=($data['max_g1']>$data['max_g2'])?$data['max_g1']:$data['max_g2']; $group_id++;
// запись инфо о новом пользователе $result=@mysql_query("INSERT INTO `".$bb_prefix."_users` ( `user_id`, `user_active`, `username`, `user_password`, `user_session_time`, `user_session_page`, `user_lastvisit`, `user_regdate`, `user_level`, `user_posts`, `user_timezone`, `user_style`, `user_lang`, `user_dateformat`, `user_new_privmsg`, `user_unread_privmsg`, `user_last_privmsg`, `user_login_tries`, `user_last_login_try`, `user_emailtime`, `user_viewemail`, `user_attachsig`, `user_allowhtml`, `user_allowbbcode`, `user_allowsmile`, `user_allowavatar`, `user_allow_pm`, `user_allow_viewonline`, `user_notify`, `user_notify_pm`, `user_popup_pm`, `user_rank`, `user_avatar`, `user_avatar_type`, `user_email`, `user_icq`, `user_website`, `user_from`, `user_sig`, `user_sig_bbcode_uid`, `user_aim`, `user_yim`, `user_msnm`, `user_occ`, `user_interests`, `user_actkey`, `user_newpasswd`) VALUES ($user_id, 1, '$login', '$pass', 0, 0, 0, $time, 0, 0, 3.00, 1, 'russian', 'D M d, Y g:i a', 0, 0, 0, 0, 0, NULL, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, '', 0, '$mail', '', '', '', '', '', '', '', '', '', '', '', NULL)"); $result=@mysql_query("INSERT INTO `".$bb_prefix."_user_group` (`group_id`, `user_id`, `user_pending`) VALUES ($group_id, $user_id, 0)"); $result=@mysql_query("INSERT INTO `".$bb_prefix."_groups` (`group_id`, `group_type`, `group_name`, `group_description`, `group_moderator`, `group_single_user`) VALUES ($group_id, 1, '', 'Personal User', 0, 1)");
}
--------------------------------------------
Делал ещё "антифлуд" для него, но это уже другая тема. Слишком объемная.
Вобщем мало-ли кому пригодится вышеизложенное. Я ведь понимаю, когда заказчики требуют результат, а твоя задача вскрыть интернет, чтоб найти нужную инфу. Да как можно быстрей.
Последний раз редактировалось AleX; 25.02.2008 в 12:58.
|