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

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

Внимание! Мы настоятельно рекомендуем ознакомиться сначала с 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
Наверх