¿Cómo alterar el valor del campo personalizado único en las vistas?

11

Tengo una vista con el campo Global: Texto personalizado, que se modifica como un enlace. Quiero cambiar tokens de reemplazo para generar este enlace, dependiendo de un valor de otro campo.

Intenté modificar esto en hook_views_pre_render pero no puedo encontrar una manera de hacerlo.

En hook_views_post_render hay dos matrices:

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

que contiene enlaces generados para cada fila, pero no están presentes en pre_render, y cambiarlos en post_render no funciona.

También intenté hacerlo en template_preprocess_views_view_fields pero para esa vista específica esta función no se activa (para otras vistas lo hace), y no sé por qué.

dmk.it
fuente

Respuestas:

16
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;
  }
}

Consulte el enlace para obtener más detalles ¿Cómo insertar valores en el campo de vistas de texto personalizado global mediante programación?

agregue nid como campo en la vista y use ese campo para la condición, puede agregar la condición de la siguiente manera: if ($nid == '124') { $view->field['nothing']->options['alter']['text'] = $nid}

Una manera simple es crear un nuevo campo field_waga que tendrá field_waga_1 como nuevo nombre si marca la vista y luego puede cambiar la etiqueta y anular ese campo con su valor personalizado

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';
}
harshal
fuente
Esta solución cambia cada campo a 'Mi texto personalizado', no puedo ver una opción para alterar solo los campos elegidos, y para alterar un enlace (si el campo se modifica para mostrar como un enlace) de esta manera. Desafortunadamente, no puedo usar una función preprocess_views_view_fields (), que se menciona en el enlace que proporcionó, porque por razones desconocidas (para mí;)) esta función no se activa para esta vista específica.
dmk.it
puede agregar la condición de la siguiente manera: if ($ nid == '124') {$ view-> field ['nothing'] -> options ['alter'] ['text'] = $ nid}
harshal
comprobar respuesta actualizada
harshal
Condición añadida de esta manera: if ($ view-> result [0] -> field_waga [0] ['raw'] ['value'] == '10') {$ view-> field ['nothing'] - > opciones ['alter'] ['text'] = 'ALTER'; } Si a tiene un valor '10' en la primera fila que todos los campos 'nada' tiene el valor 'ALTER'. No solo primero, sino todas las filas, desafortunadamente. Creo que es un alter global y no se puede usar para filas elegidas.
dmk.it
1
No solo agregue un field_waga que ya tiene nuevamente usando el campo agregar y luego use ese campo como campo personalizado para ingresar sus valores personalizados
harshal
0

Como actualización de la respuesta anterior, tuve que establecer 'alter_text' en TRUE para que esto funcione, por ejemplo:

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;
  }
}
Tyler Fahey
fuente