我对D8很新,我试图做以下事情:
我有一个内容类型:电影。 在该内容类型中,我有一个自定义字段api_id,它只是一个整数。
当我在电影页面上时,我想在内容下显示一个带有相同api_id电影的块。
我已经设法为同一个作者的同一部电影创建了块,但我无法弄清楚如何过滤api_id(我用上下文过滤器玩了很多......)
有什么想法吗? THX
答案 0 :(得分:0)
好的,我设法用hook_views_query_alter()来做我想要的事情:
function my_module_views_query_alter(\Drupal\views\ViewExecutable $view, \Drupal\views\Plugin\views\query\QueryPluginBase $query)
{
if($view->id() == 'my_view' && $view->current_display == 'my_block'){
$movie= Node::load($view->args[0]);
if(is_object($movie)) {
foreach ($query->where as &$condition_group) {
foreach ($condition_group['conditions'] as &$condition) {
if ($condition['field'] == 'node__field_id_movie.field_id_movie_value') {
$condition = array(
'field' => 'node__field_id_movie.field_id_movie_value',
'value' => $movie->get('field_id_movie')->value,
'operator' => '=',
);
}
}
}
}
}
}
要做到这一点,您必须首先在要覆盖过滤器的字段上创建一个带有简单过滤器的视图。