You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Drupal 9:如何在单页基于相同筛选器联动医生列表与FAQ视图

Drupal医生页面筛选联动FAQ实现方案

核心思路

借助Drupal视图的上下文过滤器,从URL路径中提取医院、专科的节点ID参数,同时传递给医生列表视图和FAQ视图,实现筛选规则的同步联动。

具体操作步骤

1. 配置FAQ视图的上下文过滤器

进入FAQ视图的编辑界面,点击「添加」>「上下文过滤器」,分别添加对应医院(如field_hospital)和专科(如field_speciality)的字段,按以下规则配置:

  • 医院过滤器配置:
    • 「当过滤器值不存在时」:选择「显示所有结果」,无医院筛选时正常展示匹配其他条件的FAQ。
    • 「当过滤器值存在时」:选择「使用来自URL的默认值」,然后选择「PHP代码」作为默认值来源,输入以下代码自动适配单/双筛选路径:
      $path = \Drupal::service('path.current')->getPath();
      $parts = explode('/', $path);
      // 匹配医院单筛选路径
      if (isset($parts[2]) && $parts[2] == 'hospital') {
        if (preg_match('/[^-]+-(\d+)/', $parts[3], $matches)) {
          return $matches[1];
        }
      }
      // 匹配双筛选路径中的医院参数
      if (isset($parts[2]) && $parts[2] == 'hospital' && isset($parts[4]) && $parts[4] == 'speciality') {
        if (preg_match('/[^-]+-(\d+)/', $parts[3], $matches)) {
          return $matches[1];
        }
      }
      return '';
      
  • 专科过滤器配置:
    • 「当过滤器值不存在时」:选择「显示所有结果」,无专科筛选时正常展示匹配其他条件的FAQ。
    • 「当过滤器值存在时」:选择「使用来自URL的默认值」,同样选择「PHP代码」作为默认值来源,输入以下代码:
      $path = \Drupal::service('path.current')->getPath();
      $parts = explode('/', $path);
      // 匹配专科单筛选路径
      if (isset($parts[2]) && $parts[2] == 'speciality') {
        if (preg_match('/[^-]+-(\d+)/', $parts[3], $matches)) {
          return $matches[1];
        }
      }
      // 匹配双筛选路径中的专科参数
      if (isset($parts[2]) && $parts[2] == 'hospital' && isset($parts[4]) && $parts[4] == 'speciality') {
        if (preg_match('/[^-]+-(\d+)/', $parts[5], $matches)) {
          return $matches[1];
        }
      }
      return '';
      

2. 同步医生视图的筛选逻辑

检查现有医生列表视图的上下文过滤器配置,确保其参数提取规则(正则或PHP代码)与FAQ视图完全一致,保证两个视图基于同一URL参数进行筛选。

3. 页面布局整合

打开/doctors页面的布局编辑(如使用Layout Builder),将配置好的FAQ视图嵌入到医生列表视图的旁侧或下方,让两个视图共享当前页面的URL路径参数。

4. 测试验证

  • 访问医院筛选路径:/doctors/hospital/xyz-hospitals-1234,确认FAQ仅显示标记该医院的内容。
  • 访问专科筛选路径:/doctors/speciality/heart-surgery-1450,确认FAQ仅显示标记该专科的内容。
  • 访问双筛选路径:/doctors/hospital/xyz-hospitals-1234/speciality/heart-surgery-1450,确认FAQ仅显示同时匹配两个条件的内容。

内容的提问来源于stack exchange,提问作者Vaibhav Yadav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 15:53:36