Перейти к контенту

Создание топика


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

Привет. Делаю связку сайта с форумом. Уже сделал авторизацию.

Мне нужно будет через сайт создавать новые топики.

Подскажите код. Как создать топик.

Тут есть топик про создание новых сообщений.

Прочитал, и если честно не разобрался.

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

В IP.Board 2.1 и выше есть API, которое позволяет создавать новые темы и публиковать сообщения: ./sources/api/api_topics_and_posts.php

Внутри файла есть инструкция, как пользоваться данным API.

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

На своем сайте я написал такой код:

При этом я авторизирован на форуме. (Через сайт)

 

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

 

Что делаю ни так?

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

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();

// ДОБАВЛЕНИЕ ОТВЕТА

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

Только не большой вопрос.

А если на форуме допустим несколько разделов.

Допустим -

Музыка

Игры

Фильмы

Программы

 

А мне допустим надо создать топик в программах.

Может есть какая нить опция, где указывается id раздела форума?

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

Только не большой вопрос.

А если на форуме допустим несколько разделов.

Допустим -

Музыка

Игры

Фильмы

Программы

 

А мне допустим надо создать топик в программах.

Может есть какая нить опция, где указывается id раздела форума?

$api->set_forum_id( ID-форума );

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

интересно как это можно подумать если

 

$api->set_forum_id( ID-форума );

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

Перед созданием топика на форуме через сайт.

Мне нужно проверить, есть такая тема или нет.

Тоесть если хотим создать тему QIP, в начале идет проверка есть такой топик или нет.

Это можно сделать SELECT по Базе форума.

 

Но может есть какой нить способ через форумский класс какой нить поиск сделать?

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

странно но вообще не работает, пустой лист...

хоть бы ошибку писало

вот код

<?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");

полный путь указать

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

  • 5 недель спустя...

А как после создание темы таким образом, получить ID темы? Чтобы можно было привязать обсуждение к материалу.

 

Уже разобрался :D

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

  • 2 месяца спустя...

Привет Всем еще раз)

 

У меня такая проблемка... Может кто подскажет что нибудь.

 

Вообщем хочу через сайт изменять посты на форуме.

На сайте, когда выкладывают файлы, автоматически создается тема на форуме.

 

Когда меняешь тему на сайте, берется название этой темы и ник, человека который выложил.

Потом ищется это в БД форума 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. Я так понимаю мне нужно так же сохранять.

Может кто знает как по другому сделать?

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

Открыть АПИ и посмотреть как там сделано. Если нет в АПИ, то в пост.пхп посмотреть :D Нужно подгружать han_parser_bbcode и делать pre_db_parse от текста, результат записывать в БД.

 

P.S. Это для v<2.3

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

Тогда нужно будет делать pre_display_parse(pre_db_parse($text)).
Ссылка на комментарий
Поделиться на других сайтах

			
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 );

 

Ошибка исчезла но результата нет.

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

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}' "); 

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

Да... В коде же куча примеров...

Без 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 ));

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

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

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

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

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

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

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

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.