0

ケースは次のとおりです。たとえば、「data_field」がフィールドされたカスタム コンテンツ タイプがあります。この「data_field」フィールドのデータを適切に処理して表示するブロックをサイドバーに配置したいと考えています。Drupal API を使用してアクセスするにはどうすればよいですか?

PS この問題はビューで何らかの方法で解決できることを理解しています。ビューにはコンテンツ固有の表示機能がありますが、API によりそれがどのように達成されるかに興味があります。

4

1 に答える 1

1

コンテンツタイプのデフォルトの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」があります。

于 2012-08-08T06:50:49.773 に答える