У живой ленты есть счетчик новых сообщений, который хранится в массиве $GLOBALS["LEFT_MENU_COUNTERS"]. Кто знает как он обновляется, что у всех пользователей потом свое значение? И как на него можно повлиять?
Не сочтите за некроманта, но можете кому пригодится. Сам наткнулся на вопрос как добавить пункт меню со счётчиком.
Пункт меню со счётчиком в корп. портале делается просто (пример для добавления пункта в раздел меню "Избранное"):
В корне сайта ищем файл .left.menu_ext.php
В файле ищем строку объявляющую массив пунктов меню -
Код
$aMenuB24 = array();
Под этой строкой добавляем свой пункт
Код
$aMenuB24[] = Array(
'Этот день в компании',
"365",
Array(),
Array("name" => "that_day", "counter_id" => "that_day", "menu_item_id"=>"menu_that_day"), //В этой строке задаются идентификаторы, в том числе и идентификатор счётчика counter_id, вы можете сделать по этому примеру просто заменить that_day на свой выдуманный идентификатор
""
);
Всё пункт меню отобразится, теперь вам остаётся только в освоить методы класса CUserCounter управляющий счётчиком, и увеличивать или уменьшать счётчик для пользователя когда это нужно.
// Функция срабатывает на добавление поста в блог
function custumSonetMessCounter($ID, &$arFields){
global $USER;
if(in_array('SG51',$arFields['SOCNET_RIGHTS'])){ //Проверка принадлежности поста к определённой соц. группе
$dbUsers = $USER->GetList(($by="ID"),($by="ASC"), array('ACTIVE'=>'Y')); //Получаем список заинтересованных пользователей, которым нужно будет отобразить в меню появление поста
while($arUser = $dbUsers->GetNext()){
CUserCounter::Increment($arUser['ID'], 'that_day', 's1'); //Увеличиваем счётчик на единицу для counter_id "that_day"
}
}
}
Код
// Функция срабатывает на открытие ленты блога AddEventHandler('main', 'OnPageStart', array('MyHelper','customCounterClean'));
function customCounterClean(){
if(strpos($_SERVER['REQUEST_URI'],'/365/')>-1){
CUserCounter::Clear(CUser::GetID(), 'that_day', 's1'); //Полностью очищаем счётчик, так как считаем что пользователь просмотрел все новые сообщения
}
}
В другие разделы меню пункты добавляются аналогичным образом, только в соответствующий файл .left.menu_ext.php (Например /company/.left.menu_ext.php)