2016-08-02 7 views
0

ご協力いただきありがとうございます!私は自転車のギアを見直すことができる私のDrupalプロジェクトのための "Gear Post"というカスタムコンテンツタイプを持っています。 Gear Postには、アイテムの重量の「重量」というフィールドがあります。私は自分のモジュールを作成しようとしています。ユーザーがギアポストとしてサイトに保存されているすべてのギアアイテムの重量を計算できるようにする機能です。私はギアポストの重量特性にアクセスするのに苦労しています。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で出力したときに読み込みが困難な連想配列が見つかりました。

私ができることを望むのは、すべての重みを配列しているので、それらを繰り返して表示することができ、それを私の数学に使うことができます。しかし、私は各ギヤポストの重量フィールドの実際の値にアクセスする方法を知らない。

はそんなにありがとう - 私はDrupalのを学ぶに新しいです(2日目...)

答えて

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; 
} 
+0

また、[この](http://drupal.stackexchange.com/questions/77798/how-to-iterate-over-all-the-nodes-from-a-content-type)は非常に有用でした。 – perrysetgo

関連する問題