
Сегодня разберем данное меню, которое многие видели в Битрикс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. Напомню, что последний в админ.части не определен и требуется явное указание. Подробнее о счетчиках можно почитать в . Тут же я просто показал, что для инкремента вам больше ничего делать не надо. Естественно, стоило упомянуть, что мгновенное обновление счетчика произойдет при корректно настроенном модуле Push&Pull.
Таскание и скрытие пунктов.
А это идет бонусом, штатно

Ведутся ли работы по разработке публичного js api для подобных модификации в интерфейсе облачных порталов?
Насчет JS API - если вы приведете в пример кейс, который необходимо решить, вместе подумаем.
но в очень странном виде
хотелось бы просто возможность добавляь свой js- код который через взаимодействие с неким bitrix24 js api для фронтенда. т.е. который бы менял интерфейс портала (добавление удаление любых управляющих контролов на странице).
естественно чтобы был единообразный способ - чтобы работало и в коробке и в облачной версии.