ケースは次のとおりです。たとえば、「data_field」がフィールドされたカスタム コンテンツ タイプがあります。この「data_field」フィールドのデータを適切に処理して表示するブロックをサイドバーに配置したいと考えています。Drupal API を使用してアクセスするにはどうすればよいですか?
PS この問題はビューで何らかの方法で解決できることを理解しています。ビューにはコンテンツ固有の表示機能がありますが、API によりそれがどのように達成されるかに興味があります。
ケースは次のとおりです。たとえば、「data_field」がフィールドされたカスタム コンテンツ タイプがあります。この「data_field」フィールドのデータを適切に処理して表示するブロックをサイドバーに配置したいと考えています。Drupal API を使用してアクセスするにはどうすればよいですか?
PS この問題はビューで何らかの方法で解決できることを理解しています。ビューにはコンテンツ固有の表示機能がありますが、API によりそれがどのように達成されるかに興味があります。
コンテンツタイプのデフォルトのDrupal設定でフィールドをレンダリングするには:
$n = node_load($nid_of_content);
$n = node_view($n);
print render($n['field_somevalue']);
ノードの表示形式も指定できます。例:
$n = node_view($n, 'teaser');
別の方法でフィールドコンテンツを操作する場合は、生のフィールド値を使用します。
$n = node_load($nid_of_content);
$value_you_want = $n->field_data_field_somevalue['und'][0]['value'];
これは、言語/翻訳機能を使用していないことを前提としています。「und」は「未定義」を表し、ノードに言語が明示的に設定されていないことを示します。
フィールドに複数の値を含めることができる場合は、['und'][0]['value']から['und'][x]['value']まで繰り返します。
上記のコードは、ほとんどのフィールドタイプの生の値を表示します。開発中にprint_r($ n-> field_somevalue)を使用して、使用可能な値を確認します。フィールドタイプによって異なります。たとえば、ファイルタイプは「value」の代わりに「uri」を提供します。テキストフィールドには入力フォーマットフィルタリングが適用された「safe_value」もあり、長いテキストフィールドには「summary」と「safe_summary」があります。