Есть ли виджет, отображающий группы в которые я вступил?

InstantCMS 2.X
#1 11 августа 2020 в 17:34
Всем привет!
Есть ли виджет, отображающий списком группы в которые я вступил?
Спасибо.
#2 11 августа 2020 в 17:57
Ранее писал для одного сайта, но его нет тут в каталоге (вроде). У меня к сожалению сейчас нет возможности его разместить тут (комп. другой). Может быть с кем делился, поделится им на форуме. Там ничего сложного собственно нет.

В крайнем случае, могу попросить, чтобы архив собрали и отправили, а я размещу тут, но это время.
#3 11 августа 2020 в 19:46
кстати тоже пригодилось бы
#4 12 августа 2020 в 20:27

Ранее писал для одного сайта, но его нет тут в каталоге (вроде). У меня к сожалению сейчас нет возможности его разместить тут (комп. другой). Может быть с кем делился, поделится им на форуме. Там ничего сложного собственно нет.

@Evg
Евгений, Вы мне делали такой виджет. К сожалению собрать полноценный архив для установки я не могу. Если приходится мне что то делать для других своих сайтов — я делаю это через просмотр переписки с Вами на sugata:)) Если не затруднит и есть время, пожалуйста сделайте профессиональный пак этого виджета.
#5 13 августа 2020 в 00:06
На данный момент у меня есть только инструкция, как поставить это дело (оказывается писал ранее на одном форуме, но забыл). Кто соберет в виджет тут, буду благодарен. Данные ест. ставьте свои.

1. Делаем бекап базы и файла всего сайта! (копию)
2. Создаем папку и файл по пути:
  1. system/controllers/groups/widgets/mymenu/widget.php
С содержанием:
  1. <?php
  2.  
  3. class widgetGroupsMymenu extends cmsWidget
  4. {
  5. public $is_cacheable = false;
  6. public function run() {
  7.  
  8. $user = cmsUser::getInstance();
  9. $myid = $user->id;
  10.  
  11. if ($myid > 0) {
  12. $myid = $myid;
  13. } else {
  14. $myid = '8'; //подписанные группы пользователя по умолчанию
  15. }
  16.  
  17. $controller = cmsCore::getController('groups');
  18. $model = $controller->model;
  19. $group = $model->getUserGroups($myid);
  20.  
  21. return [
  22. 'group' => $group,
  23. 'myid' => $myid
  24. ];
  25. }
  26. }
Создаем файл шаблона и папку по пути:

  1. templates/default/controllers/groups/widgets/mymenu/default.tpl.php
Содержание:
  1. <?php if (!empty($group)){ ?>
  2.  
  3. <?php
  4. $current_group = cmsModel::getCachedResult('current_group');
  5. $grid = $current_group['id'];
  6. ?>
  7. <h4 class="uk-text-uppercase uk-h6"> Читаю </h4>
  8.  
  9. <div class="body fav">
  10. <?php foreach($group as $my){ ?>
  11.  
  12. <a class="s-my-menu" href="/groups/<?php html($my['slug']); ?>/content/posts">
  13. <?php if (!empty($my['logo'])){ ?>
  14. <div class="s-my-image">
  15. <?php echo html_image($my['logo'], 'small', $my['title']); ?>
  16. </div>
  17. <?php } else { ?>
  18. <div class="s-my-image">
  19. <img src="/templates/default/images/icons/group.png" title="Группа" alt="Группа">
  20. </div>
  21. <?php } ?>
  22.  
  23. <span class="s-my-menu-name"> <?php html($my['title']); ?></span></a>
  24.  
  25. <?php } ?>
  26. </div>
  27.  
  28. <?php } else { ?>
  29.  
  30. <div>
  31. <div class="uk-background-default">
  32. Вы не подписаны ни на одно из пространств. <a href="/groups">Подпишитесь...</a>
  33. </div>
  34. </div>
  35. <?php } ?>
Запрос в базу (поставьте свой префикс!):

  1. INSERT INTO `ПРЕФИКС_widgets` (`id`, `controller`, `name`, `title`, `author`, `url`, `version`, `is_external`, `files`, `addon_id`) VALUES (NULL, 'groups', 'mymenu', 'Мои подписки (меню)', 'Evg', '', NULL, '1', NULL, NULL);
Идем в админку и ищем созданный виджет в Группах.

Без авторизации виджет показывает группы, подписанные на пользователя с id 8, меняем на любого. Мы создали служебный аккаунт, который отвечает за группы. Он отвечает за них и его группы дефолтные. Можно сделать по другому, мы делали так.
Аватарки группы имеет смысл выводить с мин. размерами (у нас small).

P.S. у меня нет возможность проверить сейчас это дело, но вроде должно работать. CSS соотв. нет, т.к. использовался Uikit3. Думаю, тут не должно быть проблем — с 10 строк накидать. Вроде всё.

Дополнение: виджет создан (спасибо, кто помог создать его, просил не называть имя). Файл у меня в профиле. Поддержка данного виджета не планируется. Задача была дать начальный макет (для последующей работы).
#6 22 сентября 2020 в 19:38
@Evg, установил виджет из ваших файлов и не работает

Fatal error: Uncaught Error: Class 'widgetGroupsMymenu' not found и там на ядро ссылается, 2.13.1
#7 22 сентября 2020 в 20:57


@Evg, установил виджет из ваших файлов и не работает

Fatal error: Uncaught Error: Class 'widgetGroupsMymenu' not found и там на ядро ссылается, 2.13.1

Александр

Тоже самое, а виджет нужный…
#8 22 сентября 2020 в 21:24
Кажется, в инструкции потерялся момент, что в таблице префикс_widgets нужно внести новую строчку с этим виджетом.
#9 22 сентября 2020 в 21:28
Сделать копию виджета "Группы", дописать одну строку, да и всё.
#10 22 сентября 2020 в 23:05
Вот новая версия: /users/10090/files.html
Посмотрите. Вроде все должно работать.

Огромное спасибо @Ris за сборку исправленной версии.
#11 23 сентября 2020 в 09:08
Забыл. Обратите внимание, в файле: system\controllers\groups\widgets\mymenu\widget.php
Стоит заглушка для неавторизированных участников. Им будут показаны группы пользователя с id 8: — служебный участник (я всегда, во всех системах создают еще несколько "служебных пользователей", для разных задач). Можно изменить на 1, чтобы показывать группы, которые видит админ.

Строка:
  1. $myid = '8'; //подписанные группы пользователя по умолчанию
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.