Вопрос по виджету - Контент пользователя

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО InstantCMS 2.X
#1 1 марта 2019 в 18:09
Есть такой Виджет "Контент пользователя". Отлично работает, но только отображается на сайте тем пользователям которые добавили какой то контент на сайт, подскажите как сделать так чтоб этот виджет отображался на сайте в независимости от того добавил пользователь контент или нет.

Код с /system/controllers/users/widgets/content/widget.php
  1. <?php
  2.  
  3. class widgetUsersContent extends cmsWidget {
  4.  
  5. public function run(){
  6.  
  7. $user = cmsUser::getInstance();
  8.  
  9. if (!$user->id) { return false; }
  10.  
  11. $content_counts = cmsCore::getModel('content')->getUserContentCounts($user->id, false);
  12.  
  13. if (!$content_counts) { return false; }
  14.  
  15. return array(
  16. 'user' => $user,
  17. 'content' => $content_counts
  18. );
  19.  
  20. }
  21.  
  22. }
Код с /templates/default/controllers/users/widgets/content/content.tpl.php

  1. <?php $this->addHead('<style>
  2. ul.users_wgt_content{list-style:none;margin:0;}
  3. ul.users_wgt_content a{text-decoration:none;}
  4. .users_wgt_content li div:last-child{float:right;height:32px;}
  5. .users_wgt_content li div:first-child{float:left;}
  6. .users_wgt_content li{height:32px;line-height:32px;border-bottom:solid 1px gainsboro;padding-left:5px;clear:both;}
  7. .users_wgt_content li:hover{background:#f0f0f0;}
  8. .users_wgt_content span{margin-left:5px;background-color:#4da134;color:white;padding:2px 6px;border-radius:10px;font-size:12px;}
  9. .users_wgt_content li div:last-child a{padding:0px 8px;font-size:23px;}
  10. </style>'); ?>
  11.  
  12. <?php if ($content) { ?>
  13.  
  14. <ul class="users_wgt_content">
  15.  
  16. <?php foreach ($content as $key => $value): ?>
  17.  
  18.  
  19. <li>
  20. <div><a href="<?php echo href_to('users',$user->id,array('content',$key)); ?>"><?php echo $value['title']; ?></a><span><?php echo $value['count']; ?></span></div>
  21. <div><a href="<?php echo href_to($key,'add'); ?>">+</a></div>
  22. </li>
  23.  
  24.  
  25. <?php endforeach ?>
  26.  
  27. </ul>
  28.  
  29. <?php } ?>
#2 1 марта 2019 в 21:39
@nykolai,
  1. <?php
  2.  
  3. class widgetUsersContent extends cmsWidget {
  4.  
  5. public function run(){
  6.  
  7. $user = cmsUser::getInstance();
  8.  
  9. if (!$user->id) { return false; }
  10.  
  11. $counts = array();
  12.  
  13. $content_model = cmsCore::getModel('content');
  14.  
  15. $ctypes = $content_model->getContentTypes();
  16.  
  17. $content_model->filterEqual('user_id', $user->id);
  18.  
  19. $content_model->disableApprovedFilter();
  20. $content_model->disablePubFilter();
  21. $content_model->disablePrivacyFilter();
  22.  
  23.  
  24. foreach($ctypes as $ctype){
  25.  
  26.  
  27. if(!$ctype['options']['profile_on']){
  28. continue;
  29. }
  30.  
  31. $count = $content_model->getContentItemsCount( $ctype['name'] );
  32.  
  33. $counts[ $ctype['name'] ] = array(
  34. 'count' => $count,
  35. 'is_in_list' => $ctype['options']['profile_on'],
  36. 'title' => empty($ctype['labels']['profile']) ? $ctype['title'] : $ctype['labels']['profile']
  37. );
  38.  
  39. }
  40.  
  41. $content_model->resetFilters();
  42.  
  43. return array(
  44. 'user' => $user,
  45. 'content' => $counts
  46. );
  47.  
  48. }
  49.  
  50. }
#3 1 марта 2019 в 23:13
Ris, Спасибо.
#4 1 марта 2019 в 23:34


@nykolai,

  1.  
  2.  

Ris


А можете, пожалуйста, помочь поправить код немного иначе, чтоб в виджете ссылки вели на сам тип контента, а не как сейчас на тип контента, но с записями автора. А плюсики так и вели на создание записи в типе контента.
#5 1 марта 2019 в 23:43

чтоб в виджете ссылки вели на сам тип контента

@Milyana
  1. <?php $this->addHead('<style>
  2. ul.users_wgt_content{list-style:none;margin:0;}
  3. ul.users_wgt_content a{text-decoration:none;}
  4. .users_wgt_content li div:last-child{float:right;height:32px;}
  5. .users_wgt_content li div:first-child{float:left;}
  6. .users_wgt_content li{height:32px;line-height:32px;border-bottom:solid 1px gainsboro;padding-left:5px;clear:both;}
  7. .users_wgt_content li:hover{background:#f0f0f0;}
  8. .users_wgt_content span{margin-left:5px;background-color:#4da134;color:white;padding:2px 6px;border-radius:10px;font-size:12px;}
  9. .users_wgt_content li div:last-child a{padding:0px 8px;font-size:23px;}
  10. </style>'); ?>
  11.  
  12. <?php if ($content) { ?>
  13.  
  14. <ul class="users_wgt_content">
  15.  
  16. <?php foreach ($content as $key => $value): ?>
  17.  
  18.  
  19. <li>
  20. <div><a href="<?php echo href_to($key); ?>"><?php echo $value['title']; ?></a><span><?php echo $value['count']; ?></span></div>
  21. <div><a href="<?php echo href_to($key,'add'); ?>">+</a></div>
  22. </li>
  23.  
  24.  
  25. <?php endforeach ?>
  26.  
  27. </ul>
  28.  
  29. <?php } ?>
#6 1 марта 2019 в 23:58
Ris, Можете еще подсказать как реализовать счетчик, который бы показывал суммарное число со всех типов контента добавленных пользователем, если это не сложно.
#7 2 марта 2019 в 00:02


чтоб в виджете ссылки вели на сам тип контента

@Milyana
  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  

Ris

Большое спасибо!:)
#8 2 марта 2019 в 00:12
@nykolai,
  1. <?php $this->addHead('<style>
  2. ul.users_wgt_content{list-style:none;margin:0;}
  3. ul.users_wgt_content a{text-decoration:none;}
  4. .users_wgt_content li div:last-child{float:right;height:32px;}
  5. .users_wgt_content li div:first-child{float:left;}
  6. .users_wgt_content li{height:32px;line-height:32px;border-bottom:solid 1px gainsboro;padding-left:5px;clear:both;}
  7. .users_wgt_content li:hover{background:#f0f0f0;}
  8. .users_wgt_content span{margin-left:5px;background-color:#4da134;color:white;padding:2px 6px;border-radius:10px;font-size:12px;}
  9. .users_wgt_content li div:last-child a{padding:0px 8px;font-size:23px;}
  10. </style>'); ?>
  11.  
  12. <?php if ($content) { ?>
  13.  
  14. <ul class="users_wgt_content">
  15.  
  16. <?php foreach ($content as $key => $value): ?>
  17.  
  18.  
  19. <li>
  20. <div><a href="<?php echo href_to($key); ?>"><?php echo $value['title']; ?></a><span><?php echo $value['count']; ?></span></div>
  21. <div><a href="<?php echo href_to($key,'add'); ?>">+</a></div>
  22. </li>
  23. <?php $comcount[] = $value['count'];?>
  24.  
  25. <?php endforeach ?>
  26.  
  27. <?php echo '</br>Всего контента: '.array_sum($comcount);?>
  28.  
  29. </ul>
  30.  
  31. <?php } ?>
#9 2 марта 2019 в 00:18


@nykolai,

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  

Ris

Код немного не тот, это скорее по моему запросу, здесь нет ссылок ведущих на контент самого автора.:) И счётчик считает вообще все записи, а не суммарное количество записей конкретного пользователя.
#10 2 марта 2019 в 00:25
Ris, Огромное вам Спасибо.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.