Come modificare il valore di un singolo campo personalizzato nelle viste?


11

Ho una vista con il campo Globale: Testo personalizzato, che viene modificato come collegamento. Voglio cambiare i token di sostituzione per generare questo link, a seconda del valore di un altro campo.

Ho provato a modificarlo in hook_views_pre_render ma non riesco a trovare un modo per farlo.

In hook_views_post_render ci sono due array:

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

che contiene collegamenti generati per ogni riga, ma non sono presenti in pre_render e la loro modifica in post_render non funziona.

Ho anche provato a farlo in template_preprocess_views_view_fields ma per quella vista specifica questa funzione non si attiva (per altre viste lo fa), e non so perché.

Risposte:


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

Controlla il link per maggiori dettagli Come inserire valori nel campo di testo globale personalizzato delle viste a livello di codice?

aggiungi nid come campo in vista e usa quel campo per condizione puoi aggiungere condizione come segue: if ($nid == '124') { $view->field['nothing']->options['alter']['text'] = $nid}

Il modo semplice è creare un nuovo campo field_waga che avrà field_waga_1 come nuovo nome se si controlla nella vista e quindi è possibile modificare l'etichetta e sovrascrivere quel campo con il valore personalizzato

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

Questa soluzione cambia ogni campo in "Il mio testo personalizzato", non riesco a vedere un'opzione per modificare solo i campi scelti e per modificare un collegamento (se il campo viene modificato per essere visualizzato come collegamento) in questo modo. Sfortunatamente non posso usare una funzione preprocess_views_view_fields (), che è menzionata nel link che hai fornito, perché per motivi sconosciuti (per me;)) questa funzione non viene attivata per questa vista specifica.
dmk.it

puoi aggiungere la condizione come segue: if ($ nid == '124') {$ view-> field ['nothing'] -> options ['alter'] ['text'] = $ nid}
harshal

controlla la risposta aggiornata
harshal

Condizione aggiunta in questo modo: if ($ view-> result [0] -> field_waga [0] ['raw'] ['value'] == '10') {$ view-> field ['nothing'] - > options ['alter'] ['text'] = 'ALTER'; } Se a ha un valore '10' nella prima riga rispetto a tutti i campi 'niente' ha valore 'ALTER'. Non solo per primo, ma per tutte le file, sfortunatamente. Penso che sia un alter globale e non può essere utilizzato per le righe scelte.
dmk.it

1
Non basta aggiungere un field_waga che hai già usato di nuovo utilizzando il campo add e quindi utilizzare quel campo come campo personalizzato per inserire i tuoi valori personalizzati
harshal

0

Come aggiornamento alla risposta sopra, ho dovuto impostare 'alter_text' su TRUE per farlo funzionare, ad esempio:

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;
  }
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.