在模板内创建新类别实例-prestashop 1.7

在模板内创建新类别实例-prestashop 1.7,prestashop,prestashop-1.7,Prestashop,Prestashop 1.7,我知道我可以在.tpl模板文件中使用category类方法,如下所示: {assign var='all_categories' value=Category::getCategories()} 但如何在模板内初始化类别对象呢?使\u构造函数运行 我之所以问这个问题,是因为当我尝试使用某些Category类函数时,会出现以下错误: Using $this when not in object context 没有办法通过tpl文件来实例一个类别,有些类别有一个公共静态方法来实现这一点,例如,

我知道我可以在
.tpl
模板文件中使用category类方法,如下所示:

{assign var='all_categories' value=Category::getCategories()}
但如何在模板内初始化类别对象呢?使
\u构造
函数运行

我之所以问这个问题,是因为当我尝试使用某些Category类函数时,会出现以下错误:

Using $this when not in object context

没有办法通过tpl文件来实例一个类别,有些类别有一个公共静态方法来实现这一点,例如,像
Db
类,这有一个名为
getInstance
,不幸的是默认情况下
类别中不存在任何类似的方法。您应该在php文件中对其进行实例,并发送给Smarty,或者通过添加对象来修改类:

publicstatic$instance=array()

方法是:

public static function getInstance($id_category)
{
    if (isset(self::$instance[$id_category])) {
        return self::$instance[$id_category];
    }

    return self::$instance[$id_category] = new Category($id_category);
}
现在,您可以在第三方物流中使用:

{assign var='category'value=category::getInstance(3)}