是在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;
}发布于 2011-05-01 21:17:13
我不知道我是否明白纠正你的问题!
如果你想调用tpl文件中的一个函数,你必须像这样调用:
{parameter1|functionName:parameter2:parameter3}发布于 2011-05-01 21:17:18
为什么它是一个编译器函数?只需将其设置为常规运行时函数即可。将函数名改为smarty_function_mycat,保持参数不变,将文件名改为function.mycat.php。
作为测试/调试的一个问题,您可以在函数内执行var_dump($params),以查看您传递的$product.id_product中实际包含的内容。
https://stackoverflow.com/questions/5848502
复制相似问题