XF 2.2 Как добавить свою переменную в шаблон Xenforo

Статус
В этой теме нельзя размещать новые ответы.
Версия XenForo
2.2.2

foxlye

Проверенные
Сообщения
33
Реакции
-3
Баллы
705
В шаблонах xenforo используются переменные по типу: {$xf.visitor.username}.
Как и где мне добавить свою переменную (например: {$test.days.prd1}) и где задать ей значение?
 
Решение
Для пользовательских контроллеров:
Если расширяется контроллер — получать его ответ через parent, если вернулся объект XF\Mvc\Reply\View, пихать свои переменные через функцию setParams.
PHP:
public function actionTest()
{
    $reply = parent::actionTest();
   
    $reply->setParams([
        'test' => 'value'
    ]);
   
    return $reply;
}
Если нужно добавить переменную глобально — обработчиком событий слушать templater_global_data и вставлять туда свои данные.
PHP:
public static function templaterGlobalData(\XF\App $app, array &$data, $reply)
{
    $data['test'] => 'value';
}
В нужном вам контроллере добавляются переменные. Так что вы бы лучше подробнее описали, что вам требуется
Мне нужно добавить возможность использоваться свою переменную в шаблоне, например {$test.days.prd1}
И задать ей значение где-нибудь в PHP коде.
А можете подсказать, в каком контроллере, и где он находится ?
 
Для пользовательских контроллеров:
Если расширяется контроллер — получать его ответ через parent, если вернулся объект XF\Mvc\Reply\View, пихать свои переменные через функцию setParams.
PHP:
public function actionTest()
{
    $reply = parent::actionTest();
   
    $reply->setParams([
        'test' => 'value'
    ]);
   
    return $reply;
}
Если нужно добавить переменную глобально — обработчиком событий слушать templater_global_data и вставлять туда свои данные.
PHP:
public static function templaterGlobalData(\XF\App $app, array &$data, $reply)
{
    $data['test'] => 'value';
}
 
Для пользовательских контроллеров:
Если расширяется контроллер — получать его ответ через parent, если вернулся объект XF\Mvc\Reply\View, пихать свои переменные через функцию setParams.
PHP:
public function actionTest()
{
    $reply = parent::actionTest();
  
    $reply->setParams([
        'test' => 'value'
    ]);
  
    return $reply;
}
Если нужно добавить переменную глобально — обработчиком событий слушать templater_global_data и вставлять туда свои данные.
PHP:
public static function templaterGlobalData(\XF\App $app, array &$data, $reply)
{
    $data['test'] => 'value';
}
Если честно, не понял что, куда писать.
Можно как для гомункула объяснить ?)
 
foxlye,
 
Статус
В этой теме нельзя размещать новые ответы.
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу