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

Posted

技术标签:

【中文标题】用于提取字段值的 Drupal 视图的 PHP 代码【英文标题】:PHP Code for Drupal Views to Extract Field Value 【发布时间】:2014-07-31 18:12:36 【问题描述】:

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

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

任何帮助将不胜感激。

【问题讨论】:

你是如何使用这个的?您想在同一页面上显示相关产品吗?您是否使用视图附件或面板将它们组合在一起? 嗨 Quint,假设我有一个带有 url 的页面:legacyfair.com/furniture/1406832236...I 希望能够在末尾提取数字并在数据库中搜索产品,然后从同一行抓取商店字段值。从那里我应该没问题,因为我正在使用视图并在商店中设置了上下文过滤器,所以一旦我返回商店字段值,它应该从那里非常简单。 【参考方案1】:

这是我发现的有效方法:

$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;

【讨论】:

【参考方案2】:

这取决于您要提取特定字段值的位置。

例如如果要提取节点模板中的字段值,可以在 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('user') 将返回用户 ID 等于 1 的用户的用户对象。source

希望这些信息会有所帮助。

【讨论】:

以上是关于用于提取字段值的 Drupal 视图的 PHP 代码的主要内容,如果未能解决你的问题,请参考以下文章

Drupal-如何使用 PHP 代码获取视图字段值?

使用自定义字段“PHP 代码”查看 Drupal 图像附加路径

用于 Drupal 视图主题的 PHP

用于 drupal 视图的自定义 page.tpl.php

Drupal,视图:标头不接受 PHP

Drupal 视图和暴露的过滤器下拉菜单