フィールド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でこれを実行しようとしましたが、その特定のビューでは、この関数は起動しません(他のビューでは起動します)。その理由もわかりません。
_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';
}
_
上記の回答の更新として、これを機能させるために '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;
}
}