用于提取字段值的 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 代码的主要内容,如果未能解决你的问题,请参考以下文章