Вопрос или проблема
В Drupal 7 я использовал панели и менеджер страниц для создания URL и передачи аргументов на пользовательские страницы. Маршрут может выглядеть как /custom_section/!1/!2.
Мне нужно сделать что-то подобное в Drupal 10. Я создавал страницы, добавляя базовые страницы и используя конструктор макетов для добавления блоков. Я могу добавлять контекстные фильтры к блокам представлений и заставлять их работать в предварительном просмотре представлений. Я просто не могу понять, как передать аргументы в блоки представлений на странице.
Какой лучший способ создать пользовательские страницы в Drupal 10, которые передают аргументы в представления или блоки представлений?
Ответ или решение
Drupal 10: Как передавать аргументы на страницы
Введение
Создание настраиваемых страниц в Drupal 10 и передача аргументов для их обработки может показаться сложной задачей, особенно если вы переходите с предыдущих версий, таких как Drupal 7, где использовались панели и менеджер страниц. Однако, с введением новых возможностей и улучшений в Drupal 10, эта задача становится более управляемой. В этой статье мы рассмотрим, как создать настраиваемые страницы и передать аргументы в блоки представлений (views) в Drupal 10.
Шаг 1: Создание маршрутов с параметрами
В Drupal 10 маршруты определяются в файлах модулей или темах. Для начала вам необходимо создать свой собственный модуль (если у вас его еще нет).
-
Создайте модуль: Создайте папку для вашего модуля, например,
custom_page_module
, и добавьте файл.info.yml
.name: 'Custom Page Module' type: module description: 'A custom module for creating pages and passing arguments.' core_version_requirement: ^10 package: Custom dependencies: - drupal:views - drupal:layout_builder
-
Определите маршрут: Затем создайте файл
custom_page_module.routing.yml
для определения маршрута:custom_page_module.custom_page: path: '/custom_section/{arg1}/{arg2}' defaults: _controller: '\Drupal\custom_page_module\Controller\CustomPageController::content' _title: 'Custom Page' requirements: _permission: 'access content'
Шаг 2: Создание контроллера
Создайте контроллер для обработки вашего маршрута. Для этого создайте новую папку src/Controller
в вашем модуле и добавьте файл CustomPageController.php
.
namespace Drupal\custom_page_module\Controller;
use Drupal\Core\Controller\ControllerBase;
use Drupal\Core\Cache\CacheableMetadata;
class CustomPageController extends ControllerBase {
public function content($arg1, $arg2) {
// Здесь вы можете создать представление или обработать ваши аргументы.
return [
'#markup' => $this->t('Arguments received: @arg1 and @arg2', [
'@arg1' => $arg1,
'@arg2' => $arg2,
]),
'#cache' => [
'max-age' => 0,
],
];
}
}
Шаг 3: Интеграция с представлениями
Если вы хотите передать аргументы в представления, вы можете использовать контекстуальные фильтры. Например, если у вас есть представление, которое отображает контент на основе переданного аргумента, выполните следующее:
-
Создайте или отредактируйте ваше представление: В интерфейсе представлений добавьте контекстуальный фильтр, который соответствует вашим аргументам.
-
Настройте контекстуальные фильтры: Например, если вы хотите, чтобы ваш
arg1
использовался как фильтр на полеnid
, добавьте контекстуальный фильтр на это поле и настройте его для использования аргумента. Выберите "Provide default value" и в качестве типа выберите "Raw value from URL". Укажите, что ваш аргумент будет{arg1}
.
Шаг 4: Использование Layout Builder
Теперь, когда вы настроили маршруты и передали аргументы в представления, вы можете использовать Layout Builder для настройки вашей страницы.
-
Создайте страницу с помощью Layout Builder: Перейдите в конфигурацию вашего типа контента или создайте новый маршрут в Layout Builder.
-
Добавьте блоки представлений: Вы можете добавить блоки представлений в Layout Builder, и они будут автоматически получать значения аргументов, переданных через URL.
Заключение
С помощью вышеописанного подхода в Drupal 10 вы сможете создавать настраиваемые страницы с передачей аргументов в представления и блоки. Этот процесс позволяет вам создавать динамические страницы, которые могут эффективно отображать контент на основе пользовательского ввода или других параметров.
SEO-Оптимизация
Следите за тем, чтобы структура URL была понятной и доступной для индексации. Используйте ключевые слова, подходящие к вашей тематике, и оптимизируйте заголовки страниц, чтобы улучшить видимость в поисковых системах.
Это идеальное решение для создания пользовательского контента и гибкого управления отображением данных. Познакомьтесь с этим новым подходом в Drupal 10 и сделайте свой сайт более интерактивным и адаптивным к требованиям пользователей.