Сегодня разберем данное меню, которое многие видели в Битрикс24. Причем даже то, как инкрементить счетчики онлайн, таскать пункты, скрывать и добалвять их в левое меню.
[spoiler]
Битрикс24 ничем не отличается от БУС, поэтому, создав на нем страничку (речь я веду про коробку понятно), вы получите во такую унылую пустышку:
Контентную область (в Б24 ей больше подходит название сервисной области) мы тут разбирать не будем. Как нам вывести меню?
В шаблоне Битрикс24 присутствует системный код viewTarget, и вот такая магия позволит вам что угодно переместить над заголовком:
$this->SetViewTarget('above_pagetitle', 100); echo 'Aaaa'; $this->EndViewTarget(); |
Вы не поверите, но меню "пуляется" туда аналогичным образом.
Вот полностью законченный пример, который выведет вам озвученную менюшку
$this->SetViewTarget('above_pagetitle', 100); $menuId = 'test3'; $menuItems = array(); $menuItems[] = array( 'TEXT' => 'Пункт 1', 'URL' => '/?aaa', 'ID' => 'aaa', 'IS_ACTIVE' => 1, 'COUNTER' => 0, 'COUNTER_ID' => 'my_service_1' ); $menuItems[] = array( 'TEXT' => 'Пункт 2', 'URL' => '/?bbb', 'ID' => 'bbb', 'IS_ACTIVE' => 0, 'COUNTER' => 0, 'COUNTER_ID' => 'my_service_2' ); $APPLICATION->IncludeComponent( 'bitrix:main.interface.buttons', '', array( 'ID' => $menuId, 'ITEMS' => $menuItems, ) ); $this->EndViewTarget(); |
Разберем один пункт меню по порядку следования значений в нем:
1. Текст пункта. Данные должны быть переданы в исходном виде, внутри применится спешалчарс.
2. Ссылка. Замечание аналогичное
3. Айдишник пункта. Уникальный в рамках одного меню. Применяется внутренними механизмами для показа и скрытия пунктов.
4. Флаг, что пункт сейчас активен. Определяется вами.
5. Счетчик. Об этом ниже.
6. Айдишник счетчика. Применяется, если используете счетчик.
Теперь о счетчике.
Его конечно может и не быть, и если он вам не нужен, можно этот блок пропустить. Но пусть это будет сервисная страница, накапливающая какие-то данные. Например, новые заказы. Чтобы инкрементнуть этот счетчик в публичке, вам требуется на стороне сервера при поступлении сигнала на инкремент (новый заказ) выполнить такой код:
CUserCounter::Increment(1, 'my_service_1', 's1'); |
Первым параметром идет айди юзера, затем айди счетчика, и наконец SITE_ID. Напомню, что последний в админ.части не определен и требуется явное указание. Подробнее о счетчиках можно почитать в
Таскание и скрытие пунктов.
А это идет бонусом, штатно
Ведутся ли работы по разработке публичного js api для подобных модификации в интерфейсе облачных порталов?
Насчет JS API - если вы приведете в пример кейс, который необходимо решить, вместе подумаем.
но в очень странном виде
хотелось бы просто возможность добавляь свой js- код который через взаимодействие с неким bitrix24 js api для фронтенда. т.е. который бы менял интерфейс портала (добавление удаление любых управляющих контролов на странице).
естественно чтобы был единообразный способ - чтобы работало и в коробке и в облачной версии.