您好我已经在.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;
}
我想在.tpl文件中调用此函数。我使用{php} {/php}
方式,但这不起作用。
叫这个的方法是什么?
由于
答案 0 :(得分:5)
Smarty是一种模板语言 - 如果要输出函数的结果,请将输出分配给smarty变量
$smarty->assign('categories', getCategories($args));
然后在模板中使用它
{$categories}
极少数情况下这不是正确的模式。
答案 1 :(得分:4)
你可以使用这样的东西,我总是使用它
{category.id|function_name}
让我解释一下:
category.id =是您希望在函数
中获取信息的类别的IDfunction_name =是函数的名称
答案 2 :(得分:2)
因为您使用的是静态方法,所以您无法在函数中使用$ this关键字。因此,您将无法使用
$this->context->smarty->assign('categories', self::getCategories($args));
所以你应该创建一个变量并为其分配上下文,在你的情况下,你只需要它的智能部分。
$smarty = Context::getContext()->smarty;
现在你可以按如下方式使用它:
$smarty->assign('categories', self::getCategories($args));
我假设您将在同一个类中调用该函数,因此我使用 self :: getCategories($ args),如果您想在另一个类中使用它的className :: getCategories($参数)强>
希望这可以帮到你,尝试并给我反馈! ;)
答案 3 :(得分:0)
我同意亚当,尽管由于给定的架构,我在内部使用了智能手机
还有另一种方法:使用{insert}
- http://www.smarty.net/docs/en/language.function.insert.tpl