Bagaimana cara mengubah nilai bidang khusus tunggal dalam tampilan?

11

Saya memiliki pandangan dengan bidang Global: Teks Kustom, yang dimodifikasi sebagai tautan. Saya ingin mengubah token pengganti untuk menghasilkan tautan ini, bergantung pada nilai bidang lainnya.

Mencoba mengubah ini di hook_views_pre_render tetapi saya tidak dapat menemukan cara untuk melakukan ini.

Di hook_views_post_render ada dua array:

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

yang berisi tautan yang dibuat untuk setiap baris, tetapi tidak ada di pre_render, dan mengubahnya di post_render tidak berfungsi.

Saya juga telah mencoba melakukannya di template_preprocess_views_view_fields tetapi untuk tampilan spesifik fungsi ini tidak diaktifkan (untuk tampilan lain memang demikian), dan saya tidak tahu mengapa.

dmk.it
sumber

Jawaban:

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

Periksa tautan untuk perincian lebih lanjut. Bagaimana cara memasukkan nilai ke dalam bidang tampilan teks khusus Global?

tambahkan nid sebagai bidang dalam tampilan dan gunakan bidang itu untuk kondisi Anda dapat menambahkan kondisi sebagai berikut: if ($nid == '124') { $view->field['nothing']->options['alter']['text'] = $nid}

Cara sederhana adalah membuat field_waga bidang baru yang akan memiliki field_waga_1 sebagai nama baru jika Anda memeriksa tampilan dan kemudian Anda dapat mengubah label dan menimpa bidang itu dengan nilai khusus Anda

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
sumber
Solusi ini mengubah setiap bidang menjadi 'Teks khusus saya', saya tidak dapat melihat opsi untuk mengubah hanya bidang yang dipilih, dan untuk mengubah tautan (jika bidang diubah untuk ditampilkan sebagai tautan) dengan cara ini. Sayangnya saya tidak dapat menggunakan fungsi preprocess_views_view_fields (), yang disebutkan dalam tautan yang Anda berikan, karena untuk alasan yang tidak diketahui (untuk saya;)) alasan fungsi ini tidak diaktifkan untuk tampilan khusus ini.
dmk.it
Anda dapat menambahkan kondisi sebagai berikut: if ($ nid == '124') {$ view-> bidang ['tidak ada'] -> opsi ['ubah'] ['teks'] = $ nid}
harshal
periksa jawaban yang diperbarui
harshal
Menambahkan kondisi dengan cara ini: if ($ view-> result [0] -> field_waga [0] ['raw'] ['value'] == '10') {$ view-> field ['nothing'] - > options ['alter'] ['text'] = 'ALTER'; } Jika a memiliki nilai '10' di baris pertama dari semua bidang 'tidak ada' memiliki nilai 'ALTER'. Bukan hanya pertama, tetapi semua baris, sayangnya. Saya pikir ini adalah perubahan global dan tidak dapat digunakan untuk baris yang dipilih.
dmk.it
1
Tidak hanya menambahkan field_waga yang sudah Anda miliki lagi menggunakan bidang tambah dan kemudian gunakan bidang itu sebagai bidang khusus untuk memasukkan nilai khusus Anda
harshal
0

Sebagai pembaruan untuk jawaban di atas, saya harus mengatur 'alter_text' menjadi TRUE agar ini berfungsi, misalnya:

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
sumber