Allure Опубликовано 19 Сентября 2007 Жалоба Поделиться Опубликовано 19 Сентября 2007 опть, ну хоть сказали бы, что к чему)А именно? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
xRay Опубликовано 20 Сентября 2007 Жалоба Поделиться Опубликовано 20 Сентября 2007 Я тут на основе этого сделал еще такую фигну:Какие дневники посмотрел пользователь))) (мини слежки)код в студию Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
vzport Опубликовано 20 Сентября 2007 Жалоба Поделиться Опубликовано 20 Сентября 2007 в class_journal.php (journal.php) $action_list = array( 'list' => array(0,'main','list', array( 'calendar' => 'misc/main_calendar', 'allpost' => 'misc/main_calendar', 'allcomm' => 'misc/main_calendar', 'mycomm' => 'misc/main_calendar', 'ucomm' => 'misc/main_calendar', 'interest' => 'misc/main_interest', 'anterest' => 'misc/main_interest', 'vizitors' => 'misc/main_vizitors', ), ), создаем main_vizitors.php в /miscсодержание:<?php /* ============================================================================ mJournal 2.1 Public Beta 1 Copyright (C) 2003-2007 UriSoft. All rights reserved;) E-Mail: urisoft2002@yandex.ru WWW: http://www.urisoft.ru ============================================================================ */ if (!defined('IN_JOURNAL')) { print '<h1>Incorrect access</h1>You cannot access this file directly.'; exit(); } $idx = new main_vizitors(); class main_vizitors { function main_vizitors() { global $ibforums, $journal; $journal->skin->add_to_list('main_vizitors'); $journal->skin->load_template(); switch ($ibforums->input['list']) { case 'all': $output = $this->show_main_all(); break; case 'vizitors': default: $output = $this->show_main_vizitors(); break; } $journal->do_output($output); } function show_main_vizitors() { global $ibforums, $DB, $std, $journal; $output = ''; if (isset($ibforums->input['id'])) { $id = intval($ibforums->input['id']); }else{ $id = $ibforums->member['id']; } $time = time(); $time_24 = (time() - 86400); $DB->query("SELECT COUNT(*) as num FROM ibf_jvizitors WHERE journal = '".$id."' AND mem_id != '0' AND date > '".$time_24."'"); $max = $DB->fetch_row(); $max = $max['num']; $DB->free_result(); if ($ibforums->input['st'] >= $max) $ibforums->input['st'] = (floor($max / 75) * 75); if ($ibforums->input['st'] < 0) $ibforums->input['st'] = 0; if ($max) { // ---------------------------------------------- $journal->build_pagelinks(array( 'TOTAL_POSS' => $max, 'PER_PAGE' => 75, 'CUR_ST_VAL' => $ibforums->input['st'], 'L_MULTI' => $ibforums->lang['pages'], 'BASE_URL' => $journal->base_url.'list='.$ibforums->input['list'].'&id='.intval($ibforums->input['id']), ) ); $DB->query("SELECT v.*, m.*, jm.* FROM ibf_jvizitors v LEFT JOIN ibf_members m ON (m.id=v.mem_id) LEFT JOIN ibf_jmembers jm ON (jm.id=v.journal) WHERE v.mem_id = '".$id."' AND v.date > '".$time_24."' ORDER BY v.date DESC LIMIT ".$ibforums->input['st'].", 75"); while ($rows = $DB->fetch_row()) { $rows['date'] = $journal->get_date( $rows['date'],"H:i:s");; $html .= $journal->skin->html['main_vizitors']->main_table_row($rows); } } $journal->nav[] = "Визиты в дневники"; $journal->title[] = "Визиты в дневники"; return $journal->skin->html['main_vizitors']->main_table($html); } } ?> case 'all': $output = $this->show_main_all(); break;Это не обязательно, это я для себя сделал, на будующее)с цифрами надеюсь поняли, сколько выводись список (у меня 75) в основном journal.php (в корне форума)находим:$journal->skin->add_to_list('blocks');добавляем после$journal->skin->add_to_list('main_vizitors');создаем новый skin_main_vizitors.phpс содержанием:<?php //===================================================== // mJournal 2.1 Public Beta 1 // CACHE FILE: skin_main.php // GENERATED : Fri, 17 Mar 2006 15:40:18 GMT //===================================================== class skin_main_vizitors { //=========================================================================== // main_table //=========================================================================== function main_table($who="",$info="") { global $ibforums, $journal; $IPBHTML = ""; //--starthtml--// $IPBHTML .= <<<EOF <div class='tableborder'> <table cellpadding='0' cellspacing='1' width='100%'> <div class='maintitle'>{$info['name']} посетил дневники:</div> <tr> <td class='subtitle'>Дневник</td> <td class='subtitle'>Постов</td> <td class='subtitle' nowrap='nowrap'>Когда смотрел(а)</td> <td class='subtitle'>Название дневника</td> </tr> {$who} </table> </div> EOF; //--endhtml--// return $IPBHTML; } //=========================================================================== // main_table_row //=========================================================================== function main_table_row($rows="") { global $ibforums, $journal; $IPBHTML = ""; //--starthtml--// $IPBHTML .= <<<EOF <tr> <td class='row1'><a href="{$journal->base_url}user={$rows['journal']}">{$rows['name']}</a> [<a href="{$journal->base_url}list=vizitors&id={$rows['journal']}">?</a>]</td> <td class='row1' style='text-align:center;'>{$rows['j_posts']}</td> <td class='row1' style='text-align:center;'>{$rows['date']}</td> <td class='row1'>{$rows['j_title']}</td> </tr> EOF; //--endhtml--// return $IPBHTML; } } ?>*замечание!!! У меня главная дневников использует css форума. Вам придется стиль переделать под свой.в шаблоне вывода полного списка посетивших дневника сделайте так://=========================================================================== // vlist_row //=========================================================================== function vlist_row($rows="") { global $ibforums, $journal; $IPBHTML = ""; //--starthtml--// $IPBHTML .= <<<EOF <tr> <td class='row'><a href="{$journal->base_url}user={$rows['id']}">{$rows['name']}</a> [<a href="{$journal->base_url}list=vizitors&id={$rows['id']}">?</a>]</td> <td class='row' style='text-align:center;'>{$rows['j_posts']}</td> <td class='row' style='text-align:center;'>{$rows['date']}</td> <td class='row'>{$rows['j_title']}</td> </tr> EOF; //--endhtml--// return $IPBHTML; } вроде все.. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
vzport Опубликовано 20 Сентября 2007 Жалоба Поделиться Опубликовано 20 Сентября 2007 в паре мест отличается расстановка скобок и добавлена возможность админу видеть блок.кинь, что сделал?! буду благодарен. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Lera Опубликовано 21 Сентября 2007 Автор Жалоба Поделиться Опубликовано 21 Сентября 2007 vzport и replicant спасибо за мод. Поставила, работает. Одна проблемка, если у человека нет дневника, он отображается пустым местом без ника, когда нажимаешь далее А так всё замечательно. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
replicant Опубликовано 22 Сентября 2007 Жалоба Поделиться Опубликовано 22 Сентября 2007 vzport и replicant спасибо за мод. Поставила, работает. Одна проблемка, если у человека нет дневника, он отображается пустым местом без ника, когда нажимаешь далее А так всё замечательно. Да мне-то за что? Я вообще мимо проходил. Это vzport спасибо! ИМХО это гость, а не тот у кого нет дневника. Вобщем у меня те у кого нет дневника идут по ссылке далее с 0 постов. А у гостя id = 0 и ника нет. Чуть выше я писал как исключается ID = 0. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Lera Опубликовано 23 Сентября 2007 Автор Жалоба Поделиться Опубликовано 23 Сентября 2007 (изменено) Нет нет, это не гость. Гостей я вообще исключила. Это люди форума, у которых нет дневников. Я ставила мод Архара, который таков: не у всех при регистрации есть дневник, чтобы базу не грузить, кто хочет, тот заводит. А то изначально у всех были дневники при регистрации, а многим они не нужны и не хотят вести. Вот и получается, что если человек не завёл дневник, то отображается пустым местом. Но это не гость, это человек форума. У меня гости не могут писать вообще Сейчас попробуй найти, как исключается ID 0 Спасибо большое. Не нахожу, совсем я кипятильник((( Изменено 23 Сентября 2007 пользователем Lera Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
vzport Опубликовано 23 Сентября 2007 Жалоба Поделиться Опубликовано 23 Сентября 2007 кхм, не должно быть пустого при любом раскладе..запись в базу идет имя пользователя форума а не дневников, а так же идет чтение сопоставляя ID с именем с форума.поесть, с дневников берется только id самого дневника, остальное все форумное. можно поподробней, где выводится пустое место, в блоке или в листе?если в листе, то поправить не составит труда Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Lera Опубликовано 23 Сентября 2007 Автор Жалоба Поделиться Опубликовано 23 Сентября 2007 (изменено) В листе при нажатии далее. А сам блок как часики работает. Все ники там стоят, в листе вот пустым местом, если нет дневника. Изменено 23 Сентября 2007 пользователем Lera Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
xRay Опубликовано 23 Сентября 2007 Жалоба Поделиться Опубликовано 23 Сентября 2007 Ссылку на мод Арахара тогда закинь телепатией мало кто обладает (что там было модифицировано) Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 23 Сентября 2007 Жалоба Поделиться Опубликовано 23 Сентября 2007 http://www.ibresource.ru/forums/index.php?showtopic=46852 Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
vzport Опубликовано 24 Сентября 2007 Жалоба Поделиться Опубликовано 24 Сентября 2007 В листе при нажатии далее. А сам блок как часики работает. Все ники там стоят, в листе вот пустым местом, если нет дневника.)))все просто...возми и укажи выбираемые поля жестко а не m.* и jm.*проблема в том, что имена пользователей он читает получается из jmembers.при перечеслении полей сделай такв list_vizitors.php v.*, m.id, m.name, jm.j_posts, jm.j_title и все)для красоты можно добавить if (!$rows['j_posts']){ $rows['j_posts'] = "-"; $rows['j_title'] = "---"; } вудет выглядеть так Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Allure Опубликовано 24 Сентября 2007 Жалоба Поделиться Опубликовано 24 Сентября 2007 (изменено) Сделал сегодня днем так же как предлагает Allure, только в паре мест отличается расстановка скобок и добавлена возможность админу видеть блок.Ой, со скобочкой (с одной) - это я промахнулась. Надо не if ($ibforums->member['is_j_owner'] а if ($ibforums->member['is_j_owner'])Чтобы добавить возможность админам видеть блок, заменить эту строчку на: if ($ibforums->member['is_j_owner'] or $ibforums->member['g_j_modview']) Изменено 7 Декабря 2007 пользователем Allure Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
xRay Опубликовано 24 Сентября 2007 Жалоба Поделиться Опубликовано 24 Сентября 2007 Просмотр IP-шек я бы только админам оставил ну максимум мождераторам дневников, но ни как не обычным юзверям. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Lera Опубликовано 24 Сентября 2007 Автор Жалоба Поделиться Опубликовано 24 Сентября 2007 vzport, спасибо огромное. Только вот не соображу куда поставить правильно. Попробовала, ошибку выдаёт, ясно дело, что не туда запихнула. Ты не мог бы привести кусочек кода, а то ведь один знак не так, и у меня может не работать, не программер я. Подобные перечисления нашла только тут $DB->query("SELECT v.*, m.*, jm.* Не знаю,ч то за что отвечает, поэтому впихиваю, видимо, неправильно. Allure, вот обидно то, делаю как ты говоришь, меняю как пишешь, а не могу просматривать, то ошибку выдаёт, то просто пишет, что закрыто для просмотра. Весь список не вижу у человека. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
vzport Опубликовано 24 Сентября 2007 Жалоба Поделиться Опубликовано 24 Сентября 2007 $DB->query("SELECT v.*, m.id, m.name, jm.id, jm.j_posts, jm.j_title FROM ibf_jvizitors v LEFT JOIN ibf_members m ON (m.id=v.mem_id) LEFT JOIN ibf_jmembers jm ON (jm.id=v.mem_id) WHERE v.journal = '".$journal->users['id']."' AND v.date > '".$time_24."' ORDER BY v.date DESC LIMIT ".$ibforums->input['st'].", 50"); while ($rows = $DB->fetch_row()) { $rows['date'] = $journal->get_date( $rows['date'],"H:i:s");; if (!$rows['j_posts']){ $rows['j_posts'] = "-"; $rows['j_title'] = "---"; } $who .= $journal->skin->html['listing']->vlist_row($rows); } } Просмотр IP-шек я бы только админам оставил ну максимум мождераторам дневников, но ни как не обычным юзверям. у меня так и стоит)//=========================================================================== // vlist //=========================================================================== function vlist($who="") { global $ibforums, $journal; $IPBHTML = ""; //--starthtml--// if ($ibforums->member['g_j_modview']) { $ip = "<td class='subhead' style='text-align:center;'>IP</td>"; }else{ $ip = ""; } $IPBHTML .= <<<EOF <br /> <div class='tableborder'> <table cellpadding='0' cellspacing='1'> <div class='mainhead'><b>Ваш дневник сегодня посмотрели</b></div> <tr> <td class='subhead'>Кто</td> {$ip} <td class='subhead'>Постов</td> <td class='subhead' nowrap='nowrap'>Когда смотрел(а)</td> <td class='subhead'>Название дневника</td> </tr> {$who} </table> </div> EOF; //--endhtml--// return $IPBHTML; } //=========================================================================== // vlist_row //=========================================================================== function vlist_row($rows="") { global $ibforums, $journal; $IPBHTML = ""; //--starthtml--// if ($ibforums->member['g_j_modview']) { $ip = "<td class='row' style='text-align:center;'>".$rows['ip']."</td>"; }else{ $ip = ""; } $IPBHTML .= <<<EOF <tr> <td class='row'><a href="{$journal->base_url}user={$rows['id']}">{$rows['name']}</a> [<a href='{$journal->base_url}list=vizitors&id={$rows['id']}' title='Какие дневники смотрел'>w</a>]</td> {$ip} <td class='row' style='text-align:center;'>{$rows['j_posts']}</td> <td class='row' style='text-align:center;'>{$rows['date']}</td> <td class='row'>{$rows['j_title']}</td> </tr> EOF; //--endhtml--// return $IPBHTML; } и $DB->query("SELECT v.*, m.id, m.name, jm.id, jm.j_posts, jm.j_title FROM ibf_jvizitors v LEFT JOIN ibf_members m ON (m.id=v.mem_id) LEFT JOIN ibf_jmembers jm ON (jm.id=v.mem_id) WHERE v.journal = '".$journal->users['id']."' AND v.mem_id != '0' AND v.date > '".$time_24."' ORDER BY v.date DESC LIMIT ".$ibforums->input['st'].", 50"); while ($rows = $DB->fetch_row()) { $rows['date'] = $journal->get_date( $rows['date'],"H:i:s"); $rows['ip'] = long2ip($rows['ip_jaddress']); if (!$rows['j_posts']){ $rows['j_posts'] = "-"; $rows['j_title'] = "---"; } $who .= $journal->skin->html['listing']->vlist_row($rows); } Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Lera Опубликовано 24 Сентября 2007 Автор Жалоба Поделиться Опубликовано 24 Сентября 2007 Спасибо большое, vzport, всё заработало. А можно ещё вопрос? А как сделать, чтобы отображалось отображаемое имя? То есть ник, а не имя для входа? В каком файлике заменить? Ещё раз спасибо. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
vzport Опубликовано 24 Сентября 2007 Жалоба Поделиться Опубликовано 24 Сентября 2007 если по списку, то замени везде где обращается к "name" на "members_display_name", тоесть во всех изменениях Вся инфа берется с таблицы ibf_members , вроде там храниться отображаемое имя.Пример {$rows['name']} меняем на {$rows['members_display_name']} Аналогично $DB->query("SELECT v.*, m.id, m.members_display_name, ну и так далее.. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Lera Опубликовано 24 Сентября 2007 Автор Жалоба Поделиться Опубликовано 24 Сентября 2007 Спасибо огромнейшее. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Еve Опубликовано 27 Октября 2007 Жалоба Поделиться Опубликовано 27 Октября 2007 Заметил небольшой косяк:отображаются только те пользователи, у которых есть дневник.неплохо было бы добавить отображение и просто форумных пользователей... имхо Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
vzport Опубликовано 27 Октября 2007 Жалоба Поделиться Опубликовано 27 Октября 2007 Заметил небольшой косяк:отображаются только те пользователи, у которых есть дневник.неплохо было бы добавить отображение и просто форумных пользователей... имхо не может такого быть)запись и обновление базы происходить по ID форума$DB->query("REPLACE INTO ibf_jvizitors (mem_id, journal, date) VALUES (" .$ibforums->member['id']. ", ".$journal->users['id'].", ".$time.") ");а так же читается имя пользователя по ID из таблицы форума$DB->query("SELECT v.*, m.* FROM ibf_jvizitors v LEFT JOIN ibf_members m ON (m.id=v.mem_id) WHERE v.journal = '".$journal->users['id']."' AND v.mem_id != '0' AND v.date > '".$time_24."' ORDER BY v.date DESC"); из этого следует, что никакого значения нет, есть дневник или нет у пользователя. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Еve Опубликовано 28 Октября 2007 Жалоба Поделиться Опубликовано 28 Октября 2007 не может такого быть)Может. Итак, косяк заключается в "исправлении" от AllureВ user_bloks.php вставить его не после $blocks[12] = $this->block_search(); а после $blocks[9] = $this->block_ufavorite(); (цифры в прямых скобках у вас свои, у меня просто блоков больше и у них сортировка другая).Т.е. добавлении блока в условие if ($ibforums->member['is_j_owner']) { $blocks[5] = $this->block_ufriend(); $blocks[7] = $this->block_ufavorite(); }в этом случае, блок показывается только хозяину и считает соответственно только его. =)Как только перенёс в обычный ряд. Косяк скурился... з.ы.Остальные изменения в посте от Allure имхо можно оставлять. Блок остается не виден для посетителя, но считает его. з.ы.ы.От себя ещё добавлю, вот такую мелочь:заменить в user_blocks.php $DB->query("REPLACE INTO ibf_jvizitors (mem_id, journal, date) VALUES (" .$ibforums->member['id']. ", ".$journal->users['id'].", ".$time.") ");на if(!empty($ibforums->member['id'])){ $DB->query("REPLACE INTO ibf_jvizitors (mem_id, journal, date) VALUES (" .$ibforums->member['id']. ", ".$journal->users['id'].", ".$time.") "); }Это не даст забивать базу нулевыми юзерами (тобишь гостями). Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
replicant Опубликовано 28 Октября 2007 Жалоба Поделиться Опубликовано 28 Октября 2007 В user_bloks.php вставить его не после $blocks[12] = $this->block_search(); а после $blocks[9] = $this->block_ufavorite(); (цифры в прямых скобках у вас свои, у меня просто блоков больше и у них сортировка другая).Т.е. добавлении блока в условие if ($ibforums->member['is_j_owner']) { $blocks[5] = $this->block_ufriend(); $blocks[7] = $this->block_ufavorite(); }в этом случае, блок показывается только хозяину и считает соответственно только его. =)Как только перенёс в обычный ряд. Косяк скурился... Я тоже на это натыкался, но Но местоположения блока не после block_search, а после block_ufriends я не менял и вроде бы все работает. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Allure Опубликовано 29 Октября 2007 Жалоба Поделиться Опубликовано 29 Октября 2007 Итак, косяк заключается в "исправлении" от AllureВ user_bloks.php вставить его не после $blocks[12] = $this->block_search(); а после $blocks[9] = $this->block_ufavorite(); (цифры в прямых скобках у вас свои, у меня просто блоков больше и у них сортировка другая).Дык там же в скобках написано:(цифры в прямых скобках у вас свои, у меня просто блоков больше и у них сортировка другая) Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Еve Опубликовано 29 Октября 2007 Жалоба Поделиться Опубликовано 29 Октября 2007 Дык там же в скобках написано:Причём тут цифры? Блоки ufriend и ufavorite НЕ отображаются посетителям никогда, следовательно функция (а точнее запрос в этой функции) добавления посетителя НЕ происходит (если он не является владельцем дневника естественно). Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.