Drupal 7:从特征/模块的自定义内容类型字段中检索数据

时间:2016-08-02 21:43:09

标签: php drupal drupal-7 drupal-modules

提前感谢您的帮助!我有一个名为" Gear Post"的自定义内容类型。我的Drupal项目允许我查看自行车装备。 Gear Post有一个名为" weight"对于项目的重量。我正在尝试编写我自己的模块aka功能,允许用户计算在网站上存储为Gear Posts的所有齿轮项目的重量。我很难获得齿轮柱的重量属性。

这是我到目前为止所做的: (.module文件)

<?php
 function get_content_fields_array() {
 $list = node_type_get_names(); //just for info
 echo $list['gear_post']; //this correctly gets 'Gear Post'
 $field_list = field_info_instances('node', 'gear_post');

 $allFieldKeys = array_keys($field_list);
 echo ($allFieldKeys[4]); //'field_weight'

???

我尝试使用array_keys,因为当我通过var_dump输出时,我发现很难读取关联数组。

我希望能够做的是拥有所有权重的数组,以便我可以迭代它们并显示它们,然后将它们用于我的数学运算。但是我不知道如何获得每个Gear Post的重量场的实际值。

非常感谢你 - 我是学习Drupal的新手(第2天......)

1 个答案:

答案 0 :(得分:0)

经过大量的尝试和探索,我能够自己解决这个问题。非常令人兴奋不确定这是否是最佳做法,但它确实有效。 This这有助于搞清楚!

function getWeights() {
 $query = new EntityFieldQuery();
 $query->entityCondition('entity_type', 'node')
  ->entityCondition('bundle', 'gear_post')
  ->propertyCondition('status', 1);
  $result = $query->execute();

if (!empty($result['node'])) {
  $nids = array_keys($result['node']);
  $nodes = node_load_multiple($nids);
  $weights = array();

   foreach ($nodes as $node) {
      $fields = field_view_field('node', $node, 'field_weight'); 
      array_push ($weights, $fields[0]['#markup']);
     }
 }
 return $weights;
}