From 89532e460e987d02d01e1a9af7b98f9dc0555185 Mon Sep 17 00:00:00 2001 From: Anton Tarasov Date: Sun, 23 Jun 2024 15:57:25 +0400 Subject: [PATCH] Update modx.sendforward.md another use case has been added --- .../modx-class/reference/modx.sendforward.md | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/ru/extending-modx/modx-class/reference/modx.sendforward.md b/ru/extending-modx/modx-class/reference/modx.sendforward.md index 74da27ef6..91eea9c98 100644 --- a/ru/extending-modx/modx-class/reference/modx.sendforward.md +++ b/ru/extending-modx/modx-class/reference/modx.sendforward.md @@ -26,15 +26,15 @@ void sendForward (integer $id, [string|array $options = null]) - `merge`: способ объединения ресурса, находящегося в данный момент в `$modx->resource` с целевым ресурсом. `content`, `pub_date`, `unpub_date`, `richtext`, `_content` и `_processed` значения исключаются вместе со значением системного параметра [forward_merge_excludes](building-sites/settings/forward_merge_excludes). Я не уверен, что это должно использоваться из ядра, и, вероятно, есть лучшие способы объединить данные (например, `setPlaceholder`), а затем объединить. - `$sendErrorPage` Следует ли пропустить выполнение [sendErrorPage](extending-modx/modx-class/reference/modx.senderrorpage "modX.sendErrorPage") если ресурс не существует. -## Пример +## Примеры -Отправьте пользователя на ресурс с идентификатором 234, фактически не меняя URL. +1. Отправьте пользователя на ресурс с идентификатором 234, фактически не меняя URL. ``` php $modx->sendForward(234); ``` -Отправьте пользователя на страницу ошибки 404, для фактического идентификатора страницы мы используем значение системной настройки [error_page](building-sites/settings/error_page). Если такого значения нет, +2. Отправьте пользователя на страницу ошибки 404, для фактического идентификатора страницы мы используем значение системной настройки [error_page](building-sites/settings/error_page). Если такого значения нет, будет использовано значение переменной [site_start](building-sites/settings/site_start) ``` php @@ -48,6 +48,21 @@ $options = array( $this->sendForward($this->getOption('error_page', $options, $this->getOption('site_start')), $options, false); ``` +3. Выдайте заменяющую страницу, сохранив оригинальные `pagetitle`, `introtext` и другие поля. Для этого нужно просто указать дополнительный массив с ключами: + +``` php +$options = array( + 'merge' => 1, // Включает механизм склейки полей + // список оригинальных полей, которые нужно исключить из результата + 'forward_merge_excludes' => 'id,template,type,published,class_key' +); +$this->sendForward(15, $options); +``` +Ключ [forward_merge_excludes](building-sites/settings/forward_merge_excludes) заведует полями исходной страницы, которые нужно исключить из результатов. К эти полям обязательно будут прибавлены еще `content,pub_date,unpub_date,richtext` + +Такой способ полезен, если вы хотите закрывать какие-то разделы сайта, оставляя `pagetitle` и `description` для посетителей и поисковиков. + + ## Смотрите также - [modX](extending-modx/core-model/modx "modX") @@ -56,3 +71,4 @@ $this->sendForward($this->getOption('error_page', $options, $this->getOption('si - [modX.sendErrorPage](extending-modx/modx-class/reference/modx.senderrorpage "modX.sendErrorPage") - [modX.sendUnauthorizedPage](extending-modx/modx-class/reference/modx.sendunauthorizedpage) - [error_page](building-sites/settings/error_page) +- [forward_merge_excludes](building-sites/settings/forward_merge_excludes)