Документация для разработчиков
Темная тема

Специальные страницы

Внимание! Мы настоятельно рекомендуем ознакомиться сначала с REST-документацией модуля Сайты, чтобы понять как модуль функционирует (тем более REST доступен и в коробочной версии). Данную документацию рассматривайте как подспорье при работе в коробке, когда вам действительно мало функционала REST, или вы хотите детальнее разобраться в API.

В отличие от привычных сайтов БУС в рамках одного Сайта24 может быть только одна страница корзины, одна страница оформления заказа, одна страница персонального раздела, и так далее.

Нет, вам никто не запрещает создать множество таких страниц, но чтобы страница списка товаров знала о странице корзины, а та в свою очередь о странице оформления, они должны быть привязаны в единственном экземпляре к сущностям "Специальные страницы".

Создав страницу и указав ей маркер cart (корзина) мы сможем обращаться к ней на других страницах сайта прямо в коде блока:

<a href="#system_cart">Корзина</a> 

//обратите внимание, маркер намеренно ставится без закрывающегося символа решетки #

Как видите, идентификатор не задействуется, и якоря спецстраниц могут быть прописаны заранее, еще до создания соответствующих страниц.

Существующие на данный момент маркеры спец.страниц:

  • #system_mainpage – главная страница
  • #system_catalog – главная страница каталога
  • #system_personal – персональный раздел
  • #system_cart – корзина
  • #system_order – оформление заказа
  • #system_payment – страница оплаты (непосредственно процессинг оплаты)
  • #system_compare – страница сравнения

Но как привязывать конкретные страницы сайта к маркерам спец. страниц? Об этом в примере кода ниже.

if (\Bitrix\Main\Loader::includeModule('landing'))
{
	// в рамках сайта ИД=1 установим для страницы ИД=123
	// спец. тип "персональный раздел"
	\Bitrix\Landing\Syspage::set(1, 'personal', 123);
   
	// либо удалим привязку для сайта, не указывая страницу
	\Bitrix\Landing\Syspage::set(1, 'personal');
   
	// получим все имеющиеся системные страницы сайта с ИД=1
	$syspages = \Bitrix\Landing\Syspage::get(1); 
   
	// страницы вернутся все, даже помещенные в корзину,
	// чтобы вернуть только активные, передадим второй параметр true
	$syspages = \Bitrix\Landing\Syspage::get(1, true);
   
	// очистим все привязки для сайта с ИД=1
	\Bitrix\Landing\Syspage::deleteForSite(1);
   
	// очистим все привязки для страницы с ИД=123
	\Bitrix\Landing\Syspage::deleteForLanding(123);
}

Да, как вы уже поняли, одна страница может являться спец.страницей нескольких типов. Например, страница корзины может быть по совместительству и страницей оформления.

Чтобы получить непосредственно URL на системную страницу сайта поможет метод:

if (\Bitrix\Main\Loader::includeModule('landing'))
{
	echo(Bitrix\Landing\Syspage::getSpecialPage(840, 'cart'));
	echo(Bitrix\Landing\Syspage::getSpecialPage(840, 'personal', ['SECTION' => 'private']));
}

В примере для сайта ID=840 мы получаем ссылку на корзину и персональный раздел. Причем, для персонального раздела мы еще формируем конкретную секцию (к ссылке добавится ?SECTION=private).



© «Битрикс», 2001-2024, «1С-Битрикс», 2024