1. Приветствуем Вас на неофициальном форуме технической поддержки XenForo на русском языке. XenForo - коммерческий форумный движок от бывших создателей vBulletin, написанный на PHP.

Программное создание тем и сообщений на форуме

Тема в разделе "Статьи по XenForo Framework", создана пользователем FractalizeR, 17.10.2010.

Загрузка
  1. FractalizeR

    FractalizeR XenForo Addicted

    Регистрация:
    27.09.10
    Сообщения:
    1 085
    Симпатии:
    832
    Версия XF:
    1.3.2
    Создаем темы:

    PHP:
    $newThread XenForo_DataWriter::create('XenForo_DataWriter_Discussion_Thread');
    $newThread->set('user_id'$authorID);
    $newThread->set('username'$authorName);
    $newThread->set('title'$subject);
    $newFirstPostInThread $newThread->getFirstMessageDw();
    $newFirstPostInThread->set('message'XenForo_Helper_String::autoLinkBbCode($messageText));
    $newThread->set('node_id'$forumId);
    $newThread->preSave();
    if (!
    $newThread->hasErrors())
    {
        
    $newThread->save();
    }
    После сохранения id темы можно получить вызовом
    PHP:
    $newThread->get('thread_id');
     
    Ulibka, GERAsimov, smbbws и 9 другим нравится это.
  2. FractalizeR

    FractalizeR XenForo Addicted

    Регистрация:
    27.09.10
    Сообщения:
    1 085
    Симпатии:
    832
    Версия XF:
    1.3.2
    Создаем сообщения в темах:
    PHP:
    $newPost XenForo_DataWriter::create('XenForo_DataWriter_DiscussionMessage_Post');
     
    $newPost->set('user_id'$userId);
     
    $newPost->set('username'$userName);
     
    $newPost->set('message'XenForo_Helper_String::autoLinkBbCode($messageText));
     
    $newPost->set('thread_id'$threadId);
     
    $newPost->preSave();
     if (!
    $newPost->hasErrors())
     {
         
    $newPost->save();
     }
    После сохранения сообщения id можно получить вызовом
    PHP:
    $newPost->get('post_id');
     
    GERAsimov, syn и TAIFUN нравится это.
  3. Yoskaldyr

    Yoskaldyr Пользователь

    Регистрация:
    27.09.10
    Сообщения:
    1 921
    Симпатии:
    1 163
    Версия XF:
    1.0.4
    тогда вопрос, и насчет первого и насчет второго примера. В какой переменной идет возврат id темы после создания темы для первого примера и id сообщения соответственно для второго примера
     
  4. FractalizeR

    FractalizeR XenForo Addicted

    Регистрация:
    27.09.10
    Сообщения:
    1 085
    Симпатии:
    832
    Версия XF:
    1.3.2
    $newThread->get('thread_id');
    $newPost->get('post_id');

    Примеры обновил.
     
    Yoskaldyr нравится это.
  5. Yoskaldyr

    Yoskaldyr Пользователь

    Регистрация:
    27.09.10
    Сообщения:
    1 921
    Симпатии:
    1 163
    Версия XF:
    1.0.4
    Ждемс примеры отображения сообщений (вывод одного постбита с сообщением, как для переписок, так и для сообщений форума)
    :)))
     
  6. FractalizeR

    FractalizeR XenForo Addicted

    Регистрация:
    27.09.10
    Сообщения:
    1 085
    Симпатии:
    832
    Версия XF:
    1.3.2
  7. Yoskaldyr

    Yoskaldyr Пользователь

    Регистрация:
    27.09.10
    Сообщения:
    1 921
    Симпатии:
    1 163
    Версия XF:
    1.0.4
    Туплю... В общем глянул ,но детально не смотрел. А там все что надо и есть.
    Осталось теперь легкий pubsub сервер найти с какой либо возможностью авторизации и можно реалтайм темы с переписками делать :)
     
    FractalizeR нравится это.
  8. n0rt37

    n0rt37 Активный пользователь

    Регистрация:
    29.12.13
    Сообщения:
    26
    Симпатии:
    6
    Версия XF:
    1.3.0
    парни, только начал разбираться, не подскажете что лучше почитать, что понять куда вставлять этот код?
     
  9. akinak

    akinak Местный

    Регистрация:
    12.02.13
    Сообщения:
    259
    Симпатии:
    243
    Версия XF:
    1.1.3
    Обычно такой код идет в контролер
     
    n0rt37 нравится это.
  10. n0rt37

    n0rt37 Активный пользователь

    Регистрация:
    29.12.13
    Сообщения:
    26
    Симпатии:
    6
    Версия XF:
    1.3.0
    спасибо, с контроллером разобрался, все работает. Теперь хотелось бы выполнять этот код из определенной странички в админке по кнопке. Подскажите как покрасивше реализовать? Заранее извиняюсь если вопросы глупые.
     
  11. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Посмотрите Разработка - Навигация панели управления. Там создаете новый пункт меню, где зададите роутер. Соответственно, при наличии роутера вызовется Ваш контроллер. Ну а дальше по смыслу.
    Ах да. Шаблоны, которые работают в админке, видно только через режим Разработка. Там же они и правятся, создаются. Синтаксис их слегка отличается от публичных.
    Как вариант, посмотрите тот же плагин TMS - он работает в админке. В качестве примера хорошо подойдет.
     
    Mirovinger и n0rt37 нравится это.
  12. n0rt37

    n0rt37 Активный пользователь

    Регистрация:
    29.12.13
    Сообщения:
    26
    Симпатии:
    6
    Версия XF:
    1.3.0
    парни, а реально этим скриптом html текст засунуть, чтоб он отображался как html? В данном варианте теги отображаются как теги.
     
  13. akinak

    akinak Местный

    Регистрация:
    12.02.13
    Сообщения:
    259
    Симпатии:
    243
    Версия XF:
    1.1.3
    тут речь про создание тем. Если вы хотите в темах отображать хтмл, то надо править классы отображения, но это довольно опасно, в том плане, что вы автоматически дадите пользователям возможность постить хтмл. И они вам напостят.
     
    n0rt37 нравится это.
  14. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Плагин был такой, но это будет просто дырищей в плане безопасности. Да и глючный он был. Я уж молчу о том, что из-за некорректного HTML в сообщении может поплыть верстка всей страницы.
     
    Kolya groza morey и n0rt37 нравится это.
  15. n0rt37

    n0rt37 Активный пользователь

    Регистрация:
    29.12.13
    Сообщения:
    26
    Симпатии:
    6
    Версия XF:
    1.3.0
    парни, спасибо, за ответы. Вообще применение данного кода планировалось ТОЛЬКО в админке, поэтому пользователи вряд ли чего напостят. Думал может есть в xenforo какой класс для этого.
     
  16. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Создание тем в админке?
    В любом случае чистый HTML в сообщениях - это зло. Что-то нужное можно и с помощью бб-кодов организовать.
     
    n0rt37 нравится это.
  17. n0rt37

    n0rt37 Активный пользователь

    Регистрация:
    29.12.13
    Сообщения:
    26
    Симпатии:
    6
    Версия XF:
    1.3.0
    именно так
     
  18. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Тогда я просто не понимаю, зачем и как это надо. А поэтому и решений адекватных предложить не могу.
     
  19. gunpowder

    gunpowder Активный пользователь

    Регистрация:
    17.09.13
    Сообщения:
    116
    Симпатии:
    1
    Версия XF:
    1.2.1
    А как мне надо данный код использовать в отдельном скрипте (не эддоне)? Т.е. я так понимаю нужно соединиться включить код класса, потом создать соединение и прочее?

    Как это сделать?
     
  20. akinak

    akinak Местный

    Регистрация:
    12.02.13
    Сообщения:
    259
    Симпатии:
    243
    Версия XF:
    1.1.3
    PHP:
    <?php

    $startTime 
    microtime(true);
    $fileDir dirname(__FILE__);

    //вот тут путь возможно придется уточнить, если скрит не в корне
    require($fileDir '/library/XenForo/Autoloader.php');
    XenForo_Autoloader::getInstance()->setupAutoloader($fileDir '/library');

    XenForo_Application::initialize($fileDir '/library'$fileDir);
    XenForo_Application::set('page_start_time'$startTime);

    $deps = new XenForo_Dependencies_Public();
    $deps->preLoadData();

    //Если нужен какой-нить класс модели
    $threadModel XenForo_Model::create('XenForo_Model_Thread');

    //Если нужен DataWriter
      
    $dw = new XenForo_DataWriter_User();
    А дальше уже код свой.
     
    GERAsimov, FractalizeR, Mirovinger и ещё 1-му нравится это.

Поделиться этой страницей