如何在prestashop tpl文件中调用函数

时间:2017-06-27 09:14:45

标签: php function smarty prestashop

我有Prestashop 1.6。在classes / Product.php中有一个函数,例如:

  • getImages
  • getFeatures

我想在我的TPL文件中从getImages函数返回日期。怎么做 ?下面我写这个函数的所有代码:

/**
* Get product images and legends
*
* @param int $id_lang Language id for multilingual legends
* @return array Product images and legends
*/
public function getImages($id_lang, Context $context = null)
{
    return Db::getInstance()->executeS('
        SELECT image_shop.`cover`, i.`id_image`, il.`legend`, i.`position`
        FROM `'._DB_PREFIX_.'image` i
        '.Shop::addSqlAssociation('image', 'i').'
        LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)$id_lang.')
        WHERE i.`id_product` = '.(int)$this->id.'
        ORDER BY `position`'
    );
}

感谢您的帮助。亲切的问候。

1 个答案:

答案 0 :(得分:1)

按照您的示例:使用Prestashop所基于的MVC架构,现在您拥有:

  • 模型 - > Product.php,它是选择所需值的函数。
  • 视图 - > TPL文件是否要显示此值。

因此,您需要Controller,负责从模型接收数据,准备它(如果有必要)并将此数据发送到模板。

然后,您现在需要转到controllers / front文件夹中的ProductController.php。

在控制器中,我们有一个名为initContent()的函数,她的函数是什么创建的,并将值分配给将在模板中使用的变量。

因此,您需要创建一个新的分配:

$this->context->smarty->assign('images_ex', $this->product->getImages((int)$this->context->cookie->id_lang));

现在,您可以在product.tpl中使用变量 {$ images_ex} ,该变量位于已激活的主题根文件夹中。

希望它对你有所帮助。