Специальные страницы
Внимание! Мы настоятельно рекомендуем ознакомиться сначала с 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).