Переменная ($ product.id_product) не передается в функцию :( (Prestahop) - PullRequest
0 голосов
/ 01 мая 2011

Это функция, которая вызывается в product-list.php.

{mycat id_product_my=$product.id_product}

В этой форме напишите строку выше, variable($product.id_product) не передается функции:

{$product.id_product}

возвращает правильный результат как идентификатор.

{mycat id_product_my=15}

возвращает правильный результат как категории продукта с идентификатором (15).

Что не так?

———————————————————————————————————————————

php funct:

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 голосов
/ 01 мая 2011

Почему это функция компилятора?Просто сделайте это обычной функцией времени выполнения.Измените имя функции на smarty_function_mycat, оставьте те же аргументы, измените имя файла на function.mycat.php.

. В качестве теста / отладки вы могли бы var_dump($params) внутри функции увидеть, что на самом деле$product.id_product Вы проходите.

0 голосов
/ 01 мая 2011

Я не знаю, правильно ли я понимаю ваш вопрос!

если вы хотите вызвать функцию в файле tpl, вы должны вызвать так:

{parameter1|functionName:parameter2:parameter3}
...