Prestashop select 属性组合照片

Prestashop select attribute combination photos

简短版:我想获取分配给产品属性组的产品照片。 长版:我想通过创建一个自定义模块来完成该功能:在产品页面上,您可以通过从代表不同颜色的产品照片列表中选择产品颜色,就像这里一样: http://www.kupbuty.com/product-pol-6941-Komin-wzor-w-koleczka-SZ-MRA-110-Granat.html (很抱歉,它是抛光的,但我想你会明白的)。我已经完成了使用下面的代码获取具有不同颜色的产品的属性组(我获取了所有属性组,如果我还没有一个具有给定颜色名称的组,那么我将它添加到数组 $colors ):

$attr=$product->getAttributesGroups($this->context->language->id);
$colors=array();
$exists=array();
foreach ($attr as $key => $a) {
   if($a['id_attribute_group']==Configuration::get($this->name.'_attr_id'))
      {
         if(!in_array($a['attribute_name'], $exists))
         {
            $colors[]=$a;
            $exists[]=$a['attribute_name'];
         }
       }
}

现在我查看了产品 class,但我不明白如何获取与所选产品组关联的图像。我还打印了整个 $colors 内容,但我没有看到任何相关字段。 图像已正确分配给管理员中的属性组合。你能指出我的方向吗? 编辑:为了让自己更清楚 - 我想将产品的照片分配给特定的属性值 - 假设我有黑色或白色的鞋子,我想获得白鞋图像和黑鞋图像。属性按颜色和大小的组合(我想现在叫 "groups"?)进行组织,每个组合都有一组照片 - 我想访问此照片列表。

您不会在产品中找到任何有用的东西 class 因为在 Prestashop 上为属性值完成的属性-图像关联是以一种愚蠢而简单的方式完成的。 当您保存与属性关联的图像时,会在特定文件夹下创建一个图像文件

_THEME_COL_DIR_

无非是prestashop图片目录下的"co"子文件夹,名称文件为id_attribute,文件扩展名为jpg。

例如,如果您想查看 id_attribute 5 的图像,您会在以下位置找到它:_THEME_COL_DIR.$id_attribute.'jpg' => '/img/co/5.jpg';

通过这种方式,您将看到无论是在管理中还是在前端,每​​次必须显示属性的图像时,代码都直接放在模板中,而不涉及 Controller/Class 上的任何预处理.

例如在产品页面中,product.tpl 包含以下内容:

<a id="color_{$id_attribute|intval}" class="color_pick{if ($group.default == $id_attribute)} selected{/if}" style="background: {$colors.$id_attribute.value};" title="{$colors.$id_attribute.name}" onclick="colorPickerClick(this);getProductAttribute();{if $colors|@count > 0}$('#wrapResetImages').show('slow');{/if}">
        {if file_exists($col_img_dir|cat:$id_attribute|cat:'.jpg')}
        <img src="{$img_col_dir}{$id_attribute}.jpg" alt="{$colors.$id_attribute.name}" width="20" height="20" /><br>
        {/if} ... </a>

其中图像存在和 url 都是直接在模板中创建的,只需使用 img_col_dir 和 id_attribute