Перейти к содержимому
Русский язык для Invision Community 5

Как указать ссылку на редирект при создании новой записи в CMS?

Здравствуйте!

 

По умолчанию при создании новой записи в любой базе данных, после отправки формы происходит редирект на страницу только что созданной, новой записи.

 

Вопрос, как изменить ссылку по которой будет редирект после отправки формы?

Рекомендованные сообщения

По умолчанию при создании новой записи в любой базе данных, после отправки формы происходит редирект на страницу только что созданной, новой записи.

 

Не только для записей, но и для тем, лс и т.п.

 

\system\Content\Item.php

				if ( !\IPS\Member::loggedIn()->member_id and $obj->hidden() )
			{
				\IPS\Output::i()->redirect( $obj->container()->url(), 'mod_queue_message' );
			}
			else if ( $obj->hidden() == 1 )
			{
				\IPS\Output::i()->redirect( $obj->url(), 'mod_queue_message' );
			}
			else
			{
				\IPS\Output::i()->redirect( $obj->url() );
			}

Проверяйте, что это статья и перенаправляйте по новому адресу

 

Либо \applications\cms\sources\Records\Records.php

	public function url( $action=NULL )
{

Проверяйте параметры и перенаправляйте по новому адресу. Что-то вроде

	public function url( $action=NULL )
{
	if (\IPS\Request::i()->do == 'form' and isset(\IPS\Request::i()->d))
	{
		return \IPS\Http\Url::internal(''); // перенаправляем на главную страницу
	}

  • Автор

Спасибо за ответ.

 

Открыл файл \applications\cms\sources\Records\Records.php

 

Сделал такой код:

 

public function url( $action=NULL )
{
	if (\IPS\Request::i()->do == 'form' and isset(\IPS\Request::i()->d))
	{
           return \IPS\Http\Url::internal(''); // перенаправляем на главную страницу
       }

       if ( ! $this->recordPage )
       {
       	/* If we're coming through the database controller embedded in a page, $currentPage will be set. If we're coming in via elsewhere, we need to fetch the page */
       	try
       	{
       		$this->recordPage = \IPS\cms\Pages\Page::loadByDatabaseId( static::$customDatabaseId );
       	}
       	catch( \OutOfRangeException $ex )
       	{
       		if ( \IPS\cms\Pages\Page::$currentPage )
       		{
       			$this->recordPage = \IPS\cms\Pages\Page::$currentPage;
       		}
       		else
       		{
       			throw new \LogicException;
       		}
       	}
       }

       if ( $this->recordPage )
       {
       	$pagePath   = $this->recordPage->full_path;
       	$class		= '\IPS\cms\Categories' . static::$customDatabaseId;
       	$catPath    = $class::load( $this->category_id )->full_path;
       	$recordSlug = ! $this->record_static_furl ? $this->record_dynamic_furl . '-r' . $this->primary_id_field : $this->record_static_furl;

       	if ( static::database()->use_categories )
       	{
       		$url = \IPS\Http\Url::internal( "app=cms&module=pages&controller=page&path=" . $pagePath . '/' . $catPath . '/' . $recordSlug, 'front', 'content_page_path', $recordSlug );
       	}
       	else
       	{
       		$url = \IPS\Http\Url::internal( "app=cms&module=pages&controller=page&path=" . $pagePath . '/' . $recordSlug, 'front', 'content_page_path', $recordSlug );
       	}
       }

       if ( $action )
       {
       	$url = $url->setQueryString( 'do', $action );
       	$url = $url->setQueryString( 'd' , static::database()->id );
       	$url = $url->setQueryString( 'id', $this->primary_id_field );
       }

       return $url;
   }

 

К сожалению, не перенаправляет на главную.

Оставьте

if (\IPS\Request::i()->do == 'form')

Я когда смотрел, заходил из категории. А там добавляется параметр d

  • Автор

Работает! Большое спасибо!

Создайте аккаунт или войдите в него для комментирования

Важная информация

При использовании данного сайта, вы согласаетесь с Условия использования и Чтобы сделать этот веб-сайт лучше, мы разместили cookies на вашем устройстве. Вы можете изменить свои настройки cookies, в противном случае мы будем считать, что вы согласны с этим..

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.