用于提取字段值的Drupal视图的PHP代码

时间:2014-07-31 18:12:37

标签: php drupal drupal-7

我正在为电子商务网站使用Drupal Commerce和Views。我有一个产品显示,我希望能够显示共享相同参考字段的相关产品,即共享同一商店的所有产品(假设存储在每个产品的“商店”字段下)。

我最大的问题是为我正在查看的产品提取某个字段值,以便我可以在视图中使用上下文过滤器进行过滤。

任何帮助都将不胜感激。

2 个答案:

答案 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

希望这些信息有用。