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