Cara menggunakan template_preprocess_views_view untuk meneruskan variabel ke file tpl views


8

Karena kasus itu muncul kembali pada saya untuk kedua kalinya baru-baru ini, saya memutuskan untuk mengajukan pertanyaan sehingga mungkin belajar sesuatu.

Dalam Views, judul tampilan utama (yang biasanya ditampilkan di bagian atas tampilan) tersedia dalam output display karena $titletetapi tampaknya tidak tersedia dalam output style sama sekali. Sebaliknya, $titlevariabel dalam output gaya berarti nama grup jika pengelompokan digunakan.

Yang saya inginkan adalah agar judul tampilan ('nama manusia') tersedia di semua templat sebagai $display_title. Jadi yang saya lakukan adalah meletakkan kode ini di template.php saya:

function MYTHEME_preprocess_views_view(&$variables){
  if($variables['name'] == 'studios' && $variables['display_id'] == 'block'){
    $view = $variables['view'];
    $variables['display_title'] = $view->human_name;
  }
  dpm($variables);
}

... berharap memiliki gelar manusia berguna: <?php print $display_title; ?>

... tapi tidak ada sukacita. Apa yang saya lakukan salah?

Jawaban:


10

Seperti yang Anda ketahui, suatu tampilan memiliki beberapa templat, yang dapat bervariasi tergantung pada gayanya, misalnya:

  • Output tampilan: views-view.tpl.php
  • Output gaya: views-view-STYLE.tpl.php
  • Output gaya baris: views-view-fields.tpl.php
  • Konten bidang: views-view-field.tpl.php

dll.

Setiap templat tersebut memiliki fungsi preprocess sendiri. Apa yang Anda lakukan dalam kode hanya memengaruhi output tampilan karena Anda hanya memproses tampilan-view.tpl.php ( template_preprocess_views_view)

Untuk mengetahui file templat mana yang tersedia untuk tampilan spesifik Anda, Anda dapat melihat halaman edit dan di bawah bagian 'Advanced' di akhir kolom klik pada 'Tema: Informasi'. Anda akan melihat file templat mana yang digunakan oleh tampilan Anda (dicetak tebal) dan file templat mana yang akan Anda gunakan untuk menimpanya.

Fungsi preprocess harus dinamai setelah file templat, menggantikan tanda hubung dengan garis bawah. Misalnya views-view-STYLE.tpl.phpakan template_preprocess_views_view_STYLE().


0

Anda bisa menggunakan fungsi:

  1. drupal_set_title ()

    Setel judul halaman saat ini.

  2. drupal_get_title ()

    Mendapat judul halaman saat ini.


Terima kasih, tetapi pandangan saya menghasilkan blok bukan halaman, jadi ini bukan solusi. Selain itu, itu akan memerlukan melewati argumen string, suka t('My Views Title')dan kemudian terjemahkan lagi di sisi admin. Itulah yang ingin saya hindari (namun saya sudah menerjemahkan View itu ...).
Artur

0

Jika saya ingat benar Anda bisa meneruskan judul dengan objek tampilan, tambahkan variabel baru di dalam objek tampilan dan ust dalam file template.


0

Untuk menjawab pertanyaan spesifik "lewati variabel ke file templat" ... Saya pikir Anda hanya perlu menggunakan pengait yang berbeda. Lampirkan variabel ke $viewobjek Anda seperti ini:

function NAME_OF_MODULE_views_pre_render(&$view) {
  $view->display_title = "What have you";
}

Kemudian dalam file templat seperti views-view--NAME_OF_VIEW--page.tpl.php:

print $view->display_title;

Hanya harus melakukan ini sendiri dan itu bekerja dengan baik.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.