Bạn có thể sử dụng hook_views_data
trong một mô-đun tùy chỉnh. Phải mất một chút thời gian để thực hiện nhưng tạo ra một giải pháp rất mô-đun vì bạn có được trường xem VIRTUAL.
khai báo phiên bản api trong MODULE_NAME.module
tập tin của bạn
function MODULE_NAME_views_api($module = NULL, $api = NULL) {
return array('api' => '3.0');
}
thêm tập tin MODULE_NAME.views.inc
với nội dung
function MODULE_NAME_views_data() {
$data = array();
$data['node']['virtual_views_field'] = array(
'title' => t('Virtual views field from X Y Z'),
'help' => t('Virtual views field from X Y Z fields.'),
'field' => array(
'handler' => 'MODULE_NAME_virtual_views_field',
),
);
return $data;
}
thêm tập tin MODULE_NAME_handlers.inc
với nội dung
class MODULE_NAME_virtual_views_field extends views_handler_field {
/**
* Overrides views_handler_field::render().
*/
function render($values) {
//uncomment following to see the actual values available
//need DEVEL module for this
//dpm($values);
$X = $values->field_field_X[0]['raw']['value'];
$Y = $values->field_field_Y[0]['raw']['value'];
$Z = $values->field_field_Z[0]['raw']['value'];
//implement your logic here and get result
$result = $X . " " . $Y . " " . $Z;
return $result;
}
function query() {
// do not need to override the parent query.
}
}
Tệp của bạn MODULE_NAME.info
sẽ trông giống như thế này
name = Custom Virtual Views Field
description = takes X Y Z fields to create virtual field
core = 7.x
package = custom
dependencies[] = views
files[] = MODULE_NAME_handlers.inc
core = "7.x"
Kích hoạt mô-đun của bạn (hoặc dọn dẹp class registry
nếu sửa đổi mô-đun hiện có / đã bật) và bạn sẽ có thể thấy / thêm trường ảo được gọi làVirtual views field from X Y Z
Điều này có thể được sử dụng và có những ưu điểm của bất kỳ trường xem thông thường nào khác.