访问者在Ubercart中进行属性选择时更改产品图像

时间:2010-07-30 15:24:21

标签: php drupal drupal-6 drupal-modules ubercart

当前设置

商店中的每件商品都有多张图片。当访问者访问产品页面时,他们会看到主图像和一系列缩略图(视图)。当他们点击缩略图时,图像会立即显示在主图像区域中。

每个产品还有一个属性选择下拉列表,例如“Color”。

Drupal / Ubercart配置

我正在使用Drupal 6.有一个Product内容类型,其中包含文件类型的自定义图像字段。此图像字段接受多个值(即多个图像)。

然后我使用视图(视图模块)显示一系列缩略图和javascript,以便在点击缩略图时更改主图像。

我想要实现的目标

除了缩略图之外,我想要的是当访问者从颜色属性下拉列表中选择颜色选项时,将显示其中一个可用图像(基本上是与颜色选择匹配的颜色)。

我看过的内容

我知道Ubercart Option Image但是这会强制您为每个属性上传新图片,而不是每个产品。例如,属性 color 用于所有共享相同颜色的多个不同产品。

使用选项图像模块,所有共享相同属性的产品将显示相同的图像。所以这是不行的。

此外,我不想上传新图像,我希望能够使用产品节点中的一个现有图像。

2 个答案:

答案 0 :(得分:2)

这应该是可能的,但有点迂回。也许以下方法值得痛苦?

  1. 创建新的内容类型。称之为ImagefieldAttribute。让该内容类型存储无限数量的图像字段。还将ImagefieldAttribute内容类型与名为attribute的分类词汇表相关联。基本上,ImagefieldAttribute内容类型将存储具有相同属性的所有产品图像

  2. 现在,在“产品”内容类型中创建节点引用字段。 nodereference字段仅链接​​到ImagefieldAttribute内容类型。 (编辑:确保nodereference字段可以具有无限数量的节点引用。这样您就可以引用任意数量的ImageFieldAttribute内容类型 - 每个类型包含具有特定属性的所有图像)

  3. 您需要更改视图和缩略图,以反映产品内容类型中的其他间接级别。如果您对视图有经验,那么您只需将其视为创建视图关系的案例。

  4. 您还应该能够创建公开的过滤器。请注意,您需要再次使用关系,因为过滤器将位于ImagefieldAttribute内容类型中(您将使用nodereference关系获得)。您可以限制将显示的属性(例如,如果任何项目中没有黄色),您不应该在下拉列表中显示黄色。您可以使用http://drupal.org/project/views_taxonomy_selective_filter模块实现此目的。

  5. 每次都必须创建一个ImagefieldAttribute,然后将节点引用到您的产品,这可能会很繁琐。使用http://drupal.org/project/popups_reference

  6. 可以轻松完成此操作

    显然我没有尝试过,所以你可能会遇到无法预料的问题。没有属性的分类词汇表而只是CCK选择列表也许是一个好主意。但是,视图分类选择性过滤器随后不起作用。

答案 1 :(得分:1)

如果我理解你想要完成的事情,我在http://homespun-at-heart.com/product/gracie做了类似的事情。我做的是简单地自定义option_images模块的javascript和预加载功能来更新主产品图像,而不是默认情况下更新option_image的图像。

我所做的一个主要缺点是重复的图像存储在服务器上的两个位置,因此单独下载。这是一个按预算完成的小项目,所以我没有时间投入时间来“正确”地做到这一点。但是,如果这就是你所需要的......那就有用了!

在此网站上,我们不会将多个图像直接附加到产品,而是使用选项图像模块将其附加到属性。编写一些js也不需要花费大量的工作,以便在点击缩略图时更新颜色选择。

更新1:
我不确定你愿意为这个项目投入多少钱,但正如我已经考虑过这一点,在我看来你需要的是指定哪些属性选项适用于哪些图片。我想象的是,当您在产品上传图像时,您可以进行这些选择。

然后,当访问者选择附加到图像的选项或单击缩略图时,选项会更新。

我还没想过它足够长时间来可视化界面。也许你的其他一些要求会决定这一点。

更新2:
在您的评论如下,这里有一些更多的建议。

在您产品的编辑/选项屏幕上,您可以使用下拉列表选择适用于哪些特定选项的图像。这样您就可以解决将图片多次上传到服务器的问题。

要实现这一点,需要大量工作,并且可能需要另外一个表或至少添加到uc_product_options表中的字段来存储产品和图像之间的关系。我会使用uc_option_image模块作为起点。它会为你完成所需的工作提供很多指导。

我所做的是为了克服将属性附加到多个产品的问题,我的客户将所有可能的颜色放在属性上,然后他们只选择适用于特定产品的颜色。我们考虑但被否决的另一个选择是设置许多不同的属性,这些属性大致对应于每个不同的产品。我忘记了我们没有走这条路的所有原因,但有些原因非常明显。 : - )