Prestashop 1.7注册Smarty相关产品标签

时间:2018-09-19 06:52:10

标签: php prestashop smarty

简介

我需要在与prestashop的授权不同的地方展示产品的相关产品(但是,主题必须能够显示prestashop的默认相关产品图块)。

我对此进行了很多搜索,我所能找到的只是模块, <1.6 version 的教程等。

我正在使用 1.7.2 ,这些示例对我不起作用。

我的期望

注册一些聪明的人,以便在之后和任何地方使用它,以显示(我个人想要)相关产品的产品属性。<​​/ p>

例如

{$product.id.accessory.reference}{$product.id.accessory.image}

与名称,描述和价格相同。

我想可能是

{foreach $accessory ...}
{$accessory.name}
{$accessory.price}
{/foreach}

对于某些产品,我只会有一个相关的产品,但是我想保留一个多引用的产品代码,以确保它对每个人都有用。

我很惊讶prestashop具有这种功能,但是默认情况下它显示在单个位置(如果处于活动状态),并且我没有找到任何标签将其应用于另一个位置。使用{debug},我在任何地方都看不到附件,附件或相关内容。

重点是,我们需要一些步骤来实现它,我真诚地不知道prestashop的核心,也不知道它如何处理smarty或数据库。我想为一家自定义商店编写代码,但这是我现在正在工作的地方...

我尝试了这个答案,但无法达到预期的效果: Prestashop: How to get accessories for product

任何帮助都会很棒,谢谢!

*编辑*

我尝试通过聪明的{Product::getAccessoriesLight(intval($cookie->id_lang), $product.id)}

访问公共静态功能

如果我var_dump它:

{Product::getAccessoriesLight(intval($cookie->id_lang), $product.id)|@var_dump}

我得到:

array(1){[0] => array(3){[“ id_product”] =>字符串(3)“ 963” [“ reference”] =>字符串(15)“ CFPS SAH0-M11-L “ [” name“] => NULL}}

因此,它用于获取产品ID和参考,而不使用名称(不知道为什么)。我将尝试另一个功能,然后尝试发现如何显示单个值。

1 个答案:

答案 0 :(得分:0)

** 已解决 **

prestashop返回对象数组或带有数组的对象。有时只有一个位置的数组,这个位置也是一个数组。 Smarty根据情况处理从位置1开始的数组。从逻辑上来说,这一切都有些混乱。

我做了什么:

创建一个公共静态方法来访问非静态方法(示例1),或者创建一个静态方法来查询某些事物并获取结果(在这种情况下,使用executeS您将像示例2一样接收批量数据:

{assign var=foo value=Product::getSomethingNew($product.id)}

返回

Object(Product)->values|attrArray->values

在这种情况下,您可以先执行{$foo.value}{assign var=data value=$foo->attrArray}然后执行{$data.value}

在第二种情况下,您将获得:

Array[1]->array[data] so you can simply: {$foo[1].value}

很明显,当您创建自己的访问数据的方法时,它可以在您需要的任何地方工作。

我没有发现逻辑或某些数组在0索引处为null的逻辑或原因,但是从索引1开始具有其他值,而其他数组通常从索引0开始,但是...我在product对象上获得了不同的属性值相同的ID,所以我不介意在prestashop上进行过多调查。看来一个学校项目做得太过分了...

希望它可以帮助某人。