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

Создание "корзины" для удалённых тем

Тема в разделе "Модификации шаблонов", создана пользователем FrozenLord, 24.11.2010.

Загрузка
  1. FrozenLord

    FrozenLord Местный

    Регистрация:
    15.11.10
    Сообщения:
    71
    Симпатии:
    101
    Кому как, а мне лично после перехода с ибп, не хватает функции, при которой удалённые темы попадают в "корзину".

    Но это легко изменить!


    Создаём произвольный форум, который будет "корзиной".

    Открываем файлы:
    xen\library\XenForo\Model\InlineMod\Thread.php
    xen\library\XenForo\Model\Thread.php
    *в обоих файлах схожие функции, в обоих делаем замену

    Находим:
    Код:
    $dw->setExtraData(XenForo_DataWriter_Discussion::DATA_DELETE_REASON,$options['reason']);
    $dw->set('discussion_state', 'deleted');
    $dw->save();

    Меняем на:
    Код:
    $dw->setExtraData(XenForo_DataWriter_Discussion::DATA_DELETE_REASON, $options['reason']);
    $dw->set('discussion_state', 'deleted');
    $dw->set('node_id', '9999');
    $dw->save();
    9999 - обязательно замените на айди вашей корзины!


    И теперь каждая удалённая тема - будет улетать в рай для мусора.
     
    metaluga, butik, Amadeus и 10 другим нравится это.
  2. FractalizeR

    FractalizeR XenForo Addicted

    Регистрация:
    27.09.10
    Сообщения:
    1 085
    Симпатии:
    832
    Версия XF:
    1.3.2
    Отличное решение!
     
  3. CyberAP

    CyberAP Местный

    Регистрация:
    05.10.10
    Сообщения:
    2 604
    Симпатии:
    1 660
    Версия XF:
    1.5.10
    Было бы ещё круче если бы это был отдельный хак. А то при обновлени все изменения делать по-новой.
     
    Pavel нравится это.
  4. FrozenLord

    FrozenLord Местный

    Регистрация:
    15.11.10
    Сообщения:
    71
    Симпатии:
    101
    Мальца накосячил в адресе, путь xen\library\XenForo\Model\InlineMod
    а не xen\library\XenForo\Model\
     
  5. FractalizeR

    FractalizeR XenForo Addicted

    Регистрация:
    27.09.10
    Сообщения:
    1 085
    Симпатии:
    832
    Версия XF:
    1.3.2
    Можно, но придется заменять метод XenForo_Model_Thread::deleteThread() целиком. Это несколько чревато при обновлении в любом случае. Четко следить придется.
     
  6. TAIFUN

    TAIFUN Человек

    Регистрация:
    27.09.10
    Сообщения:
    2 258
    Симпатии:
    1 613
    Версия XF:
    1.5.23
    Хорошее решение! Спасибо
     
  7. FrozenLord

    FrozenLord Местный

    Регистрация:
    15.11.10
    Сообщения:
    71
    Симпатии:
    101
    Хаком конечно лучше. Но не факт что в след. апдейте обновится этот файл.
    Если же файл затрётся, а админ про "мод" забудет - последствий: 0
    А в плане нагрузка/полезность - само то.
     
  8. CyberAP

    CyberAP Местный

    Регистрация:
    05.10.10
    Сообщения:
    2 604
    Симпатии:
    1 660
    Версия XF:
    1.5.10
    То есть пока не существует способа дополнения своего кода к функциям xenforo кроме как полностью переписывания всего файла целиком?
     
  9. megavolt

    megavolt Местный

    Регистрация:
    31.10.10
    Сообщения:
    80
    Симпатии:
    49
    Класс....только-только корзину завел и о автоматизации задумывался!:)
     
  10. FrozenLord

    FrozenLord Местный

    Регистрация:
    15.11.10
    Сообщения:
    71
    Симпатии:
    101
    Немного подумал и понял. Данный способ будет отсылать темы только при удаление из списка тем. Надо ещё поковырять чтобы и аналогичные способы удаления тоже отправляли тему в корзину.
    Видимо xen\library\XenForo\Model\Thread.php так же надо будет добавить... Вечером приду потестирую.
     
  11. FrozenLord

    FrozenLord Местный

    Регистрация:
    15.11.10
    Сообщения:
    71
    Симпатии:
    101
    Добавление, теперь при удаление темы при просмотре самой темы. Тема так же улетает в корзину.
    * вроде всего 2 способа удалить тему..
     
  12. FractalizeR

    FractalizeR XenForo Addicted

    Регистрация:
    27.09.10
    Сообщения:
    1 085
    Симпатии:
    832
    Версия XF:
    1.3.2
    Не файла, а одного метода. Вы ведь наследуете свой класс от основного класса системы и можете переопределить только метод целиком
     
    CyberAP нравится это.
  13. arelav

    arelav Местный

    Регистрация:
    07.06.11
    Сообщения:
    166
    Симпатии:
    355
    Версия XF:
    1.1.0 Final
    Хотя тема давно не свежа, но я то только сейчас изучаю движок,
    вот и освежаю своими заметками... Может кому и пригодится...

    1.png

    Создание индивидуальной иконки для корзины...

    trash.png forum.png

    Добавить в EXTRA.CSS

    Код:
    /* Настраиваемые иконки trash */
    .node .node_ВАШ-ID-РАЗДЕЛА-КОРЗИЫНЫ  .forumNodeInfo .nodeIcon, .node .node_ВАШ-ID-РАЗДЕЛА-КОРЗИЫНЫ .categoryForumNodeInfo .nodeIcon {
        background: transparent url(@imagePath/xenforo/widgets/trash.png) -39px center no-repeat !important;
    }
    .node .node_ВАШ-ID-РАЗДЕЛА-КОРЗИЫНЫ .forumNodeInfo.unread .nodeIcon, .node .node_ВАШ-ID-РАЗДЕЛА-КОРЗИЫНЫ .categoryForumNodeInfo.unread .nodeIcon {
        background: transparent url(@imagePath/xenforo/widgets/trash.png) 2px center no-repeat !important;
    }
    ПЫСЫ: пути к картинкам могут отличаться, ну и не забудьте ИД раздела указать..
     
    Telia и Romchik® нравится это.
  14. hihi

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

    Регистрация:
    17.10.11
    Сообщения:
    28
    Симпатии:
    6
    Почему-то у меня не работает, или работает не так как нужно.
    PHP:
                $dw->setExtraData(XenForo_DataWriter_Discussion::DATA_DELETE_REASON$options['reason']);
                
    $dw->set('discussion_state''deleted');
                
    $dw->set('node_id''13');
                
    $dw->save();
    Вот такой код есть в обоих файлах.
    Как удалять чтобы в корзину перенеслось? С причиной?
    Какие настройки для раздела использовать? Такие нормально:?[​IMG]
    ссылка при редактировании раздела такого вида:
    /admin.php?nodes/13/edit
    правильное число же в файлах указал?
     
  15. hihi

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

    Регистрация:
    17.10.11
    Сообщения:
    28
    Симпатии:
    6
    Все починил, обновившись до 1.1.0 Beta 3.
     
  16. metallphilin

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

    Регистрация:
    20.12.11
    Сообщения:
    21
    Симпатии:
    3
    Версия XF:
    1.1.2
    да, у меня тоже не работает почему-то. сделал все как описано в первомсообщении.
     
  17. impas

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

    Регистрация:
    29.12.11
    Сообщения:
    4
    Симпатии:
    4
    Версия XF:
    1.1.1
    не работает
     
  18. grizone

    grizone Местный

    Регистрация:
    16.06.11
    Сообщения:
    189
    Симпатии:
    143
    Версия XF:
    1.1.4
    все работает )
    а вот можно такую же корзину сделать для удаленных топиков ?
    --- добавлено : 11 май 2012 в 03:49 ---
    Хм ) можно..
    в файлах library\XenForo\Model\Post.php и library\XenForo\Model\InlineMod\Post.php
    после
    PHP:
    $dw->set('message_state''deleted');
    добавляем
    PHP:
    $dw->set('thread_id''xxxxxx');
    где xxxxxx - id темы в которую будут помечаться мягко-удаленные посты.

    Было бы хорошо конечно если бы такие посты помечались откуда удалены были на случай если вернуть надо будет.
     
  19. Vladislav97

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

    Регистрация:
    01.01.12
    Сообщения:
    11
    Симпатии:
    1
    Версия XF:
    1.4.2
    У меня стоит 1.1.3,сделал всё как по инструкции,ничего не работает...
     
  20. Drelagas

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

    Регистрация:
    09.08.12
    Сообщения:
    12
    Симпатии:
    2
    Версия XF:
    1.1.3
    У меня тоже. Скорее всего они это делали на более старых версиях.

    Хотелось бы узнать, как сделать на новой версии. ;)
     

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