Lera Опубликовано 6 Августа 2007 Жалоба Поделиться Опубликовано 6 Августа 2007 Есть такой мод для форума. Кто сегодня читал топик. А можно ли это как-то пристроить в дневники? http://mods.invisionize.com/db/index.php/f/5629 Пользователям интересно, кто читает их дневник. Если у кого-то уже стоит, поделитесь, пожалуйста. Помню был уже такой вопрос, но в общей теме, которая сейчас разбита на части Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
vzport Опубликовано 6 Августа 2007 Жалоба Поделиться Опубликовано 6 Августа 2007 присоединяюсь к вопросу.очень хотелось бы такой мод. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
delfin Опубликовано 11 Августа 2007 Жалоба Поделиться Опубликовано 11 Августа 2007 поддерживаю Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
wrm Опубликовано 5 Сентября 2007 Жалоба Поделиться Опубликовано 5 Сентября 2007 +1 Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
vzport Опубликовано 5 Сентября 2007 Жалоба Поделиться Опубликовано 5 Сентября 2007 Может и коряво, но работает)100% работает) Если кто адаптирует или есть другая мысль, готов выслушать. А у меня вот уже давно работает вот так: добавляем в базуCREATE TABLE `ibf_jvizitors` ( `mem_id` int(10) NOT NULL default '0', `journal` int(10) NOT NULL default '0', `date` int(10) NOT NULL default '0', UNIQUE KEY `mem_id` (`mem_id`,`journal`)) TYPE=MyISAM; в dosetup.phpв функции function do_panel()Найти: $key_check = array( 'j_info_pos','j_block_friends','j_block_ufriends','j_block_favorite', 'j_block_ufavorite','j_block_comments','j_block_calendar','j_block_interest', 'j_block_anterest','j_block_info');Заменить на $key_check = array( 'j_info_pos','j_block_friends','j_block_ufriends','j_block_favorite', 'j_block_ufavorite','j_block_comments','j_block_calendar','j_block_interest', 'j_block_anterest','j_block_info','j_block_vizitors');Найти: $block_order = array('j_block_links','j_block_votes','j_block_interest','j_block_anterest','j_block_friends','j_block_ufriends','j_block_favorite','j_block_ufavorite','j_block_calendar','j_block_comments','j_block_counter','j_block_search');заменить на: $block_order = array('j_block_links','j_block_votes','j_block_interest','j_block_anterest','j_block_friends','j_block_ufriends','j_block_favorite','j_block_ufavorite','j_block_calendar','j_block_comments','j_block_counter','j_block_search','j_block_vizitors');Найти: if ( !preg_match( "/^\d+$/", $ibforums->input['j_block_search'] ) ) { $ibforums->input['j_block_search'] = 0; }После добавить: if ( !preg_match( "/^\d+$/", $ibforums->input['j_block_vizitors'] ) ) { $ibforums->input['j_block_vizitors'] = 0; } Найти: $do_setting = $do_setting | (($ibforums->input['j_block_search'] & 1) << 24); После добавить: $do_setting = $do_setting | (($ibforums->input['j_block_vizitors'] & 1) << 26);В setup.phpНайти: // no-yes $blocks = array('j_block_votes','j_block_links','j_block_counter','j_block_search'); Заменить на: // no-yes $blocks = array('j_block_votes','j_block_links','j_block_counter','j_block_search','j_block_vizitors');Найти: if (!$ibforums->cache['group_cache'][$journal->users['mgroup']]['g_j_allow_search']) { unset($p_list['j_block_search']); }После добавить: if ($ibforums->cache['group_cache'][$journal->users['mgroup']]['g_j_allow_vizitors']) { unset($p_list['j_block_vizitors']); }Нати: $block_order = array('j_block_links','j_block_votes','j_block_interest','j_block_anterest','j_block_friends','j_block_ufriends','j_block_favorite','j_block_ufavorite','j_block_calendar','j_block_comments','j_block_counter','j_block_search');Заменить на: $block_order = array('j_block_links','j_block_votes','j_block_interest','j_block_anterest','j_block_friends','j_block_ufriends','j_block_favorite','j_block_ufavorite','j_block_calendar','j_block_comments','j_block_counter','j_block_search','j_block_vizitors');В user_blocks.php Найти: $blocks[11] = $this->block_search();После добавить: $blocks[12] = $this->block_vizitors();Найти:} ?> Добавить перед: function block_vizitors() { global $ibforums, $DB, $journal; $time = time(); $time_24 = (time() - 86400); $DB->query("REPLACE INTO ibf_jvizitors (mem_id, journal, date) VALUES (" .$ibforums->member['id']. ", ".$journal->users['id'].", ".$time.") "); if ($journal->users['j_block_vizitors'] < 1) return ''; { $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"); while ($row = $DB->fetch_row()) { $member = $journal->txt_truncate($row['name'],13); $time_viz = $journal->get_date( $row['date'],"H:i:s d.m");; $who.= "<tr><td class='row' width='50%'><a href='".$journal->base_url."user=".$row['id']."'>".$member."</a></td><td class='row' width='50%'>".$time_viz."</td></tr>"; } return $journal->skin->html['blocks']->block_vizitors($who); } } В journal.php (class_journal.php)Найти: $this->users['j_header_use'] = ($this->users['j_settings'] >> 25) & 1;Добавить после: $this->users['j_block_vizitors'] = ($this->users['j_settings'] >> 26) & 3; В skin_blocks.php Найти:} ?>Добавить перед: //=========================================================================== // block_vizitors //=========================================================================== function block_vizitors($who="") { global $ibforums, $journal; $IPBHTML = ""; //--starthtml--// $IPBHTML .= <<<EOF <nobr> <div class='mainhead'>Визиты за 24 часа</div> <table cellpadding='0' cellspacing='1'> {$who} </table> </nobr> EOF; //--endhtml--// return $IPBHTML; } Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
fithshist Опубликовано 6 Сентября 2007 Жалоба Поделиться Опубликовано 6 Сентября 2007 vzport, у меня белые страницы при включении блока. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
vzport Опубликовано 6 Сентября 2007 Жалоба Поделиться Опубликовано 6 Сентября 2007 включи показ ошибок и скинь сюда лог. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
fithshist Опубликовано 6 Сентября 2007 Жалоба Поделиться Опубликовано 6 Сентября 2007 vzport, исправил. глюк был в шаблонах. обновить забыл Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
vzport Опубликовано 7 Сентября 2007 Жалоба Поделиться Опубликовано 7 Сентября 2007 Заработало нормально, ничего я не упустил? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
fithshist Опубликовано 7 Сентября 2007 Жалоба Поделиться Опубликовано 7 Сентября 2007 vzport, тесты прошли успешно.еще бы опцию показывать блок "в виде ссылки". Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
vzport Опубликовано 7 Сентября 2007 Жалоба Поделиться Опубликовано 7 Сентября 2007 можно.не делал, но сделать можно..)думал об этом, но придется тогда делать страницу с списком Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Lera Опубликовано 12 Сентября 2007 Автор Жалоба Поделиться Опубликовано 12 Сентября 2007 (изменено) Спасибо, отлично, побежала ставить. Изменено 12 Сентября 2007 пользователем Lera Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
vzport Опубликовано 12 Сентября 2007 Жалоба Поделиться Опубликовано 12 Сентября 2007 user_blocks.phpskin_blocks.phpЭти файлы не подскажите где?в кэше) Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Lera Опубликовано 12 Сентября 2007 Автор Жалоба Поделиться Опубликовано 12 Сентября 2007 (изменено) Всё работает, только почему-то никак не названо. То есть пустая строчка у меня получилась после блока поиска, в настройках самих. То есть настройки дневника- панель информации - и последняя строчка пустая, но работает. Где бы ей название дать ?А так пашет всё как часики, спасибо тебе огромное. Спасибо ещё раз. Вопрос снят. Я нашла где добавить. 'j_block_vizitors' => "<b>Кто читал ваш дневник за последние 24 часа</b>", в файле lang_jsetup.php Изменено 12 Сентября 2007 пользователем Lera Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
replicant Опубликовано 17 Сентября 2007 Жалоба Поделиться Опубликовано 17 Сентября 2007 Похоже что в запросе создания таблицы CREATE TABLE `ibf_jvizitors` (`mem_id` int(10) NOT NULL default '0',`journal` int(10) NOT NULL default '0',`mem_name` varchar(255) NOT NULL default '', - эта строка лишняя!`date` int(10) NOT NULL default '0',UNIQUE KEY `mem_id` (`mem_id`,`journal`,`mem_name`)) TYPE=MyISAM; Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
vzport Опубликовано 18 Сентября 2007 Жалоба Поделиться Опубликовано 18 Сентября 2007 `mem_name` varchar(255) NOT NULL default '', - эта строка лишняя!сорризапрос остался старый, так как несколько вариантов было. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
replicant Опубликовано 18 Сентября 2007 Жалоба Поделиться Опубликовано 18 Сентября 2007 vzport, а нет ли у тебя в планах вынести этот блок в отдельную страницу, а на главной в модулях оставить только ссылку? А то у меня например более 1200 просмотров блога в день и эта штука уезжает на много страниц вниз. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
vzport Опубликовано 18 Сентября 2007 Жалоба Поделиться Опубликовано 18 Сентября 2007 vzport, а нет ли у тебя в планах вынести этот блок в отдельную страницу, а на главной в модулях оставить только ссылку? А то у меня например более 1200 просмотров блога в день и эта штука уезжает на много страниц вниз.уже начал делать... скоро выкину, может быть и сегодня даже. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
vzport Опубликовано 18 Сентября 2007 Жалоба Поделиться Опубликовано 18 Сентября 2007 накидал по быстрому, вроде работает и удобно)в journal.php (class_journal.php)находим 'postfriend' => 'misc/list_post', 'postfavorite' => 'misc/list_post', 'interest' => 'misc/list_interest', 'anterest' => 'misc/list_interest',после добавим: 'vizitors' => 'misc/list_vizitors',создаем файлик в /misc list_vizitors.phpс таким вот содержанием:<?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 j_list_vizitors(); class j_list_vizitors { var $output = array(); function j_list_vizitors() { global $ibforums, $journal; $journal->skin->add_to_list('listing'); $journal->skin->load_template(); $this->list_vizitors(); $journal->do_output($journal->skin->html['listing']->page_tpl($this->output)); } function list_vizitors() { global $ibforums, $journal, $DB; $time = time(); $time_24 = (time() - 86400); $DB->query("SELECT COUNT(*) as num FROM ibf_jvizitors WHERE journal = '".$journal->users['id']."' AND date > '".$time_24."'"); $max = $DB->fetch_row(); $max = $max['num']; $DB->free_result(); if ($ibforums->input['st'] >= $max) $ibforums->input['st'] = (floor($max / 50) * 50); if ($ibforums->input['st'] < 0) $ibforums->input['st'] = 0; if ($max) { // ---------------------------------------------- $journal->build_pagelinks(array( 'TOTAL_POSS' => $max, 'PER_PAGE' => 50, 'CUR_ST_VAL' => $ibforums->input['st'], 'L_MULTI' => $ibforums->lang['pages'], 'BASE_URL' => $journal->base_url.'user='.$journal->users['id'].'&list='.$ibforums->input['list'], ) ); $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.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");; $who .= $journal->skin->html['listing']->vlist_row($rows); } } $html = $journal->skin->html['listing']->vlist($who); $journal->title = array($title,$journal->users['name']); $journal->nav[] = '<a href="'.$journal->base_url.'&user='.$journal->users['id'].'">'.$journal->users['name'].'</a>'; $journal->nav[] = "Кто смотрел дневник ".$journal->users['name']; $this->output['CONTENT'] = $journal->skin->html['listing']->vizitors($html,$who); } } ?>сохраняем это все) далее в скинахskin_listing.phpдобавляем шаблоны//=========================================================================== // vlist //=========================================================================== function vlist($who="") { global $ibforums, $journal; $IPBHTML = ""; //--starthtml--// $IPBHTML .= <<<EOF <div class='tableborder'> <table cellpadding='0' cellspacing='1'> <div class='mainhead'>Ваш дневник сегодня посмотрели</div> {$who} </table> </div> EOF; //--endhtml--// return $IPBHTML; } //=========================================================================== // 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></td> <td class='row'>{$rows['j_posts']}</td> <td class='row' width='100'>{$rows['date']}</td> <td class='row'>{$rows['j_title']}</td> </tr> EOF; //--endhtml--// return $IPBHTML; }и все готово.. теперь подрезаем список в блокев файле (user_blocks.php)находим запрос $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.date > '".$time_24."' ORDER BY v.date DESC LIMIT 0, 25");добавили LIMIT 0, 25 (25 - колличество, можно поставить на свое усмотрение) далее в скине блока после<div class='mainhead'>Визиты за 24 часа</div> <table cellpadding='0' cellspacing='1'> {$who}добавим <tr> <td class='row' colspan='2' style='text-align:center;'> <a href="{$journal->base_url}user={$journal->users['id']}&list=vizitors"><b>далее..</b></a> </td> </tr> теперь вроде все. В скинах я думаю все понятно, красатульки навести не трудно Все, всем спокойной ночи! Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
replicant Опубликовано 19 Сентября 2007 Жалоба Поделиться Опубликовано 19 Сентября 2007 Все отлично, спасибо! Несколько поправок: У меня заработало только после того как в файле list_vizitors.php заменил эту строку $this->output['CONTENT'] = $journal->skin->html['listing']->vizitors($html,$who); на эту$this->output['CONTENT'] = $journal->skin->html['listing']->vlist($who,$html); Чтобы не видеть гостей там же заменим эту строкуWHERE v.journal = '".$journal->users['id']."' AND v.date > '".$time_24."'на этуWHERE v.journal = '".$journal->users['id']."' AND v.mem_id != '0' AND v.date > '".$time_24."' Названия колонок в skin_listing.php <div class='tableborder'> <table cellpadding='0' cellspacing='1'> <div class='mainhead'><b>Ваш дневник сегодня посмотрели</b></div> <tr> <td class='mainhead'>Кто</td> <td class='mainhead'>Постов</td> <td class='mainhead'>Когда смотрел(а)</td> <td class='mainhead'>Название дневника</td> </tr> {$who} </table> </div> Чтобы сделать list=visitors доступным только автору дневника необходимо в list_vizitors.php после этого function list_vizitors() { global $ibforums, $journal, $DB;добавить это // Only for journal owner if (!$ibforums->member['is_j_owner']) { $journal->err_journal($ibforums->lang['j_err_closed']); } Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
vzport Опубликовано 19 Сентября 2007 Жалоба Поделиться Опубликовано 19 Сентября 2007 О, спасиб.. огромное за поправички.Делал ночью, да еще и на скорую руку.. Я тут на основе этого сделал еще такую фигну:Какие дневники посмотрел пользователь))) (мини слежки) Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
replicant Опубликовано 19 Сентября 2007 Жалоба Поделиться Опубликовано 19 Сентября 2007 Я вот копался и думал как сделать сам блок доступным только автору дневника, но у меня было всего 15 минут свободных на работу с кодом, увы не успел. Что нашел уже опубликовал выше в комментарии. Может быть вечером будет время посмотреть. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Allure Опубликовано 19 Сентября 2007 Жалоба Поделиться Опубликовано 19 Сентября 2007 (изменено) Я вот копался и думал как сделать сам блок доступным только автору дневника, но у меня было всего 15 минут свободных на работу с кодом, увы не успел. Что нашел уже опубликовал выше в комментарии. Может быть вечером будет время посмотреть.В самой функции после этого: if ($journal->users['j_block_vizitors'] < 1) return '';добавить: if ($ibforums->member['is_j_owner']) {А после этого: return $journal->skin->html['blocks']->block_vizitors($who); }добавить это: } return '';У меня доступ в блок посетителей вообще настраивает сам хозяин дневника, как с доступом к списку друзей и избранных. Изменено 7 Декабря 2007 пользователем Allure Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
replicant Опубликовано 19 Сентября 2007 Жалоба Поделиться Опубликовано 19 Сентября 2007 Сделал сегодня днем так же как предлагает Allure, только в паре мест отличается расстановка скобок и добавлена возможность админу видеть блок. Но местоположения блока не после block_search, а после block_ufriends я не менял и вроде бы все работает. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
vzport Опубликовано 19 Сентября 2007 Жалоба Поделиться Опубликовано 19 Сентября 2007 опть, ну хоть сказали бы, что к чему) Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.