XF 2.1 Передать собственную функцию в шаблон

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

Katsuro

Проверенные
Сообщения
144
Решения
1
Реакции
47
Баллы
1,730
Всем привет, прямо сейчас я приступил к созданию плагина и имею вопрос: как можно в шаблон передать какую-либо собственную функцию, чтобы в последующем его использовать внутри неё?
Ей так же буду отправлять динамические переменные, это тоже нужно учесть.
 
Последнее редактирование:
До сих пор всё сильно зависит от того, что вы хотите. Можно создать функцию шаблонизатора, можно добавить фильтр, можно создать функцию репозитория, или же достаточно добавить функцию в код сущности, которую вы будете передавать

Вот вам пример обработчика templater_setup, но бездумно копировать его не надо
PHP:
    public static function templaterSetup(\XF\Container $container, \XF\Template\Templater &$templater)
    {
        /** @var \XFRM\Template\TemplaterSetup $templaterSetup */
        $class = \XF::extendClass('XFRM\Template\TemplaterSetup');
        $templaterSetup = new $class();

        $templater->addFunction('resource_icon', [$templaterSetup, 'fnResourceIcon']);
    }

И вызываемый метод
PHP:
<?php

namespace XFRM\Template;

class TemplaterSetup
{
    public function fnResourceIcon($templater, &$escape, \XFRM\Entity\ResourceItem $resource, $size = 'm', $href = '')
    {
        $escape = false;

        if ($href)
        {
            $tag = 'a';
            $hrefAttr = 'href="' . htmlspecialchars($href) . '"';
        }
        else
        {
            $tag = 'span';
            $hrefAttr = '';
        }

        if (!$resource->icon_date)
        {
            return "<{$tag} {$hrefAttr} class=\"avatar avatar--{$size} avatar--resourceIconDefault\"><span></span><span class=\"u-srOnly\">" . \XF::phrase('xfrm_resource_icon') . "</span></{$tag}>";
        }
        else
        {
            $src = $resource->getIconUrl($size);

            return "<{$tag} {$hrefAttr} class=\"avatar avatar--{$size}\">"
                . '<img src="' . htmlspecialchars($src) . '" alt="' . htmlspecialchars($resource->title) . '" />'
                . "</{$tag}>";
        }
    }
}
 
Последнее редактирование:
Увы, что такие исполнители берут заказы, а заказчики потом получают некачественный продукт состоящий из говнокода и не пониманием движка. Благо если они ещё и получают, если не на половину рабочее кривая поделка.
 
Увы, что такие исполнители берут заказы, а заказчики потом получают некачественный продукт состоящий из говнокода и не пониманием движка. Благо если они ещё и получают, если не на половину рабочее кривая поделка.
А с чего вы взяли что я продаю данный продукт/делаю не для себя и практики?
 
Статус
В этой теме нельзя размещать новые ответы.
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу