フィールドビューテーマテンプレートの$ row変数のフィールド値にアクセスするにはどうすればよいですか?


11

ビューの1つのフィールドテンプレートをオーバーライドしており、$ row変数から別のフィールド値にアクセスできるようにしたい。テンプレートファイルのドキュメントはこれを示しています。

$ rowから出力を取得する場合、次の構成を使用する必要があります。$ data = $ row-> {$ field-> field_alias}

私のフィールドはfield_calendar_titleと呼ばれますが、以下は期待通りに機能しません:

$row->{$field->field_calendar_title}

次のエラーが表示されます。

致命的なエラー:空のプロパティにアクセスできません...

フィールド「エイリアス」は、コンテンツタイプのフィールド名とは異なりますか?

$ rowのvar_dumpからの「クリーンな」出力:

stdClass Object
(
    [node_title] => ...
    [nid] => 568
    [field_data_field_performance_date_delta] => 0
    [field_data_field_performance_date_language] => und
    [field_data_field_performance_date_bundle] => event
    [field_data_field_performance_date_field_performance_date_val] => 2012-03-02 19:00:00
    [field_data_field_performance_date_node_entity_type] => node
    [_field_data] => Array
        (
            [nid] => Array
                (
                    [entity_type] => node
                    [entity] => stdClass Object
                        (
                            [vid] => 878
                            [uid] => 0
                            [title] => ...
                            [log] => 
                            [status] => 1
                            [comment] => 0
                            [promote] => 0
                            [sticky] => 0
                            [nid] => 568
                            [type] => event
                            [language] => und
                            [created] => 1329332968
                            [changed] => 1331836509
                            [tnid] => 0
                            [translate] => 0
                            [revision_timestamp] => 1331836509
                            [revision_uid] => 1
                            [body] => Array
                                (
                                    [und] => Array
                                        (
                                            [0] => Array
                                                (
                                                    [value] => ...
                                                    [summary] => ...
                                                    [safe_summary] => ...
                                                )
                                        )
                                )
                                [field_resident_company] => Array ( [und] => Array ( [0] => Array ( [tid] => 3 ) ) )
                                [field_series] => Array ( [und] => Array ( [0] => Array ( [tid] => 36 ) ) )
                                [field_venue] => Array ( )
                                [field_rotator_image] => Array ( )
                                [field_exclude] => Array ( [und] => Array ( [0] => Array ( [value] => 0 ) ) )
                                [field_performance_image] => Array ( )
                                [field_premiere] => Array ( [und] => Array ( [0] => Array ( [value] => 1330714800 [timezone] => UTC [timezone_db] => UTC [date_type] => datestamp ) ) )
                                [field_closing] => Array ( [und] => Array ( [0] => Array ( [value] => 1330714800 [timezone] => UTC [timezone_db] => UTC [date_type] => datestamp ) ) )
                                [field_exclude_update] => Array ( [und] => Array ( [0] => Array ( [value] => 0 ) ) )
                                [field_performance_date] => Array ( [und] => Array ( [0] => Array ( [value] => 2012-03-02 19:00:00 [timezone] => UTC [timezone_db] => UTC [date_type] => datetime ) ) )
                                [field_performance_id] => Array ( [und] => Array ( [0] => Array ( [value] => 1436 [format] => [safe_value] => 1436 ) ) ) [field_event_status] => Array ( [und] => Array ( [0] => Array ( [value] => open ) ) )
                                [field_calendar_title] => Array ( [und] => Array ( [0] => Array ( [value] => PSYCHIC EXP [format] => [safe_value] => PSYCHIC EXP ) ) )
                                ...
                        )
) 

回答:


10

の外観から、var_dumpこれでフィールド値を見つけることができるはずです:

$row->_field_data['nid']['entity']->field_calendar_title['und'][0]['value'];

しかし、それよりも良い方法があることを本当に願っています!


申し訳ありませんが、質問の構文を修正しましたが、まだ機能しませんでした。これも試してみましたが、運がありません$ row-> field_calendar_title;
何か

うーん...私はエラーメッセージから$fieldは未定義だと思います... var_dump($row)実際に何がそこにあるのかを見るためにやってみましたか?あなたはおそらくあなたがかなり簡単に後を追っているフィールドを見つけるでしょう:)
クライヴ

ねえクライヴは、うん、私は...のvar_dumpおよびフィールドがフィールド値の残りの部分と一緒_field_dataの下に存在していた
SomethingOn

var_dump($row)編集として質問の出力をポップできる場合、必要な値を見つけることができるかもしれません
クライブ

@SomethingOn私は答えを更新しました、それはきれいではありませんが、それは動作するはずです:)
クライヴ

7

より簡単なアプローチ:

$rendered_field = $view->render_field($fieldname, $view->row_index);

ここで、$ fieldnameは元の(ビューエイリアスではない)フィールド名です(例: 'field_myfield')。


3

少し遅いかもしれませんが、将来の参考のためにここに私の答えがあります:

説明はかなりあいまいですが、文字通り使用する必要があります。

$row->{$field->field_alias}

テンプレートファイルでは、次の点にも注意してください。

利用可能な変数:

  • $ view:ビューオブジェクト
  • $ field:入力を処理できるフィールドハンドラーオブジェクト
  • $ row:使用できる生のSQL結果
  • $ output:通常使用される処理済み出力。

$ fieldにはfield_aliasというフィールドがあります。だから、$row->{$field->field_alias}実際にfield_calendar_title、あなたのケースでは、を指しています。

$ fieldのvar_dumpを作成してみてください。自分で確認できます。

これがこの投稿に出くわした人の助けになることを願っています。

ゲルベン


遅すぎることはありませんが、まだトレンドの質問です。1.怪しい@Cliveの例は使いたくありませんが、動作します)、しかし、どうすれば正確に自分のフィールドにアクセスできますか。取得したい2つの異なるフィールドがある場合はどうなりますか?
vladkras 14年

-2

最も簡単な方法は次のとおりです。$ fields ["field_name"]-> content; ここで、field_name-> cckフィールド名。

それが役立つことを願っています!!

乾杯!ラージ


1
何もありません$fieldsフィールドテンプレートで使用できる変数
Ejaz
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.