我正在为电子商务网站使用Drupal Commerce和Views。我有一个产品显示,我希望能够显示共享相同参考字段的相关产品,即共享同一商店的所有产品(假设存储在每个产品的“商店”字段下)。
我最大的问题是为我正在查看的产品提取某个字段值,以便我可以在视图中使用上下文过滤器进行过滤。
任何帮助都将不胜感激。
答案 0 :(得分:0)
以下是我发现有效的方法:
$nodeid = explode('/', request_uri());
$a = commerce_product_load_by_sku($nodeid[2]);
$b = get_object_vars($a);
$c = $product['commerce_store'][und][0][entity];
$d = get_object_vars($c);
$product2 = $d[store_id];
return $product2;
答案 1 :(得分:0)
这取决于您要提取特定字段值的位置。
e.g。如果要在节点模板中提取字段值,可以在node.tpl.php中打印出$ node变量,如下所示:
print "<pre>";
print_r($node);
print "<pre>";
exit();
以这种方式,您将在$ node对象中找到所有字段及其值。
如果您知道节点ID(nid),也可以在任何地方使用node_load()加载任何节点(例如,在您的模块或主题中或任何地方)。
获取nid的方法之一是使用arg()获取它,如下所示:
if (arg(0) == 'node') {
$nid = arg(1);
$node = node_load($nid);
}
使用它的字段和值获取整个节点的另一个好方法是menu_get_object() - 这将返回与当前显示的页面关联的对象。如果在Drupal显示页面example.com/node/1时执行代码,则menu_get_object()将返回节点ID等于1的节点的节点对象;如果显示的页面是example.com/user/1,则menu_get_object(&#39; user&#39;)将返回用户ID等于1的用户的用户对象。source
希望这些信息有用。