我正在制作自定义电子邮件,以便发送给希望与他人分享购物车的客户。到目前为止,我有每个产品的数量,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并不容易。
答案 0 :(得分:0)
我能用这段代码解决上述问题:
$order = commerce_cart_order_load($user->uid);
$wrapper = entity_metadata_wrapper('commerce_order', $order);
$result = array();
foreach($wrapper->commerce_line_items as $d => $line_item_wrapper) {
$product = array();
$product['quantity'] = $line_item_wrapper->quantity->value();
$product['sku'] = $line_item_wrapper->line_item_label->value();
$product['path'] = $line_item_wrapper->commerce_display_path->value();
$product['price'] = $line_item_wrapper->commerce_unit_price->amount->value();
$product['title'] = $line_item_wrapper->commerce_product->title->value();
$product['image'] = $line_item_wrapper->commerce_product->field_image->value();
$product['image'] = $product['image'][0]['filename'];
array_push($result, $product);
}
我不得不说,找到所有这些离散函数非常困难。我没有找到任何关于Drupal Commerce metadata_wrappers的 clear 文档。如果有人能提供进一步的信息,我很乐意看看。
一般来说,我使用了很多print_r();
来查找这些值。