2011-06-25 28 views
2

ノードIは、Drupalの7 PHPブロック内のノードのフィールドの値を印刷したいと思いますが、私は、コードを使用していたとき:印刷は、フィールド値

<?php 
if (arg(0) == 'node' && is_numeric(arg(1))) { 
    if ($node = node_load(arg(1))) { 
    if ($node->type == 'offer') { 
     $company_name = check_plain($node->field_company[0]['value']); 
    } 
    } 
    if (!empty($company_name)) { 
    print $company_name; 
    } 
} 
?> 

それは何もしません - 何も印刷を。私の変数は空であると確信していますが、なぜですか?私は間違って何をしていますか?すっごくD6だ任意のヘルプ

+0

恐ろしいargのチェックとnode_loadの代わりに、menu_get_object()を使うことができます。 if($ node = menu_get_object())デバッグ($ノード);タイプが実際に提供されているかどうかを確認します。 – chx

答えて

1
$company_name = check_plain($node->field_company[0]['value']); 

ため

感謝。 :) D7では、デフォルトでは次のようになります。一般的に

$company_name = check_plain($node->field_company[$node->language][0]['value']); 

、ちょうどますprint_r /のvar_dump(またはKPR/DPRあなたはdevelのインストールを持っている場合)$ノードオブジェクトが存在しますが、内部に持っているとどのようにアクセスするかをフィールド参照してくださいそれら。

+3

ありがとうございます。また、 '$ company_name = field_get_items( 'node'、$ node、 'field_company'); print $ company_name [0] ['value']; 'は動作しますが、あなたの考えはより効率的です。ありがとう。 – Gawi

+1

スニペットを修正しました。 '' und''を '$ node-> language'に変更しました。また、 'no language'を使用することを強くお勧めする場合でも、その値ではなく、LANGUAGE_NONE定数が必要です。 – chx

+0

ああ、良いキャッチ。ありがとう! –