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

Drupal 10如何创建可向视图/视图区块传参的自定义页面?

Drupal 10 布局构建器页面向视图区块传递URL参数的最优方案

针对你的需求,最贴合原有Drupal 7工作流且高效的方案有两种,优先推荐使用核心原生功能或官方维护的Page Manager模块:

方案一:核心布局构建器 + 上下文参数传递(无需额外模块)

这种方式完全依赖Drupal核心功能,不需要安装第三方模块:

1. 定义带参数的自定义路由(或复用节点页面+路径别名)

如果你的页面不是基于现有节点,需要在自定义模块的routing.yml中定义路由:

custom_section.page:
  path: '/custom_section/{param1}/{param2}'
  defaults:
    _controller: '\Drupal\your_custom_module\Controller\CustomSectionController::build'
    _title: 'Custom Section'
  requirements:
    _permission: 'access content'

然后创建控制器,加载布局构建器的页面存储并注入URL参数作为上下文:

<?php

namespace Drupal\your_custom_module\Controller;

use Drupal\Core\Controller\ControllerBase;
use Drupal\layout_builder\LayoutBuilderTrait;
use Drupal\layout_builder\SectionStorageInterface;

class CustomSectionController extends ControllerBase {
  use LayoutBuilderTrait;

  public function build($param1, $param2) {
    // 加载预先配置好的单页布局存储
    $section_storage = $this->sectionStorageManager()->load('single_page', ['id' => 'custom_section']);
    // 将URL参数注入为页面上下文
    $section_storage->addContext('param1', $this->createContextFromValue($param1));
    $section_storage->addContext('param2', $this->createContextFromValue($param2));

    return $this->buildLayout($section_storage);
  }
}

如果复用现有节点作为基础页面,可通过Pathauto设置路径别名(如/custom_section/{{node:field-param1}}/{{node:field-param2}}),再用核心上下文提取器从URL中直接抓取参数。

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

编辑目标视图,添加需要的上下文过滤器,在“提供默认值”选项中选择来自上下文,并填写对应的上下文名称(如param1)。

3. 布局构建器中映射上下文到视图区块

进入布局构建器编辑页面,添加目标视图区块,在区块配置的上下文映射区域中,将视图所需的上下文(如param1)映射到页面的对应上下文参数。

方案二:使用Page Manager模块(复刻Drupal 7 Panels/Page Manager体验)

如果你习惯Drupal 7的工作流,Page Manager(官方维护的 contrib 模块)是最匹配的选择:

1. 安装模块

执行命令安装:

composer require drupal/page_manager

然后在后台启用Page Manager及相关子模块。

2. 创建自定义页面

访问/admin/structure/page_manager新建页面,设置路径为/custom_section/{param1}/{param2},并添加param1、param2两个路径参数。

3. 配置布局与区块映射

进入页面的布局编辑界面(使用布局构建器),添加视图区块后,在区块配置的上下文映射中,将视图的过滤器参数与页面的路径参数直接关联。

4. 配置视图上下文过滤器

同方案一,将视图过滤器的默认值设置为来自上下文,并关联到对应的页面参数名称。

核心注意点

  • 确保视图上下文过滤器的名称与页面上下文/参数名称完全一致,否则无法完成映射。
  • 使用核心方案时,若复用节点页面,可通过@current_path服务提取URL参数作为上下文,无需编写自定义控制器。
  • 上下文映射是核心布局构建器的核心功能,添加区块时务必检查该配置项,避免遗漏参数传递。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 14:17:35