Вы можете использовать views_datasource , что, вероятно, будет самым простым способом. Если вам нужна большая гибкость, вы определенно можете справиться с этим самостоятельно, используя пользовательские шаблоны для разметки данных в JSON.
Чтобы установить тип содержимого, вы можете использовать хук Views, например hook_views_pre_view () , чтобы добавить заголовок:
function mymodule_views_pre_view(&$view, &$display_id, &$args) {
if ($view->name == 'my_view') {
header('Content-type: text/javascript');
}
}