it-swarm-id.com

Jalankan tampilan tanpa rendering

Saya ingin menjalankan tampilan (memberikan argumen) secara terprogram dan mendapatkan hasil mentah, tanpa merendernya. Apa itu mungkin?

Ketika saya menggunakan $view->preview('default', $args); ia mengubah hasilnya menjadi HTML. Saya tahu saya bisa menggunakan $view->result untuk mengulangi hasil mentah, tetapi custom yang diberikan yang saya gunakan untuk beberapa bidang buggy dan memberi saya WSOD (Saya tidak memiliki minat atau kemampuan untuk memperbaiki renderer, ini merupakan kasus Edge :))

Saya menggunakan Tampilan 3 dengan Drupal 7

8
Daniel

Sudah ada fungsi yang melakukan apa yang Anda inginkan:

  $result = views_get_view_result('my_view_name', 'default', $arg1, $arg2, ...);

Baca lebih lanjut di halamannya di api.drupal.org:

https://api.drupal.org/api/views/views.module/function/views_get_view_result/7/7

7
Alexar

$ view-> preview () umumnya digunakan untuk hanya melihat tampilan sehingga dengan kata lain itu akan merendernya melalui format yang ditentukan.

$ view-> execute_display () juga mengembalikan tampilan dalam format yang relevan yang ditentukan dalam tampilan.

Saya pikir Anda mungkin harus menjalankan perintah langsung yaitu db_query ()

3
Colin McClure

Anda harus mendapatkan beberapa kesuksesan jika Anda mematikan view::preview() ke dalam kode Anda sendiri, tetapi mengubahnya sehingga, alih-alih memanggil ->display_handler->preview(), ia memanggil ->execute() sebagai gantinya:

$view = views_get_view($view_name);
$view->set_display($display_name);
$view->preview = TRUE;
$view->pre_execute($args);
$view->execute($display_name);

Ini seharusnya berfungsi karena, untuk sebagian besar penangan tampilan, panggilan ke ...->display_handler->preview() sebenarnya hanya pembungkus panggilan balik ke view::render(). Yang itu sendiri dimulai dengan memanggil $this->execute(...).

0
J-P