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

Php 变量($product.id_product)未传递给函数:((Prestahop),php,function,smarty,prestashop,Php,Function,Smarty,Prestashop,是在product-list.php中调用的函数 {mycat id_product_my=$product.id_product} 在此表单中,在上面写一行,变量$product.id\U product不会传递给函数: {$product.id_product} 将正确的结果作为id返回 {mycat id_product_my=15} 以id15的产品类别返回正确的结果 怎么了 -------------------------------------------- php函数: f

是在product-list.php中调用的函数

{mycat id_product_my=$product.id_product}
在此表单中,在上面写一行,变量$product.id\U product不会传递给函数:

{$product.id_product}
将正确的结果作为id返回

{mycat id_product_my=15}
以id15的产品类别返回正确的结果

怎么了

--------------------------------------------

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

我不知道我是否理解纠正你的问题

如果你想调用tpl文件中的函数,你必须这样调用:

{parameter1|functionName:parameter2:parameter3}

为什么它是一个编译器函数?只需将其设置为常规运行时函数。将函数名更改为smarty_function_mycat,保留相同的参数,将文件名更改为function.mycat.php


作为测试/调试事项,您可以在函数中使用var_dump$params来查看通过的$product.id_产品中的实际内容。

谢谢大家!有必要在smarty_函数上替换smarty_编译器_mycat。