XF 2.1 php внутри html страницы

Версия XenForo
2.1.9

Myskat

Проверенные
Сообщения
9
Реакции
1
Баллы
30
Здравствуйте, помогите пожалуйста с интеграцией php в код отдельной Html страницы.
Создаю страницу, вставляю Html код, а php внутри этого кода перестаёт работать. Как его завести?
Самостоятельно много чего здесь перепробовал, но так и не добился результата.

2020-12-23_17-55-51.jpg
Как я понимаю здесь надо указывать свои php скрипты, и потом вставлять в код страницы определённые строчки интеграции. Но я только начал разбираться и не знаю/не могу всё последовательно правильно выполнить. Может кто ни будь опишет пошаговый алгоритм от создания страницы, до вывода данных при помощи php вставок?
 
Последнее редактирование:
Решение
Вы можете модифицировать ответ или заменить его, но при последнем нужно будет вернуть объект \XF\Mvc\Reply\AbstractReply.
Для обратного вызова нужна статическая функция, которая принимает два параметра: \XF\Pub\Controller\AbstractController $controller и \XF\Mvc\Reply\AbstractReply &$reply

Например, можно добавить свои данные в шаблон страницы.
В качестве html-шаблона используем это:
HTML:
{$myVar}
А в классе обратного вызова добавим в ответ эту переменную:
PHP:
<?php

namespace LT\Test;

class PageCallback
{
    public static function callback(\XF\Pub\Controller\AbstractController $controller, \XF\Mvc\Reply\AbstractReply &$reply)
    {
        $reply->setParam('myVar', 'Hello, ' . (\XF::visitor()->user_id ...
Вы можете модифицировать ответ или заменить его, но при последнем нужно будет вернуть объект \XF\Mvc\Reply\AbstractReply.
Для обратного вызова нужна статическая функция, которая принимает два параметра: \XF\Pub\Controller\AbstractController $controller и \XF\Mvc\Reply\AbstractReply &$reply

Например, можно добавить свои данные в шаблон страницы.
В качестве html-шаблона используем это:
HTML:
{$myVar}
А в классе обратного вызова добавим в ответ эту переменную:
PHP:
<?php

namespace LT\Test;

class PageCallback
{
    public static function callback(\XF\Pub\Controller\AbstractController $controller, \XF\Mvc\Reply\AbstractReply &$reply)
    {
        $reply->setParam('myVar', 'Hello, ' . (\XF::visitor()->user_id ? \XF::visitor()->username : \XF::phrase('guest')));
    }
}
В итоге на странице получаем подобное:
1608735838211.png

В остальном — , только вместо $this у Вас будет $controller, думаю понятно, почему.
 
Последнее редактирование:
Вы можете модифицировать ответ или заменить его, но при последнем нужно будет вернуть объект \XF\Mvc\Reply\AbstractReply.
Для обратного вызова нужна статическая функция, которая принимает два параметра: \XF\Pub\Controller\AbstractController $controller и \XF\Mvc\Reply\AbstractReply &$reply

Например, можно добавить свои данные в шаблон страницы.
В качестве html-шаблона используем это:
HTML:
{$myVar}
А в классе обратного вызова добавим в ответ эту переменную:
PHP:
<?php

namespace LT\Test;

class PageCallback
{
    public static function callback(\XF\Pub\Controller\AbstractController $controller, \XF\Mvc\Reply\AbstractReply &$reply)
    {
        $reply->setParam('myVar', 'Hello, ' . (\XF::visitor()->user_id ? \XF::visitor()->username : \XF::phrase('guest')));
    }
}
В итоге на странице получаем подобное:
Посмотреть вложение 123788

В остальном — , только вместо $this у Вас будет $controller, думаю понятно, почему.
Благодарю! Буду пробовать

Atikin
Как то не особо успешно получается. Запутался в путях и папках.
Помогите пожалуйста с явными указаниями, что куда прописывать.
1. {$myVar} заносим в поле HTML-код шаблона, при создании страницы.
2. Куда (точный путь и расположение внутри страницы) закидываем PHP код?
3. Что прописываем(конкретно) в PHP-обработчик? Класс - ? Метод - ?
Прошу прощения за настойчивость, честно пробовал самостоятельно, но самое успешное что выходило, это ошибка

Упс! Мы столкнулись с некоторыми проблемами.​

Просто нужен один успешный пример, потом уже смогу моделировать.

Заранее благодарю!
 
Последнее редактирование модератором:
1. {$myVar} заносим в поле HTML-код шаблона, при создании страницы.
В соответствующее поле при редактировании узла:
1608744925230.png
2. Куда (точный путь) закидываем PHP код?
Создайте папку в src/addons, туда кидайте. При этом namespace LT\Test; измените под Ваше название папки (в моем случае была папка src/addons/LT/Test).
3. Что прописываем(конкретно) в PHP-обработчик? Класс - ? Метод - ?
Класс и метод? ?
Класс — namespace + имя класса, метод — метод класса (функция), который будет вызван.
 

Вложения

  • 1608745320162.png
    1608745320162.png
    247 KB · Просмотры: 42
Atikin
Привет. Так и не получилось, не могу понять что не так.
2020-12-24_18-34-35.jpg
PHP:
<?php

namespace LT\Test;

class PageCallback extends \XF\Pub\Controller\AbstractController
{
    public static function callback(\XF\Pub\Controller\AbstractController $controller, \XF\Mvc\Reply\AbstractReply &$reply)
    {
        $reply->setParam('myVar', 'Hello, ' . (\XF::visitor()->user_id ? \XF::visitor()->username : \XF::phrase('guest')));
      
    }
  
}
2020-12-24_18-37-10.jpg
2020-12-24_18-38-32.jpg
Что я сделал не так или упустил?
 
Последнее редактирование:
Myskat, Test — это тоже папка. Имя файла должно быть PageCallback и он должен лежать в этой же папке.

По сути в LT/Test LT — вендор («идентификатор разработчика»), а Test — название плагина, но в данном случае тут просто классы.
 
Myskat, Test — это тоже папка. Имя файла должно быть PageCallback и он должен лежать в этой же папке.

По сути в LT/Test LT — вендор («идентификатор разработчика»), а Test — название плагина, но в данном случае тут просто классы.
Шикарно, получилось! Это я и не понял сначала)
Благодарю!
 
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу