Критика и пожелания
13,20

Блог «Критика и пожелания»

Если Вас что-то не устраивает или Вы хотите рассказать о Ваше идее

Показать участников

Функция "Кто онлайн"

Доброе время суток.
По мере освоения этой замечательной системы появилось еще два глобальных вопроса:
1. Как можно организовать показ тех пользователей которые сейчас в онлайн («Кто онлайн»)?
2. Как можно и можно ли вообще добавлять собственные подразделы в правую боковую панель?
Заранее спасибо.

Комментарии (10):

+2
Al_NInyo 8 Марта, 11:12
2) Надо в нужном месте шаблона прописать код нужного блока. Например, на моём сайте так было сделано 2 новых блока: Новички сайта и Реклама.
Например, открываете файл explay\templates\xsl\blogs\postsList.xsl, в нём, начиная с 52-й строки (у меня это: div id=«blocks_inner») идёт вывод правых блоков. Div, начинающийся с div class=«block» — это и есть 1 правый блок. Посмотрите, как там сделаны стандартные блоки и по аналогии добавьте свой в нужное место.

Опять таки, если что непонятно — можно меня в аське помучать :)
Удачи!
+1
Almaz 9 Марта, 18:20
ответ на первый вопрос:
расширяем класс «Люди» (people\__custom_people.php)

код:
class __custom_people {

public function online_users(){
$typesController = TypesController::getInstance();
$objectsController = ObjectsController::getInstance ();

$oUserType = $typesController->getTypeByName ('user');

$sel = new Selection;
$sel->addType ($oUserType);
$sel->setOrder ('rating', false);
$sel->addFilter ('login', '', '!=');
$online_time = 10; //сколько минут считать пользователя «онлайн» с момента последнего захода.
$sel->addFilter ('lastvisit', time()-$online_time*60, '>');
//$sel->addLimit ($count); // если нужно ограничить число онлайн юзеров

$aObjects = $objectsController->getObjectsList($sel->getList ());

$response = new ModuleResponse;

foreach ($aObjects as $object) {
$rating = $object->getValue ('rating');
$object->setValue ('rating', number_format ($rating, 2, ',', ' '));
$response->addObject ($object);
}

return $response;
}

}

писал на коленке, но вроде должно работать. не забыть добавить шаблон — думаю это не сложно.
Удачи =)
Alex Jsti 9 Марта, 21:01
ох что-то я намудрил. Чуть было не убил весь сайт. Если мы засунем это все в custom_people, то как же его вызвать из prostLists.xml. У меня лично не получилось. Попытка засунуть в class из папки module не оправдала надежд, выдало ошибку на строке 262. А там как бы конец этой функции. Делаю вывод — не то пальто.
Almaz 10 Марта, 01:15
не совсем понимаю что за prostLists.xml…
вообще если мы его добавляем как расширение класса people, то его ответ будет доступен как sitename/people/online_users.xml или я неверно понял задачу?
Almaz 10 Марта, 01:40
Все. въехал.
дописываем в функцию выше
$response->setTemplate ('people/online');

создаем сам шаблон people/online.xsl — здесь каким то образом форматируем наши данные.
и уже в prostLists.xml в нужном месте вставляем
<xsl:apply-templates select=«document('xmodule://people/online_users')/data/response/object» />
как то так
+2
Almaz 11 Марта, 19:19
Al_NInyo 11 Марта, 19:45
Спасибо большое! Поставил у себя. Всё работает :)
Alex Jsti 12 Марта, 16:40
Спасибо! Все работает
Для того, чтобы оставить свой комментарий Вам необходимо авторизоваться.