Проверка дружбы в записи ТК

ЗАКРЫТО InstantCMS 2.X

Как проверить пользователя на дружбу в записи ТК

#1 Вчера в 06:41

Всем привет,

Как проверить пользователя на дружбу в записи ТК?

В с писке ТК получается проверка, а в записи не работает.

В списке ТК делал проверку так:

  1. <?php if ($item['user']['is_friend'] == 1) { ?>
  2. он твой друг
  3. <?php } else { ?>
  4. он твой недруг
  5. <?php } ?>

В самой записи ТК ругается на переменную is_friend, распечатал дамп страницы и действительно нет переменной is_friend.

Скрин дампа записи ТК (нет is_friend)

Изображение

Скрин дампа списка ТК (есть is_friend)

Изображение

Подскажите пожалуйста как получить параметр пользователя is_friend в самой записи ТК

#3 Вчера в 11:26

Сильно не вникал, но попробуйте содержимое этой строки github.com/instantsoft/icms2/blob/master/system/controllers/content/model.php#L1351

добавить после этой github.com/instantsoft/icms2/blob/master/system/controllers/content/model.php#L1393 с запятой в конце. 

Loadырь

Такую ошибку выдало 

  1. Fatal error: Uncaught Error: Call to a member function getContentTypeByName() on null in C:\OSPanel\home\yakutsk.loc\system\controllers\content\actions\item_view.php:681 Stack trace: #0 C:\OSPanel\home\yakutsk.loc\system\controllers\content\actions\item_view.php(9): actionContentItemView->getItemAndCtype() #1 C:\OSPanel\home\yakutsk.loc\system\core\controller.php(643): actionContentItemView->run() #2 C:\OSPanel\home\yakutsk.loc\system\core\controller.php(512): cmsController->runExternalAction('item_view', Array) #3 C:\OSPanel\home\yakutsk.loc\system\core\controller.php(488): cmsController->executeAction('item_view', Array) #4 C:\OSPanel\home\yakutsk.loc\system\controllers\content\frontend.php(29): cmsController->runAction('item_view') #5 C:\OSPanel\home\yakutsk.loc\system\core\controller.php(537): content->route('news/15-budut-e...') #6 C:\OSPanel\home\yakutsk.loc\system\core\controller.php(488): cmsController->executeAction('news', Array) #7 C:\OSPanel\home\yakutsk.loc\system\core\core.php(996): cmsController->runAction('news', Array) #8 C:\OSPanel\home\yakutsk.loc\system\core\core.php(190): cmsCore->runController() #9 C:\OSPanel\home\yakutsk.loc\index.php(28): cmsCore->runHttp('/news/15-budut-...') #10 {main} thrown in C:\OSPanel\home\yakutsk.loc\system\controllers\content\actions\item_view.php on line 681
#4 Вчера в 12:07

Сделайте этот код github.com/instantsoft/icms2/blob/master/system/controllers/content/model.php#L1386-L1404 таким

  1. $user = cmsUser::getInstance();
  2.  
  3. return $this->getItemByField($table_name, $by_field, $id, function ($item, $model) use (($user, $ctype) {
  4.  
  5. $item['user'] = [
  6. 'id' => $item['user_id'],
  7. 'groups' => $item['user_groups'],
  8. 'slug' => $item['user_slug'],
  9. 'nickname' => $item['user_nickname'],
  10. 'privacy_options' => self::yamlToArray($item['user_privacy_options']),
  11. 'is_friend' => $user->isFriend($item['user_id']),
  12. 'avatar' => $item['user_avatar']
  13. ];
  14.  
  15. $item['is_draft'] = false;
  16.  
  17. if (!$item['is_approved']) {
  18. $item['is_draft'] = $model->isDraftContentItem($ctype['name'], $item);
  19. }
  20.  
  21. return $item;
  22. }, $by_field);
#5 Вчера в 12:11

Получилось!  Спасибо большое за подсказку куда смотреть 👍

Прокомментировал правки:

  1. $user = cmsUser::getInstance(); // Добавил эту строку
  2.  
  3. return $this->getItemByField($table_name, $by_field, $id, function ($item, $model) use ($ctype, $user) { // Здесь дописал $user
  4.  
  5. $item['user'] = [
  6. 'id' => $item['user_id'],
  7. 'groups' => $item['user_groups'],
  8. 'slug' => $item['user_slug'],
  9. 'nickname' => $item['user_nickname'],
  10. 'privacy_options' => self::yamlToArray($item['user_privacy_options']),
  11. 'is_friend' => $user->isFriend($item['user_id']), // Добавил эту строку
  12. 'avatar' => $item['user_avatar']
  13. ];
  14.  
  15. $item['is_draft'] = false;
  16.  
  17. if (!$item['is_approved']) {
  18. $item['is_draft'] = $model->isDraftContentItem($ctype['name'], $item);
  19. }
  20.  
  21. return $item;
  22. }, $by_field);

И в шаблоне записи добавил: 

Изображение

Результат: 

Изображение
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.