rkit Опубликовано 14 Августа 2007 Жалоба Поделиться Опубликовано 14 Августа 2007 Привет. Делаю связку сайта с форумом. Уже сделал авторизацию.Мне нужно будет через сайт создавать новые топики.Подскажите код. Как создать топик.Тут есть топик про создание новых сообщений. Прочитал, и если честно не разобрался. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
sM1Le Опубликовано 14 Августа 2007 Жалоба Поделиться Опубликовано 14 Августа 2007 В IP.Board 2.1 и выше есть API, которое позволяет создавать новые темы и публиковать сообщения: ./sources/api/api_topics_and_posts.phpВнутри файла есть инструкция, как пользоваться данным API. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
rkit Опубликовано 21 Августа 2007 Автор Жалоба Поделиться Опубликовано 21 Августа 2007 На своем сайте я написал такой код:При этом я авторизирован на форуме. (Через сайт) require_once "../forum/sources/api/api_topics_and_posts.php"; $api = new api_topics_and_posts(); $api->ipsclass =& $this->ipsclass; // ДОБАВЛЕНИЕ ОТВЕТА $api->set_author_by_name('matt'); $api->set_post_content("<b>Hello World!</b> :D"); $api->set_topic_id( 100 ); # По-умолчанию флаг show_signature всегда 1, здесь добавлено для полноты формы $api->post_settings['show_signature'] = 1; # Опционально вы можете отключить пересчет тем, сообщений и статистики # достаточно расскоментировать строчку ниже # $api->delay_rebuild = 1; $api->create_new_reply(); // СОЗДАНИЕ НОВОЙ ТЕМЫ $api->set_author_by_name('matt'); $api->set_post_content("<b>Hello World!</b> :D"); $api->set_forum_id( 10 ); $api->set_topic_title('Hello World'); $api->set_topic_description('I am the description'); $api->set_topic_state('open'); $api->create_new_topic(); Пишет:Fatal error: Using $this when not in object context in E:\server\Apache2\htdocs\resurse\r.php Что делаю ни так? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Song Опубликовано 21 Августа 2007 Жалоба Поделиться Опубликовано 21 Августа 2007 $this->ipsclass отсутствует.Надо его ещё определить. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
sM1Le Опубликовано 21 Августа 2007 Жалоба Поделиться Опубликовано 21 Августа 2007 rkit, неправильно инициализируете API.Все API наследуют класс «api_core» — в нем есть метод по инициализации супер-класса «ipsclass».То есть, Ваш код стоит переписать так:require_once "../forum/sources/api/api_topics_and_posts.php"; $api = new api_topics_and_posts(); $api->path_to_ipb = 'путь/к/директории/форума/со/слэшем/в/конце/'; $api->api_init(); // ДОБАВЛЕНИЕ ОТВЕТА Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
rkit Опубликовано 22 Августа 2007 Автор Жалоба Поделиться Опубликовано 22 Августа 2007 Спасибо большое, все работает. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
rkit Опубликовано 22 Августа 2007 Автор Жалоба Поделиться Опубликовано 22 Августа 2007 Только не большой вопрос.А если на форуме допустим несколько разделов.Допустим -МузыкаИгрыФильмыПрограммы А мне допустим надо создать топик в программах.Может есть какая нить опция, где указывается id раздела форума? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
sM1Le Опубликовано 22 Августа 2007 Жалоба Поделиться Опубликовано 22 Августа 2007 Только не большой вопрос.А если на форуме допустим несколько разделов.Допустим -МузыкаИгрыФильмыПрограммы А мне допустим надо создать топик в программах.Может есть какая нить опция, где указывается id раздела форума?$api->set_forum_id( ID-форума ); Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
rkit Опубликовано 23 Августа 2007 Автор Жалоба Поделиться Опубликовано 23 Августа 2007 $api->set_forum_id( ID-форума ); Ага, спасибо. я по началу с глупил подумал это ид топика) Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Song Опубликовано 23 Августа 2007 Жалоба Поделиться Опубликовано 23 Августа 2007 интересно как это можно подумать если $api->set_forum_id( ID-форума ); Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
rkit Опубликовано 23 Августа 2007 Автор Жалоба Поделиться Опубликовано 23 Августа 2007 Перед созданием топика на форуме через сайт.Мне нужно проверить, есть такая тема или нет. Тоесть если хотим создать тему QIP, в начале идет проверка есть такой топик или нет.Это можно сделать SELECT по Базе форума. Но может есть какой нить способ через форумский класс какой нить поиск сделать? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
sM1Le Опубликовано 23 Августа 2007 Жалоба Поделиться Опубликовано 23 Августа 2007 Нет, какие-либо встроенные проверки отсутствуют. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
rkit Опубликовано 23 Августа 2007 Автор Жалоба Поделиться Опубликовано 23 Августа 2007 Понял спасибо Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
SaT31ReG Опубликовано 26 Августа 2007 Жалоба Поделиться Опубликовано 26 Августа 2007 (изменено) удалено Изменено 26 Августа 2007 пользователем Song Правила, п.6,9 Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
czech Опубликовано 27 Августа 2007 Жалоба Поделиться Опубликовано 27 Августа 2007 странно но вообще не работает, пустой лист...хоть бы ошибку писаловот код <?php require_once ("./forum/sources/api/api_topics_and_posts.php"); $api = new api_topics_and_posts(); $api->path_to_ipb ='/home/czech/www/forum/'; $api->api_init(); $api->ipsclass =& $this->ipsclass; // ДОБАВЛЕНИЕ ОТВЕТА $api->set_author_by_name('cczech'); $api->set_post_content("<b>Hello World!</b> :D"); $api->set_topic_id( 100); # По-умолчанию флаг show_signature всегда 1, здесь добавлено для полноты формы $api->post_settings['show_signature'] = 1; # Опционально вы можете отключить пересчет тем, сообщений и статистики # достаточно расскоментировать строчку ниже $api->delay_rebuild = 1; $api->create_new_reply(); // СОЗДАНИЕ НОВОЙ ТЕМЫ $api->set_author_by_name('matt'); $api->set_post_content("<b>Hello World!</b> :D"); $api->set_forum_id( "6" ); $api->set_topic_title('Hello World'); $api->set_topic_description('I am the description'); $api->set_topic_state('open'); ?>может апатч настрое не так? разобрался...require_once ("./forum/sources/api/api_topics_and_posts.php");полный путь указать Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Vorgal Опубликовано 27 Сентября 2007 Жалоба Поделиться Опубликовано 27 Сентября 2007 А как после создание темы таким образом, получить ID темы? Чтобы можно было привязать обсуждение к материалу. Уже разобрался Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
rkit Опубликовано 13 Декабря 2007 Автор Жалоба Поделиться Опубликовано 13 Декабря 2007 Привет Всем еще раз) У меня такая проблемка... Может кто подскажет что нибудь. Вообщем хочу через сайт изменять посты на форуме.На сайте, когда выкладывают файлы, автоматически создается тема на форуме. Когда меняешь тему на сайте, берется название этой темы и ник, человека который выложил.Потом ищется это в БД форума IPB. Получив нужный ID топика я хочу обновить в нем пост: UPDATE www.ibf_posts SET post = "{$text} " WHERE topic_id = '{$tid}' AND post_date = '{$date_ids}' AND author_name = '{$clubname}' Все обновляется. Но ни много ни так. Тоесть если в переменной $text содержимое например: То он так и выводит на форуме. На форуме я заметил хранится подобное так: <img src=".... И ссылки также не url в <a href=".... Тоесть ни bbcode. Я так понимаю мне нужно так же сохранять. Может кто знает как по другому сделать? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Sannis Опубликовано 13 Декабря 2007 Жалоба Поделиться Опубликовано 13 Декабря 2007 Открыть АПИ и посмотреть как там сделано. Если нет в АПИ, то в пост.пхп посмотреть Нужно подгружать han_parser_bbcode и делать pre_db_parse от текста, результат записывать в БД. P.S. Это для v<2.3 Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
rkit Опубликовано 14 Декабря 2007 Автор Жалоба Поделиться Опубликовано 14 Декабря 2007 У меня версия 2.3.1 Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Sannis Опубликовано 14 Декабря 2007 Жалоба Поделиться Опубликовано 14 Декабря 2007 Тогда нужно будет делать pre_display_parse(pre_db_parse($text)). Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
rkit Опубликовано 14 Декабря 2007 Автор Жалоба Поделиться Опубликовано 14 Декабря 2007 Sannis, спасибо большое. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
rkit Опубликовано 14 Декабря 2007 Автор Жалоба Поделиться Опубликовано 14 Декабря 2007 require_once( "forum/sources/handlers/han_parse_bbcode.php" ); $parser = new parse_bbcode(); $parser->ipsclass =& $this->ipsclass; $parser->allow_update_caches = 1; $parser->bypass_badwords = intval($this->ipsclass->member['g_bypass_badwords']); $parser->parse_html = 1; //$parser->parse_nl2br = 1; $text = $parser->pre_display_parse( $bbcode_text ); Ошибка:Некорректный адресВы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы. Пробывал ставить перед require_once( "forum/sources/handlers/han_parse_bbcode.php" );cтрочку define ( 'IN_IPB', 1 ); Ошибка исчезла но результата нет. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 14 Декабря 2007 Жалоба Поделиться Опубликовано 14 Декабря 2007 $text = $parser->pre_display_parse($parser->pre_db_parse( $bbcode_text )); Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
rkit Опубликовано 14 Декабря 2007 Автор Жалоба Поделиться Опубликовано 14 Декабря 2007 define ( 'IN_IPB', 1 ); require_once( "forum/sources/handlers/han_parse_bbcode.php" ); $parser->parse_html = 1; $infos = $parser->pre_display_parse($parser->pre_db_parse( $infos )); $query = mysql_query ("UPDATE p2p_forum.ibf_posts SET post = " . quoto($infos) . " WHERE pid = '{$tid}' "); Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Sannis Опубликовано 14 Декабря 2007 Жалоба Поделиться Опубликовано 14 Декабря 2007 Да... В коде же куча примеров...Без ipsclass не получится ничего, нужны ж как минимум кеши(смайлов, доп. бб-кодов). require_once( ROOT_PATH."sources/handlers/han_parse_bbcode.php" ); $parser = new parse_bbcode(); $parser->ipsclass =& $this->ipsclass; $parser->allow_update_caches = 0; $infos = $parser->pre_display_parse($parser->pre_db_parse( $infos )); Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.