【发布时间】:2014-03-12 17:58:35
【问题描述】:
我正在创建自定义电子邮件,以发送给希望与他人共享购物车的客户。到目前为止,我有每个产品的数量、SKU、价格、路径(节点/XYZ)和标题。我在电子邮件中需要的最后一项是产品的图像路径。
我找到了以下所有其他信息:
$order = commerce_cart_order_load($user->uid);
foreach($wrapper->commerce_line_items as $d => $line_item_wrapper) {
$sku = $line_item_wrapper->line_item_label->value();
//...
打印出以下内容,我可以看到包装对象的受保护“数据”属性:
print_r($line_item_wrapper->commerce_product);
然后,我尝试使用以下内容查找 field_image 属性的 getter 方法:
print_r($line_item_wrapper->commerce_product->getPropertyInfo('field_image');
我最终得到了一个看似无用的 getter 函数 entity_metadata_field_verbatim_get`,因为我不知道要传递什么参数。此外,在上面的最后一个打印语句中,我没有看到任何其他有价值的东西。
我想知道是否需要查询这些数据,以及要查询哪些表/列?或者也许使用node_load之类的东西?但是,我发现从订单项包装器中找到 nid 并不容易。
【问题讨论】:
-
如果没记错的话,您应该能够(例如)获得带有
$line_item_wrapper->commerce_product->field_image->uri->value())的URI。如果图像字段附加了文件,您至少应该有一个文件 ID (fid)$line_item_wrapper->commerce_product->field_image->raw(),然后您可以从那里使用file_load() -
提供的第一个代码示例产生了错误,因为 field_image 没有
->uri属性。一旦我从field_image获得了值,我就不得不深入到一个数组中。 -
没有
uri属性,但通常实体模块会自动将图像字段扩展为等效的文件实体,因此可以直接访问其属性/字段。如果这不起作用,则可能表明某些设置不正确