"Кто онлайн?"

Тема в разделе "Изменение шаблона (кастомизация)", создана пользователем Vladir, 28.05.2008.

  1. Offline

    Vladir Недавно здесь

    Регистрация:
    27.02.2008
    Сообщения:
    21
    Симпатии:
    0
    Как в стандатртном жумлавском модуле mod_whosonline (Кто онлайн?) сделать что бы эти самые "кто онлайн" показывались на странице не в столбик а в строчку допустим через запятую?
     
  2.  
  3. Fanamura
    Offline

    Fanamura Доброта

    Регистрация:
    12.03.2007
    Сообщения:
    5 094
    Симпатии:
    158
    Пол:
    Мужской
    Ответ: "Кто онлайн?"

    Открываете modules/mod_whosonline.php

    с 78 строки и до конца заменяете код на этот:

    Код (CODE):
    1. // show online member names
    2. if ($showmode > 0) {
    3.     $query = "SELECT DISTINCT a.username"
    4.     ."\n FROM #__session AS a"
    5.     ."\n WHERE a.guest = 0"
    6.     ;
    7.     $database->setQuery($query);
    8.     $rows = $database->loadObjectList();
    9.    
    10.     if ( count( $rows ) ) {
    11.         // output
    12.         $output .= '<br>';
    13.     foreach($rows as $row) {
    14.             $output .= '<strong>';
    15.             $output .= $row->username;
    16.             $output .= '</strong>';
    17.     }
    18.         $output .= ',';
    19.     }
    20. }
    21.  
    22. echo $output;
    23. ?>
     
  4. Offline

    Vladir Недавно здесь

    Регистрация:
    27.02.2008
    Сообщения:
    21
    Симпатии:
    0
    Ответ: "Кто онлайн?"

    Спасибо, помогло. Хотя пришлось и доработать. От твоего кода запятая ставилась в конце после перечисления всех пользователей подряд, без пробелом между. Но все исправил. Тока вот убрать бы запятую в конце списка пользователей. Ато она там ни к чему...
     
  5. sectus
    Offline

    sectus Недавно здесь => Cпециалист <=

    Регистрация:
    19.04.2006
    Сообщения:
    1 210
    Симпатии:
    46
    Пол:
    Мужской
    Ответ: "Кто онлайн?"

    мой вариант какой:
    Код (PHP):
    1. // show online member names
    2. if ($showmode > 0) {
    3.     $query = "SELECT DISTINCT a.username"
    4.     ."\n FROM #__session AS a"
    5.     ."\n WHERE a.guest = 0"
    6.     ;
    7.     $database->setQuery($query);
    8.     $rows = $database->loadObjectList();
    9.  
    10.     if ( count( $rows ) ) {
    11.         // output
    12.         $output .= '<br/>';
    13.     $names=array();
    14.     foreach($rows as $row) {
    15.             $names[] = $row->username;
    16.     }
    17.         $output .= "<strong>".implode("</strong>, <strong>", $names)."</strong>";
    18.     }
    19. }
    20.  
    21. echo $output;
    22. ?>
     
  6. Offline

    Vladir Недавно здесь

    Регистрация:
    27.02.2008
    Сообщения:
    21
    Симпатии:
    0
    Ответ: "Кто онлайн?"

    И в этом варианте не будит запятой в конце всего списка пользователей?
     
  7. sectus
    Offline

    sectus Недавно здесь => Cпециалист <=

    Регистрация:
    19.04.2006
    Сообщения:
    1 210
    Симпатии:
    46
    Пол:
    Мужской
    Ответ: "Кто онлайн?"

    Нет... : )
     
  8. Offline

    ПТИЦА ГОВОРУН Недавно здесь

    Регистрация:
    27.10.2007
    Сообщения:
    21
    Симпатии:
    0
    Пол:
    Мужской
    Подскажите, а как в модуле mod_whosonline jommla 1.5.6 сделать так, чтобы он показывал не логины пользователей, находящихся на сайте, а имена. ( Или по другому: не имена пользователей, а имена, кому как нравится называть)
     
  9. Dead Krolik
    Offline

    Dead Krolik Недавно здесь => Cпециалист <=

    Регистрация:
    13.04.2007
    Сообщения:
    3 685
    Симпатии:
    101
    Пол:
    Мужской
    Надо открыть модуль и поискать нечто вроде

    ->username

    и возможно поменять это на

    ->name
     
  10. Offline

    ПТИЦА ГОВОРУН Недавно здесь

    Регистрация:
    27.10.2007
    Сообщения:
    21
    Симпатии:
    0
    Пол:
    Мужской
    Это я сделал в первую очередь

    файл называется helper.php:

    Код (PHP):
    1. // show online member names
    2.     function getOnlineMemberNames() {
    3.         $db     =& JFactory::getDBO();
    4.         $result = null;
    5.  
    6.         $query = 'SELECT DISTINCT a.username' .
    7.                  ' FROM #__session AS a' .
    8.                  ' WHERE client_id = 0' .
    9.                  ' AND a.guest = 0';
    10.         $db->setQuery($query);
    11.         $result = $db->loadObjectList();
    12.  
    13.         if ($db->getErrorNum()) {
    14.             JError::raiseWarning( 500, $db->stderr() );
    15.         }
    16.  
    17.         return $result;
    18.     }




    Перестал писать список этих пользователей вообще, только количество
     
  11. sectus
    Offline

    sectus Недавно здесь => Cпециалист <=

    Регистрация:
    19.04.2006
    Сообщения:
    1 210
    Симпатии:
    46
    Пол:
    Мужской
    На первый взгляд:
    Боюсь, что так сделать стало гораздо сложнее, потому что имя пользователя берется из таблицы сессий, и хранится там только одно имя. Поэтому изменения должны быть более сильные и не только в модуле, но и в местах где сохраняется сессия.
    ...
    Но присмотревшись к таблице:
    Понял, что тоже не все так просто.
    ...
    И посмотрел я третий раз на этот модуль и получил такой результат, который сам не тестировал, может быть будут ошибки:
    Код (PHP):
    1. // show online member names
    2.     function getOnlineMemberNames() {
    3.         $db     =& JFactory::getDBO();
    4.         $result = null;
    5.  
    6.         $query = 'SELECT a.* ' .
    7.                  ' FROM #__session AS a' .
    8.                  ' WHERE client_id = 0' .
    9.                  ' AND a.guest = 0 GROUP BY a.username';
    10.         $db->setQuery($query);
    11.         $result = $db->loadObjectList();
    12.  
    13.     foreach ($result as $key=>$user)
    14.       {
    15.       $a=explode('|',$user->data);
    16.       $a=unserialize($a[1]);
    17.       $result[$key]->username = $a['user']->name;
    18.       }
    19.  
    20.         if ($db->getErrorNum()) {
    21.             JError::raiseWarning( 500, $db->stderr() );
    22.         }
    23.  
    24.         return $result;
    25.     }


    на самом деле с joomla 1.5.* я не разбирался, так что, возможно, это можно сделать элегантнее
     
    chilly_bang и ПТИЦА ГОВОРУН нравится это.
  12. Offline

    ПТИЦА ГОВОРУН Недавно здесь

    Регистрация:
    27.10.2007
    Сообщения:
    21
    Симпатии:
    0
    Пол:
    Мужской
    Сейчас попробую этот вариант - расскажу, что получилось )))

    Добавлено через 15 минут
    Все работает, огромное спасибо. Можно, конечно, будет поработать над элегантностью, но самое главное уже сделано. Sectus, +1

    Добавлено через 14 минут
    Может я совсем обнаглею, но все-таки спрошу. Реально добавить в этот модуль такое изменение - отображение не только количество и список имен пользователей онлайн, но и администраторов (вместе с суперадминистраторами в одной куче), редакторов ???

    joomla 1.5.6
     
    Последнее редактирование: 29.08.2008
  13. sectus
    Offline

    sectus Недавно здесь => Cпециалист <=

    Регистрация:
    19.04.2006
    Сообщения:
    1 210
    Симпатии:
    46
    Пол:
    Мужской
    цветом, чтоли их выделить?
     
  14. Offline

    ПТИЦА ГОВОРУН Недавно здесь

    Регистрация:
    27.10.2007
    Сообщения:
    21
    Симпатии:
    0
    Пол:
    Мужской
    Можно и цветом)))

    Обчно пишется так:

    N гостей и N пользователей онлайн:
    -автор
    -пользователь
    -админ

    А я говорю о таком варианте:

    Гостей: N

    Пользователей: N
    -user1
    -user2

    Авторов: N
    -автор1
    -автор2

    Администраторов: N
    -админ1
    -админ2
    Естественно, не логины, а имена

    Добавлено через 7 минут
    Хотя, может даже лучше просто разными цветами написать их, а снизу карту цветов добавить.

    Добавлено через 40 секунд
    Как на некоторых движках форумов
     
    Последнее редактирование: 30.08.2008
  15. sectus
    Offline

    sectus Недавно здесь => Cпециалист <=

    Регистрация:
    19.04.2006
    Сообщения:
    1 210
    Симпатии:
    46
    Пол:
    Мужской
    Цветом, проще, но будет не совсем правильно : )
    По группам сложнее, потому как надо будет шаблон еще менять % )
     
  16. Offline

    ПТИЦА ГОВОРУН Недавно здесь

    Регистрация:
    27.10.2007
    Сообщения:
    21
    Симпатии:
    0
    Пол:
    Мужской
    Почему не правильно? гости обычным, пользователи одним, авторы вторым, редакторы третьим, админы и суперадмины четвертым.


    От этого варианта я уже отказался, но все-таки, а зачем шаблон-то менять?
     
  17. sectus
    Offline

    sectus Недавно здесь => Cпециалист <=

    Регистрация:
    19.04.2006
    Сообщения:
    1 210
    Симпатии:
    46
    Пол:
    Мужской
    Тогда в файле tmpl/default.php
    Код (PHP):
    1. <li><strong><?php echo $name->username; ?></strong></li>

    поменять на
    Код (PHP):
    1. <li><?php echo "<span class='".str_replace(" ", "_", $name->usertype)."'>".$name->username."</span>"; ?></li>


    а потом через класс к этому спану добавить цвет в соответствии с каждым типом.
    (p.s. не тестировал : ) )
     
    Последнее редактирование: 05.09.2008
  18. Tureckiy
    Offline

    Tureckiy Недавно здесь => Cпециалист <=

    Регистрация:
    11.04.2009
    Сообщения:
    423
    Симпатии:
    30
    Пол:
    Мужской
    А кто в курсе, этот стандартный модуль вообще правильно отображает посетителей? %)
     

Поделиться этой страницей

Загрузка...