KirKMS Опубликовано 24 марта, 2021 Жалоба Поделиться Опубликовано 24 марта, 2021 Всем привет. Решил написать ещё один модуль для пользователей форума cmstools.ru Модуль выводит недавно посещаемые сообщества пользователя. Принцип работы. Пользователь зашел в сообщество, оно занеслось в бд и выводиться на странице всех сообществ пользователя. Если пользователь зашел ещё раз, то сообщество будет самым первым в в списке. Есть возможность очищать список сообществ. И есть полноценная страница, где выводятся все сообщества. Вот вам несколько скринов. Недостатки. Если название сообщества будет длинным, то вывод будет не очень красиво. Но это можно исправить при помощи обрезания строки. Типо mb_strimwidth($name, 0, 10, "...") Этапы установки будут под спойлером. Спойлер Зайти в базу данный и выполнить SQL Запрос CREATE TABLE `vii_user_public_visits` ( `id` int(11) NOT NULL, `uid` int(11) NOT NULL, `pid` int(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ALTER TABLE `vii_user_public_visits` ADD PRIMARY KEY (`id`); ALTER TABLE `vii_user_public_visits` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1; COMMIT; Зайти в файл .htaccess Найти там RewriteRule ^groups(/?)+$ index.php?go=groups [L] Вставить ниже RewriteRule ^groups/visits(/?)+$ index.php?go=groups&act=visits [L] Зайти в файл \system\modules\public.php Найти там $tpl->compile('content'); Вставить выше //Если есть текущее сообщество в списке, то удаляем для начала $db->query("DELETE FROM `".PREFIX."_user_public_visits` WHERE uid = '{$user_info['user_id']}' AND pid = '{$row['id']}'"); //Далее добавляем текущее сообщесто в список $db->query("INSERT INTO `".PREFIX."_user_public_visits` SET uid = '{$user_info['user_id']}', pid = '{$row['id']}'"); Зайти в файл\system\modules\groups.php Найти там default: Вставить выше //################### Модуль посещаемые сообщества by Kir KMS ###################// case "del_public_visits": NoAjaxQuery(); //Проверка что у пользователя есть список сообществ $check = $db->super_query("SELECT COUNT(*) AS cnt FROM `".PREFIX."_user_public_visits` WHERE uid = '{$user_info['user_id']}'"); //Если есть, то удаляем if($check['cnt']){ $db->query("DELETE FROM `".PREFIX."_user_public_visits` WHERE uid = '{$user_info['user_id']}'"); } exit(); break; //################### Моуль посещаемые сообщества by Kir KMS ###################// case "visits": $row_public_visits = $db->super_query("SELECT uid, pid FROM `".PREFIX."_user_public_visits` WHERE uid = '{$user_info['user_id']}' ORDER by `id` DESC LIMIT {$limit_page}, {$gcount}", 1); $row_public_visits_block = $db->super_query("SELECT COUNT(*) AS cnt FROM `".PREFIX."_user_public_visits` WHERE uid = '{$user_info['user_id']}'"); $tpl->load_template('groups/public_visits_head.tpl'); //Скрытие контента if($row_public_visits_block['cnt']){ $tpl->set('{num_visits}', $row_public_visits_block['cnt'].' '.gram_record($row_public_visits_block['cnt'], 'public_visits')); $tpl->set('[yes_public_visits]', ''); $tpl->set('[/yes_public_visits]', ''); $tpl->set_block("'\\[no_public_visits\\](.*?)\\[/no_public_visits\\]'si",""); }else{ $tpl->set('[no_public_visits]', ''); $tpl->set('[/no_public_visits]', ''); $tpl->set_block("'\\[yes_public_visits\\](.*?)\\[/yes_public_visits\\]'si",""); } $tpl->compile('info'); $tpl->load_template('groups/group_visits.tpl'); foreach($row_public_visits as $row){ //Запрос на вывод данных о сообществе $row = $db->super_query("SELECT id, title, photo, traf, adres FROM `".PREFIX."_communities` WHERE id = '{$row['pid']}'"); $tpl->set('{id}', $row['id']); if($row['adres']) $tpl->set('{adres}', $row['adres']); else $tpl->set('{adres}', 'public'.$row['id']); $tpl->set('{name}', stripslashes($row['title'])); $tpl->set('{icon}', getIcon($row['icons'])); $tpl->set('{traf}', $row['traf'].' '.gram_record($row['traf'], 'groups_users')); if($act != 'admin'){ $tpl->set('[admin]', ''); $tpl->set('[/admin]', ''); } else $tpl->set_block("'\\[admin\\](.*?)\\[/admin\\]'si",""); if($row['photo']) $tpl->set('{photo}', "/uploads/groups/{$row['id']}/100_{$row['photo']}"); else $tpl->set('{photo}', "{theme}/images/no_ava_groups_100.gif"); $tpl->compile('content'); } if($act == 'admin') $admn_act = 'act=admin&'; navigation($gcount, $owner['user_public_num'], 'groups?'.$admn_act.'page='); break; в этом же файле найти $tpl->load_template('groups/head.tpl'); Вставить ниже //Выводим список последних сообществ $row_public_visits = $db->super_query("SELECT uid, pid FROM `".PREFIX."_user_public_visits` WHERE uid = '{$user_info['user_id']}' ORDER by `id` DESC LIMIT 0, 7", 1); $row_public_visits_block = $db->super_query("SELECT COUNT(*) AS cnt FROM `".PREFIX."_user_public_visits` WHERE uid = '{$user_info['user_id']}'"); //Скрытие контента if($row_public_visits_block['cnt']){ $tpl->set('{num_visits}', $row_public_visits_block['cnt'].' '.gram_record($row_public_visits_block['cnt'], 'public_visits')); $tpl->set('[yes_public_visits]', ''); $tpl->set('[/yes_public_visits]', ''); }else{ $tpl->set_block("'\\[yes_public_visits\\](.*?)\\[/yes_public_visits\\]'si",""); } //Выводим сообщества foreach($row_public_visits as $row){ //Запрос на вывод данных о сообществе $sql_public_visits = $db->super_query("SELECT id, title, photo, traf, adres FROM `".PREFIX."_communities` WHERE id = '{$row['pid']}'"); if($sql_public_visits['photo']) $photo = "/uploads/groups/{$sql_public_visits['id']}/100_{$sql_public_visits['photo']}"; else $photo = "{theme}/images/no_ava_groups_100.gif"; $name = stripslashes($sql_public_visits['title']); if($sql_public_visits['adres']) $adres = $sql_public_visits['adres']; else $adres = 'public'.$sql_public_visits['id']; $traf = $sql_public_visits['traf'].' '.gram_record($sql_public_visits['traf'], 'groups_users'); $plist_users .= '<div class="onefaveu"><td><a href="/'.$adres.'" onClick="Page.Go(this.href); return false"><img src="'.$photo.'" alt="" /><div class="fave_tpad"><b>'.mb_strimwidth($name, 0, 10, "...").'</b></div></a><span class="online">'.$traf.'</span></div>'; }$tpl->set('{plist_users}', $plist_users); Закинуть файлы group_visits.tpl и public_visits_head.tpl в \templates\ваш шаблон\groups\ и открыть там файл head.tpl Найти в файле <div class="margin_top_10"></div><div class="allbar_title" [yes]style="margin-bottom:0px;border-bottom:0px"[/yes]>[yes]Вы состоите в {num}[/yes][no]Вы не состоите ни в одном сообществе.[/no]</div> Вставить выше [yes_public_visits] <div class="margin_top_10"></div><div class="allbar_title" style="margin-bottom:0px;border-bottom:1px solid #e0eaef">Недавно посещали {num_visits} |<a href="/groups/visits" onClick="Page.Go(this.href); return false;">Посмотреть все</a><a href="" onClick="groups.del_public_visits(); return false;"style="float: right;">Очистить список</a></div> <div style="height: 150px;">{plist_users}</div> [/yes_public_visits] Зайти в файл \templates\ваш шаблон\js\profile.js Найти там //GROUPS var groups = { Вставить сразу после //Модуль посещаемые сообщества by Kir KMS del_public_visits: function() { settings.privacyClose('msg'); Box.Show('del_public_visits', 380, lang_title_del_photo, '<div style="padding:15px;" id="del_status_text_forum">Вы уверены, что хотите очистить список посещаемых сообществ?</div>', lang_box_canсel, lang_box_yes, 'groups.start_public_visits()'); }, start_public_visits: function() { $.post('/index.php?go=groups&act=del_public_visits', function(d) { Box.Close(); Box.Info('err', 'Информация', 'Список посещаемых сообществ очищен.', 250, 2000); setTimeout('Page.Go(location.href)', 2300); }); }, Вот и вся установка Могут быть баги, это же паблик модуль С вами был KirKMS. От + в репу не откажусь. Предлагайте идеи для новых модулей. 6 Ссылка на комментарий Поделиться на другие сайты Поделиться
NaFanyA Опубликовано 24 марта, 2021 Жалоба Поделиться Опубликовано 24 марта, 2021 1) Сделай модуль, в функции которого можно будет выбирать "лайк" или "дизлайк" под записи пользователя или сообщества. 2) Модуль, позволяющий удалять записи с последующим их восстановлением. Типо удалил запись/пост, оно перемещается в раздел "Удаленный записи", после чего если захотел восстановить запись, то кликаешь по ней и она обратно возвращается к тебе на стену с пометкой "Восстановлено" Ссылка на комментарий Поделиться на другие сайты Поделиться
Klaus Опубликовано 24 марта, 2021 Жалоба Поделиться Опубликовано 24 марта, 2021 4 часа назад, KirKMS сказал: Всем привет. Решил написать ещё один модуль для пользователей форума cmstools.ru Модуль выводит недавно посещаемые сообщества пользователя. Принцип работы. Пользователь зашел в сообщество, оно занеслось в бд и выводиться на странице всех сообществ пользователя. Если пользователь зашел ещё раз, то сообщество будет самым первым в в списке. Есть возможность очищать список сообществ. И есть полноценная страница, где выводятся все сообщества. Вот вам несколько скринов. Недостатки. Если название сообщества будет длинным, то вывод будет не очень красиво. Но это можно исправить при помощи обрезания строки. Типо mb_strimwidth($name, 0, 10, "...") Этапы установки будут под спойлером. Скрыть контент Зайти в базу данный и выполнить SQL Запрос CREATE TABLE `vii_user_public_visits` ( `id` int(11) NOT NULL, `uid` int(11) NOT NULL, `pid` int(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ALTER TABLE `vii_user_public_visits` ADD PRIMARY KEY (`id`); ALTER TABLE `vii_user_public_visits` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1; COMMIT; Зайти в файл .htaccess Найти там RewriteRule ^groups(/?)+$ index.php?go=groups [L] Вставить ниже RewriteRule ^groups/visits(/?)+$ index.php?go=groups&act=visits [L] Зайти в файл \system\modules\public.php Найти там $tpl->compile('content'); Вставить выше //Если есть текущее сообщество в списке, то удаляем для начала $db->query("DELETE FROM `".PREFIX."_user_public_visits` WHERE uid = '{$user_info['user_id']}' AND pid = '{$row['id']}'"); //Далее добавляем текущее сообщесто в список $db->query("INSERT INTO `".PREFIX."_user_public_visits` SET uid = '{$user_info['user_id']}', pid = '{$row['id']}'"); Зайти в файл\system\modules\groups.php Найти там default: Вставить выше //################### Модуль посещаемые сообщества by Kir KMS ###################// case "del_public_visits": NoAjaxQuery(); //Проверка что у пользователя есть список сообществ $check = $db->super_query("SELECT COUNT(*) AS cnt FROM `".PREFIX."_user_public_visits` WHERE uid = '{$user_info['user_id']}'"); //Если есть, то удаляем if($check['cnt']){ $db->query("DELETE FROM `".PREFIX."_user_public_visits` WHERE uid = '{$user_info['user_id']}'"); } exit(); break; //################### Моуль посещаемые сообщества by Kir KMS ###################// case "visits": $row_public_visits = $db->super_query("SELECT uid, pid FROM `".PREFIX."_user_public_visits` WHERE uid = '{$user_info['user_id']}' ORDER by `id` DESC LIMIT {$limit_page}, {$gcount}", 1); $row_public_visits_block = $db->super_query("SELECT COUNT(*) AS cnt FROM `".PREFIX."_user_public_visits` WHERE uid = '{$user_info['user_id']}'"); $tpl->load_template('groups/public_visits_head.tpl'); //Скрытие контента if($row_public_visits_block['cnt']){ $tpl->set('{num_visits}', $row_public_visits_block['cnt'].' '.gram_record($row_public_visits_block['cnt'], 'public_visits')); $tpl->set('[yes_public_visits]', ''); $tpl->set('[/yes_public_visits]', ''); $tpl->set_block("'\\[no_public_visits\\](.*?)\\[/no_public_visits\\]'si",""); }else{ $tpl->set('[no_public_visits]', ''); $tpl->set('[/no_public_visits]', ''); $tpl->set_block("'\\[yes_public_visits\\](.*?)\\[/yes_public_visits\\]'si",""); } $tpl->compile('info'); $tpl->load_template('groups/group_visits.tpl'); foreach($row_public_visits as $row){ //Запрос на вывод данных о сообществе $row = $db->super_query("SELECT id, title, photo, traf, adres FROM `".PREFIX."_communities` WHERE id = '{$row['pid']}'"); $tpl->set('{id}', $row['id']); if($row['adres']) $tpl->set('{adres}', $row['adres']); else $tpl->set('{adres}', 'public'.$row['id']); $tpl->set('{name}', stripslashes($row['title'])); $tpl->set('{icon}', getIcon($row['icons'])); $tpl->set('{traf}', $row['traf'].' '.gram_record($row['traf'], 'groups_users')); if($act != 'admin'){ $tpl->set('[admin]', ''); $tpl->set('[/admin]', ''); } else $tpl->set_block("'\\[admin\\](.*?)\\[/admin\\]'si",""); if($row['photo']) $tpl->set('{photo}', "/uploads/groups/{$row['id']}/100_{$row['photo']}"); else $tpl->set('{photo}', "{theme}/images/no_ava_groups_100.gif"); $tpl->compile('content'); } if($act == 'admin') $admn_act = 'act=admin&'; navigation($gcount, $owner['user_public_num'], 'groups?'.$admn_act.'page='); break; в этом же файле найти $tpl->load_template('groups/head.tpl'); Вставить ниже //Выводим список последних сообществ $row_public_visits = $db->super_query("SELECT uid, pid FROM `".PREFIX."_user_public_visits` WHERE uid = '{$user_info['user_id']}' ORDER by `id` DESC LIMIT 0, 7", 1); $row_public_visits_block = $db->super_query("SELECT COUNT(*) AS cnt FROM `".PREFIX."_user_public_visits` WHERE uid = '{$user_info['user_id']}'"); //Скрытие контента if($row_public_visits_block['cnt']){ $tpl->set('{num_visits}', $row_public_visits_block['cnt'].' '.gram_record($row_public_visits_block['cnt'], 'public_visits')); $tpl->set('[yes_public_visits]', ''); $tpl->set('[/yes_public_visits]', ''); }else{ $tpl->set_block("'\\[yes_public_visits\\](.*?)\\[/yes_public_visits\\]'si",""); } //Выводим сообщества foreach($row_public_visits as $row){ //Запрос на вывод данных о сообществе $sql_public_visits = $db->super_query("SELECT id, title, photo, traf, adres FROM `".PREFIX."_communities` WHERE id = '{$row['pid']}'"); if($sql_public_visits['photo']) $photo = "/uploads/groups/{$sql_public_visits['id']}/100_{$sql_public_visits['photo']}"; else $photo = "{theme}/images/no_ava_groups_100.gif"; $name = stripslashes($sql_public_visits['title']); if($sql_public_visits['adres']) $adres = $sql_public_visits['adres']; else $adres = 'public'.$sql_public_visits['id']; $traf = $sql_public_visits['traf'].' '.gram_record($sql_public_visits['traf'], 'groups_users'); $plist_users .= '<div class="onefaveu"><td><a href="/'.$adres.'" onClick="Page.Go(this.href); return false"><img src="'.$photo.'" alt="" /><div class="fave_tpad"><b>'.mb_strimwidth($name, 0, 10, "...").'</b></div></a><span class="online">'.$traf.'</span></div>'; }$tpl->set('{plist_users}', $plist_users); Закинуть файлы group_visits.tpl 0 444 Б и public_visits_head.tpl 0 1 кБ в \templates\ваш шаблон\groups\ и открыть там файл head.tpl Найти в файле <div class="margin_top_10"></div><div class="allbar_title" [yes]style="margin-bottom:0px;border-bottom:0px"[/yes]>[yes]Вы состоите в {num}[/yes][no]Вы не состоите ни в одном сообществе.[/no]</div> Вставить выше [yes_public_visits] <div class="margin_top_10"></div><div class="allbar_title" style="margin-bottom:0px;border-bottom:1px solid #e0eaef">Недавно посещали {num_visits} |<a href="/groups/visits" onClick="Page.Go(this.href); return false;">Посмотреть все</a><a href="" onClick="groups.del_public_visits(); return false;"style="float: right;">Очистить список</a></div> <div style="height: 150px;">{plist_users}</div> [/yes_public_visits] Зайти в файл \templates\ваш шаблон\js\profile.js Найти там //GROUPS var groups = { Вставить сразу после //Модуль посещаемые сообщества by Kir KMS del_public_visits: function() { settings.privacyClose('msg'); Box.Show('del_public_visits', 380, lang_title_del_photo, '<div style="padding:15px;" id="del_status_text_forum">Вы уверены, что хотите очистить список посещаемых сообществ?</div>', lang_box_canсel, lang_box_yes, 'groups.start_public_visits()'); }, start_public_visits: function() { $.post('/index.php?go=groups&act=del_public_visits', function(d) { Box.Close(); Box.Info('err', 'Информация', 'Список посещаемых сообществ очищен.', 250, 2000); setTimeout('Page.Go(location.href)', 2300); }); }, Вот и вся установка Могут быть баги, это же паблик модуль С вами был KirKMS. От + в репу не откажусь. Предлагайте идеи для новых модулей. Модуль хороший, лайк в репу). А на счет длинного названия, то для этого есть: text-overflow: ellipsis; 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
KirKMS Опубликовано 24 марта, 2021 Автор Жалоба Поделиться Опубликовано 24 марта, 2021 1 час назад, _inkognito_04 сказал: 1) Сделай модуль, в функции которого можно будет выбирать "лайк" или "дизлайк" под записи пользователя или сообщества. 2) Модуль, позволяющий удалять записи с последующим их восстановлением. Типо удалил запись/пост, оно перемещается в раздел "Удаленный записи", после чего если захотел восстановить запись, то кликаешь по ней и она обратно возвращается к тебе на стену с пометкой "Восстановлено" Очень хорошие идеи. В паблике я создавал модуль удаления и восстановления записей, на основе его, можно сделать. т.к из бд запись не удаляется. Вопрос в том, где выводить эти записи. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
wooweef Опубликовано 26 марта, 2021 Жалоба Поделиться Опубликовано 26 марта, 2021 Годнота. Ссылка на комментарий Поделиться на другие сайты Поделиться
RUS67 Опубликовано 24 апреля, 2021 Жалоба Поделиться Опубликовано 24 апреля, 2021 (изменено) Работает отлично, НО, если сообщество верифицировано (подтверждено), то название не выводится - а отображается только картинка группы и кол-во участников. Может я что не так прописал, но во всём остальном без проблем! Изменено 24 апреля, 2021 пользователем RUS67 Ссылка на комментарий Поделиться на другие сайты Поделиться
NaFanyA Опубликовано 24 апреля, 2021 Жалоба Поделиться Опубликовано 24 апреля, 2021 3 часа назад, RUS67 сказал: Работает отлично, НО, если сообщество верифицировано (подтверждено), то название не выводится - а отображается только картинка группы и кол-во участников. Может я что не так прописал, но во всём остальном без проблем! Исправляется легко в php файле Ссылка на комментарий Поделиться на другие сайты Поделиться
Disy Опубликовано 21 декабря, 2021 Жалоба Поделиться Опубликовано 21 декабря, 2021 Вроде все норм, но при переходе во все просмотренные (visits) выдает ошибку 500.. Кто подскажет почему так? Ссылка на комментарий Поделиться на другие сайты Поделиться
KirKMS Опубликовано 22 декабря, 2021 Автор Жалоба Поделиться Опубликовано 22 декабря, 2021 6 часов назад, Disy сказал: Вроде все норм, но при переходе во все просмотренные (visits) выдает ошибку 500.. Кто подскажет почему так? Проверь этапы установки модуля. Допустил ошибку скорее всего!!! Ссылка на комментарий Поделиться на другие сайты Поделиться
ytryr Опубликовано 22 декабря, 2021 Жалоба Поделиться Опубликовано 22 декабря, 2021 Можно такой же сделать в поиске Людей кто новый или часто посещает будет круто думаю раньше помню был для зарегистрированных но не нашел его и там был на страницу регистрации Ссылка на комментарий Поделиться на другие сайты Поделиться
KirKMS Опубликовано 22 декабря, 2021 Автор Жалоба Поделиться Опубликовано 22 декабря, 2021 2 часа назад, ytryr сказал: Можно такой же сделать в поиске Людей кто новый или часто посещает будет круто думаю раньше помню был для зарегистрированных но не нашел его и там был на страницу регистрации Конечно можно сделать. Берёшь и делаешь. Всё очень просто. Добавляешь сортировку новую и всё. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Disy Опубликовано 24 декабря, 2021 Жалоба Поделиться Опубликовано 24 декабря, 2021 В 22.12.2021 в 06:38, KirKMS сказал: Проверь этапы установки модуля. Допустил ошибку скорее всего!!! Все перепроверил 2 раза, ошибок не допустил, но все же имеется ошибка 500.. Ссылка на комментарий Поделиться на другие сайты Поделиться
Disy Опубликовано 24 декабря, 2021 Жалоба Поделиться Опубликовано 24 декабря, 2021 Может дело в версии php? Какую используешь? Ссылка на комментарий Поделиться на другие сайты Поделиться
KirKMS Опубликовано 24 декабря, 2021 Автор Жалоба Поделиться Опубликовано 24 декабря, 2021 1 час назад, Disy сказал: Может дело в версии php? Какую используешь? Не уверен что в версии php. Модуль писал на версии 7.3. Пиши в ВК Давай тимвивер, я помогу с проблемой. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения