是在product-list.php。
中调用的函数{mycat id_product_my=$product.id_product}
在这种形式中,在上面写一行,variable($product.id_product)
不会传递给函数:
{$product.id_product}
将正确的结果作为id返回。
{mycat id_product_my=15}
将正确的结果作为id(15)的产品类别返回。
怎么了?
--------------------------------------------
php功能:
function smarty_compiler_mycat($params, &$smarty) {
$id_product_my = $params[‘id_product_my’];
$ret = “”;
if ($row = Db::getInstance(PS_USE_SQL_SLAVE)->ExecuteS(’
SELECT cl.`name` FROM `’.DB_PREFIX.‘category_lang` cl
LEFT JOIN `’.DB_PREFIX.‘category_product` cp ON cl.`id_category` = cp.`id_category`
WHERE cp.`id_product` = ‘.(int)$id_product_my) )
foreach ($row as $val) {
$ret .= $val[‘name’].” “;
}
return $ret;
}
答案 0 :(得分:0)
我不知道我理解你的错误!
如果你想在tpl文件中调用一个函数你必须这样调用:
{parameter1|functionName:parameter2:parameter3}
答案 1 :(得分:0)
为什么它是编译器功能?只需将其作为常规运行时函数即可。将函数名称更改为smarty_function_mycat
,保留相同的参数,将文件名更改为function.mycat.php
。
作为测试/调试的问题,你可以在函数中var_dump($params)
查看你传递的$product.id_product
中的实际内容。