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

Пишем первый аддон для XenForo. MVC, шаблоны, стили, настройки, навигация — используем все!

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

Загрузка
  1. gunpowder

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

    Регистрация:
    17.09.13
    Сообщения:
    116
    Симпатии:
    1
    Версия XF:
    1.2.1
    Вроде разобрался как это делается только с подключением обработчика события LoadClassModel- Модели что-то не очень там выходит:

    Cannot modify header information - headers already sent by (output started at /opt/lampp/htdocs/xf/library/XXX/Listener/LoadClassModel.php:1)16 мин. назад- library/XenForo/CssOutput.php:573

    Следующие ошибки в журнале и CSS видимо не подгружается как надо. Ну наврядли здесь уже кто-то мне сможет сказать в чем причина...

    Подключаю так как нужно использовать (подменить) пару ф-ий из Model.
     
  2. Yoskaldyr

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

    Регистрация:
    27.09.10
    Сообщения:
    1 921
    Симпатии:
    1 163
    Версия XF:
    1.0.4
    В начале файла с классом до открывающего <?php тега скорее всего лишний мусор, например BOM или пробел/перенос
     
  3. gunpowder

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

    Регистрация:
    17.09.13
    Сообщения:
    116
    Симпатии:
    1
    Версия XF:
    1.2.1
    Действительно был пробел - убрал. Еще одна проблема появилась только,


    Fatal error: Call to undefined method XXX::arrayColumn() in /opt/lampp/htdocs/xf/library/XenForo/Model/Thread.php on line 634

    По строке 634 идет вызов $this->arrayColumn() , который почему обращается к допиленному классу, а не к своему,т.е. соотвественно и этот метод не описан нигде в эддоне. Классы вроде закрыты {} все ровно.

    P.S> Хотя нет ,все ок. Я видимо что-то там намудрил..
     
    Последнее редактирование: 15.04.2015
  4. AfterWork

    AfterWork Местный

    Регистрация:
    14.04.15
    Сообщения:
    49
    Симпатии:
    0
    Версия XF:
    1.5.10
    Не сочтите за идиота, я не справился. Я конечно полный профан в php, но для меня было неожиданно что после выполнения описанного в статье буквально по шагам, на только что установленной чистой ксенфоро 1.3.4 получу такой результат:

    Информация об ошибке
    XenForo_Exception: Invalid model 'LikeReviewRus_Model_LikeReview' specified - library/XenForo/Model.php:192
    Сгенерирована пользователем: Неизвестная учётная запись, 13 мин. назад
    Трассировка стэка
    #0 /usr/share/nginx/html/forum/library/XenForo/Controller.php(101): XenForo_Model::create('LikeReviewRus_M...')
    #1 /usr/share/nginx/html/forum/library/LikeReviewRus/ControllerPublic/Index.php(23): XenForo_Controller->getModelFromCache('LikeReviewRus_M...')
    #2 /usr/share/nginx/html/forum/library/LikeReviewRus/ControllerPublic/Index.php(9): LikeReviewRus_ControllerPublic_Index->_getLikeReviewModel()
    #3 /usr/share/nginx/html/forum/library/XenForo/FrontController.php(347): LikeReviewRus_ControllerPublic_Index->actionIndex()
    #4 /usr/share/nginx/html/forum/library/XenForo/FrontController.php(134): XenForo_FrontController->dispatch(Object(XenForo_RouteMatch))
    #5 /usr/share/nginx/html/forum/index.php(13): XenForo_FrontController->run()
    #6 {main}
    Содержимое запроса
    array(3) {
    ["url"] => string(49) "http://www.abcd.ru/forum/index.php?likes-review/"
    ["_GET"] => array(1) {
    ["likes-review/"] => string(0) ""
    }
    ["_POST"] => array(0) {
    }
    }
    ==============================
    Надо отметить что до проверки на чистой инсталиции я дошел не с первой попытки. Были и другие попытки на рабочем форуме.
    Если не трудно ткните носом. Можно буквально. Заранее благодарен.
     
  5. akinak

    akinak Местный

    Регистрация:
    12.02.13
    Сообщения:
    259
    Симпатии:
    243
    Версия XF:
    1.1.3
    Скорее всего нет файла LikeReviewRus/Model/LikeReview.php
    Или он по другому пути. Или регистр другой.
    Еще вариант, файл есть, но класс в нем как-то по другому назван. Часто там буква маленькая или опечатка в имени класса. Должен быть LikeReviewRus_Model_LikeReview
     
  6. Prytny

    Prytny Местный

    Регистрация:
    10.03.11
    Сообщения:
    35
    Симпатии:
    20
    Так и не понял, что нужно сделать, чтобы вырезать ВВкод. Например, в шаблоне я вставил {xen:helper wordTrim, $post.message, 50}, он выводит сообщение с ВВкодом. Что нужно вписать, какую переменную или условие, чтобы выводить только текст?
     
  7. Yoskaldyr

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

    Регистрация:
    27.09.10
    Сообщения:
    1 921
    Симпатии:
    1 163
    Версия XF:
    1.0.4
    Если надо просто убрать ббкоды
    Код:
    {xen:helper snippet, $post.message, 50, {xen:array 'stripQuote=1'}}
    
    если в дополнение к этому надо переводы строк преобразовать в <br>
    Код:
    {xen:helper bodyText, {xen:helper snippet, $post.message, 50, {xen:array 'stripQuote=1'}}}
    
     
    Mirovinger, SAS1024 и Prytny нравится это.
  8. Prytny

    Prytny Местный

    Регистрация:
    10.03.11
    Сообщения:
    35
    Симпатии:
    20
    Проверил, - работает и первый и второй вариант!!! - Супер!!!
     
    Последнее редактирование: 21.07.2015
  9. Vulnes

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

    Регистрация:
    28.03.15
    Сообщения:
    16
    Симпатии:
    1
    Версия XF:
    1.4.5
    Как тут принять $_GET ?
     
  10. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    В контроллере входящие параметры принимаются таким методом:
    PHP:
    $value $this->_input->filterSingle('argument',XenForo_Input::UINT);
    Не важно, как был передан параметр (через GET или через POST). Естественно, что аргументы не обязательно должны быть целочисленными переменными. Соответственно, меняете тип на любой соответствующий.
    Самостоятельно разбирать массивы $_GET и $_POST не советую, так как штатные функции это делают безопасно.
    Если нужно принять сразу несколько параметров, то лучше это делать скопом следующим образом:
    PHP:
    $input_data $this->_input->filter(array(
       
    'argument1' => XenForo_Input::UINT,
       
    'argument2' => XenForo_Input::STRING,
       
    'argument3' => XenForo_Input::ARRAY_SIMPLE
       
    )
    );
    В этом случае в массиве $input_data будет примерно следующее:
    PHP:
    $input_data = array(
       
    'argument1' => 0,
       
    'argument2' => 'строка',
       
    'argument3' => array()
    );
     
    Vulnes нравится это.
  11. Vulnes

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

    Регистрация:
    28.03.15
    Сообщения:
    16
    Симпатии:
    1
    Версия XF:
    1.4.5
    Спасибо , добрый дяденька )
     
  12. Xiri

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

    Регистрация:
    06.01.17
    Сообщения:
    10
    Симпатии:
    1
    Большое спасибо за статью. Осталось несколько непонятых моментов: при добавлении аддона, он запускается у меня по ссылке localhost/xenforo/index.php/likes-review, а не как написано в статье localhost/xenforo/likes-review. По идее, ссылка localhost/xenforo/likes-review и не может запуститься, если только в корневом каталоге xenforo не создан файл likes-review.php. Ведь чтобы запустить роутер нужно сначала запустить некий php-файл, который вызовет автолоадер и загрузит контроллер. Такого файла у меня не создалось, это правильно или нет?
     
  13. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Без index.php - это с включенным ЧПУ. Для такого режима веб-сервер должен быть настроен, а также в XenForo должен быть включен данный режим. Дополнительных файлов никаких не нужно.
     
  14. Xiri

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

    Регистрация:
    06.01.17
    Сообщения:
    10
    Симпатии:
    1
    Спасибо, что помогли разобраться! Тут как раз наш добрый автор поста про это рассказывает Правила для работы ЧПУ в XenForo под Nginx :thumbsup:

    А еще лучше вот тут посмотреть: Friendly URLs | XenForo
    Потому что настройка зависит от системы, у меня просто mac без Nginx, поэтому подходит описание из раздела Apache.
     
    Последнее редактирование: 08.01.2017

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