web-dev-qa-db-ja.com

ビューで単一のカスタムフィールド値を変更する方法は?

フィールドGlobal:Custom Textのビューがあり、リンクとして変更されています。他のフィールドの値に応じて、このリンクを生成するための置換トークンを変更したい。

これをhook_views_pre_renderで変更しようとしましたが、これを行う方法が見つかりません。

Hook_views_post_renderには2つの配列があります。

$view->style_plugin->render_tokens
$view->style_plugin->row_tokens

これには、すべての行に対して生成されたリンクが含まれていますが、それらはpre_renderには存在せず、post_renderでの変更は機能しません。

また、template_preprocess_views_view_fieldsでこれを実行しようとしましたが、その特定のビューでは、この関数は起動しません(他のビューでは起動します)。その理由もわかりません。

11
dmk.i-t
_function hook_views_pre_render(&$view) {

  switch ($view->name) {
    case 'YOUR_VIEW_NAME':
      //  override the global custom text field value
      $view->field['nothing']->options['alter']['text'] = 'My custom text';
    break;
  }
}
_

詳細については、リンクを確認してください プログラムでビューのグローバルカスタムテキストフィールドに値を挿入する方法

ビューのフィールドとしてnidを追加し、そのフィールドを条件に使用して、次のように条件を追加できます。if ($nid == '124') { $view->field['nothing']->options['alter']['text'] = $nid}

簡単な方法は、ビューにチェックインした場合に新しい名前としてfield_waga_1を持つ新しいフィールドfield_wagaを作成し、ラベルを変更してそのフィールドをカスタム値で上書きすることです

_if($view->result[0]->field_waga[0]['raw']['value'] == '10') {
//here you can create the field to act as custom text field and enter the custom //value
$view->result[0]->field_waga_1[0]['#markup'] = 'alter';
}
_
16
harshal

上記の回答の更新として、これを機能させるために 'alter_text'をTRUEに設定する必要がありました。例:

function hook_views_pre_render(&$view) {

  switch ($view->name) {
    case 'YOUR_VIEW_NAME':
    //  override the global custom text field value
    $view->field['nothing']->options['alter']['text'] = 'My custom text';
    $view->field['nothing']->options['alter']['alter_text'] = TRUE;

    break;
  }
}
0
Tyler Fahey