变量($ product.id_product)未传递给函数:((Prestashop)

时间:2011-05-01 13:01:18

标签: php function smarty prestashop

是在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;
}

2 个答案:

答案 0 :(得分:0)

我不知道我理解你的错误!

如果你想在tpl文件中调用一个函数你必须这样调用:

{parameter1|functionName:parameter2:parameter3}

答案 1 :(得分:0)

为什么它是编译器功能?只需将其作为常规运行时函数即可。将函数名称更改为smarty_function_mycat,保留相同的参数,将文件名更改为function.mycat.php

作为测试/调试的问题,你可以在函数中var_dump($params)查看你传递的$product.id_product中的实际内容。