0

是在 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) 的产品类别返回正确的结果。

怎么了?

———————————————————————————————————————————————</p>

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

2 回答 2

0

我不知道我理解正确你的问题!

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

{parameter1|functionName:parameter2:parameter3}
于 2011-05-01T13:17:13.303 回答
0

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

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

于 2011-05-01T13:17:18.487 回答