这是一个老问题,但是没有适当的答案。我遇到了同样的问题。我能想到的解决方案是CSS父选择器(尚不存在)或一些Drupal操作。
我添加了一个hook_preprocess_block,以将包装器CSS类添加到所有定义CSS类的视图块中。那不是小事,所以我将代码放在这里。它可能不适用于所有视图块,如果您对此代码有疑问,请随时进行更新并发布您自己的版本。
示例:CSS类“ test”的视图将包含在CSS类“ test-wrapper”的块中。
function <MY_THEME>_preprocess_block(&$variables) {
$default_display_id = 'default';
// Trying to access the field:
// $display_id = $variables['elements']['#views_contextual_links_info']['views_ui']['view_display_id']
// $default_display = $variables['elements']['#views_contextual_links_info']['views_ui']['view']->display['default']->display_options['css_class']
// $display = $variables['elements']['#views_contextual_links_info']['views_ui']['view']->display[$display_id]->display_options['css_class']
if (isset($variables['elements']['#views_contextual_links_info']['views_ui'])) {
$view_ui = $variables['elements']['#views_contextual_links_info']['views_ui'];
if (isset($view_ui['view_display_id'])) {
$display_id = $view_ui['view_display_id'];
if (isset($view_ui['view']) && property_exists($view_ui['view'], 'display') && isset($view_ui['view']->display[$display_id])) {
$default_css_class = NULL;
if (isset($view_ui['view']->display[$default_display_id])) {
$default_display = $view_ui['view']->display[$default_display_id];
if (property_exists($default_display, 'display_options') && isset($default_display->display_options['css_class'])) {
$default_css_class = $default_display->display_options['css_class'];
}
}
$view_css_class = NULL;
$display = $view_ui['view']->display[$display_id];
if (property_exists($display, 'display_options') && isset($display->display_options['css_class'])) {
$view_css_class = $display->display_options['css_class'];
}
$css_class = $view_css_class ? $view_css_class : $default_css_class;
if ($css_class) {
$variables['classes_array'][] = "$css_class-wrapper";
}
}
}
}
}