如何在smarty .tpl文件中调用php函数?

sri*_*inu 5 php smarty prestashop

嗨,我已经在.php文件中编写了一个函数.即

public static function getCategories($id_lang = false, $active = true, $order = true, $sql_filter = '', $sql_sort = '',$sql_limit = '')
{
    if (!Validate::isBool($active))
        die(Tools::displayError());

    $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('
        SELECT *
        FROM `'._DB_PREFIX_.'category` c
        LEFT JOIN `'._DB_PREFIX_.'category_lang` cl 
        ON c.`id_category` = cl.`id_category`
        WHERE 1 '.$sql_filter.' '.($id_lang ? 'AND `id_lang` = '.(int)($id_lang) : '').'
        '.($active ? 'AND `active` = 1' : '').'
        '.(!$id_lang ? 'GROUP BY c.id_category' : '').'
        '.($sql_sort != '' ? $sql_sort : 'ORDER BY c.`level_depth` ASC, c.`position` ASC').'
        '.($sql_limit != '' ? $sql_limit : '')
    );

    if (!$order)
        return $result;

    $categories = array();
    foreach ($result AS $row)
    {
        $categories[$row['id_parent']][$row['id_category']]['infos'] = $row;
    }
    return $categories;
}
Run Code Online (Sandbox Code Playgroud)

我想在.tpl文件中调用此函数.我习惯了{php} {/php},但这不起作用.叫这个的方法是什么?

谢谢

Ada*_*son 5

Smarty是一种模板语言 - 如果要输出函数的结果,请将输出分配给smarty变量

$smarty->assign('categories', getCategories($args));
Run Code Online (Sandbox Code Playgroud)

然后在模板中使用它

{$categories}
Run Code Online (Sandbox Code Playgroud)

很少有这种情况不是正确的模式.


小智 5

你可以使用这样的东西,我总是用它

{category.id|function_name}
Run Code Online (Sandbox Code Playgroud)

让我解释一下:

category.id = 是您想要在函数中获取信息的类别的 id

function_name = 是函数名