在 Drupal 8 站点中,我有一个分类页面,上面有一个视图块。该视图列出了用您所在页面的术语标记的文章。它还显示用当前分类页面的子术语标记的文章。
我正在使用公开过滤器“内容:具有分类术语(有深度)(公开)”让用户根据子术语过滤文章。目前,无论您当前使用哪种分类法,该过滤器都会显示所有术语。
以下是暴露过滤器中列出的项目的示例:
Mammals
- Cat
- Dog
Reptiles
- Lizard
- Snake
Amphibians
- Frog
- Salamander
父项之一的 URL 为:
site.com/animal/mammals
我需要限制公开过滤器中的选项列表,仅显示基于 URL 的术语的子项。所以在上面的 URL 中,只有 Cat 和 Dog 会在暴露的过滤器中列出。
在 Drupal 7 中,我可以通过我的 theme.module 中的 hook_form_alter 使用 URL arg(2) 来获取术语名称来完成此操作。我在 Drupal 8 中找不到任何有关如何执行此操作的文档。
这是我到目前为止发现的:
function myTheme_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
if ($form_id == 'views_exposed_form' && $form['#id'] == 'views-exposed-form-article-tags-block-1') {
$term = arg(2);
//Need D8 code to load term, find it's children and alter the select box to show those children
}
}
如果这不是实现我的目标的方式,我愿意接受其他选择。先感谢您。