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

问题描述:

在此先感谢您的帮助!我为我的Drupal项目定制了一个名为“Gear Post”的内容类型,它允许我查看自行车装备。 Gear Post有一个称为“重量”的字段,用于物品的重量。我正在尝试编写我自己的模块aka功能,该功能允许用户计算网站上存储为齿轮箱的所有齿轮物品的重量。我正在努力获得齿轮柱的重量属性。Drupal 7:从特性/模块的自定义内容类型字段中检索数据

这是我到目前为止有: (.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 ..)

了很多努力和戳约后,我能解决这个我自己。很刺激。不知道这是否是最佳做法,但它有效。 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; 
} 
+0

另外[此](http://drupal.stackexchange.com/questions/77798/how-to-iterate-over-all-the-nodes-from-a-content-type)是非常有益的。 – perrysetgo