В Персональном меню если нет подписок и друзей, 404 страница.

InstantCMS 2.X

Как вывести правильно?

#1 12 декабря 2018 в 08:04
Приветствую, уважаемое сообщество.

Как сделать, чтобы когда нет друзей и подписок, в персональном меню пользователя отображалась не 404 страница при нажатии на ссылку — "users/{user.id}/subscriptions" и "users/{user.id}/friends", а показывалась страница, что "Нет друзей", "Нет подписок"?

Дело в том, что по умолчанию вкладки друзья и подписки скрыты в профилях пользователей, хотя в настройках профиля стоит галочка на "Показывать вкладку", но если мы выводим дополнительную ссылочку в персональное меню такого типа — users/{user.id}/subscriptions, то нас перекидывает на не существующую страницу.

Вопрос, как исправить данное недоразуменее?
Может надо в каком то файле открыть по умолчанию вкладки "Друзья" и "Подписки" и тогда отобразятся надписи что "Нет друзей", "Нет подписок"?
#2 12 декабря 2018 в 11:14


Приветствую, уважаемое сообщество.

Как сделать, чтобы когда нет друзей и подписок, в персональном меню пользователя отображалась не 404 страница при нажатии на ссылку — "users/{user.id}/subscriptions" и "users/{user.id}/friends", а показывалась страница, что "Нет друзей", "Нет подписок"?

Дело в том, что по умолчанию вкладки друзья и подписки скрыты в профилях пользователей, хотя в настройках профиля стоит галочка на "Показывать вкладку", но если мы выводим дополнительную ссылочку в персональное меню такого типа — users/{user.id}/subscriptions, то нас перекидывает на не существующую страницу.

Вопрос, как исправить данное недоразуменее?
Может надо в каком то файле открыть по умолчанию вкладки "Друзья" и "Подписки" и тогда отобразятся надписи что "Нет друзей", "Нет подписок"?

skewes

Вот тут есть ответ на твой вопрос
/forum/thread29499-1.html#287159
#3 12 декабря 2018 в 15:32
Может логичнее было бы скрывать этот пункт меню при отсутствии информации для вывода? Нет друзей и подписок не выводится и сам пункт.
#4 12 декабря 2018 в 15:56
DrDooM, спасибо большое, буду пробовать!
#5 12 декабря 2018 в 17:22

Может логичнее было бы скрывать этот пункт меню при отсутствии информации для вывода?

@Demonstrator

Логичнее, а как это реализовать?
#6 12 декабря 2018 в 18:01


Может логичнее было бы скрывать этот пункт меню при отсутствии информации для вывода?

@Demonstrator

Логичнее, а как это реализовать?

Андрей

Вам не надо ни чего реализовывать, кнопки появляются автоматом при наличии данных, а если их прикручивать насильно, то способ указанный мною выше поможет
#7 12 декабря 2018 в 19:43

указанный мною выше поможет

DrDooM

Я читал про ваш способ. Если честно понял до сюда:

Далее идем в файл profile_friends.php и добавляем переменные

  1. ]$friends = $this->model->getFriendsCount($profile['id']);
  1. $users = $this->cms_user->id;
Комментируем строку проверки наличия друзей и вывода 404

Переменные рендерим в шаблон.

Итог: юзер заходя в друзья видит сообщение нет друзей и кнопку перенаправление на поиск людей. А юзеры которые ручками попытаются поменять свой id в адресной строке на другой при этом находясь на странице друзья увидят сообщение что у этого пользователя нет друзей. Может кто то добавит конструктивной критики? :)

#8 12 декабря 2018 в 21:30

Я читал про ваш способ. Если честно понял до сюда:

Андрей
Это был общий принцип работы способа, на самом деле я уже давно переделал эти костыли, теперь достаточно в файле profile_friends.tpl.php заменить все что там было на:
  1.  
  2. <?php
  3. $this->setPageTitle($tab['title'], $profile['nickname']);
  4. $this->setPageDescription($profile['nickname'].' — '.$tab['title']);
  5. $this->addBreadcrumb(LANG_USERS, $this->href_to(''));
  6. $this->addBreadcrumb($profile['nickname'], $this->href_to($profile['id']));
  7. $this->addBreadcrumb($tab['title']);
  8. ?>
  9.  
  10. <?php
  11. $users = cmsUser::getInstance();
  12. $users_id = $users->id;
  13. $friends = cmsCore::getModel('users');
  14. $friends_id = $friends->getFriendsCount($profile['id']);
  15. ?>
  16.  
  17. <?php if (!$friends_id) { ?>
  18. <?php if ($users_id == $profile['id']) { ?>
  19. <div class="friend_notice"><?php echo 'У вас нет друзей' ?></div>
  20. <?php } else { ?>
  21. <div class="friend_notice"><?php echo 'У пользователя нет друзей' ?></div>
  22. <?php }?>
  23. <?php } ?>
  24.  
  25. <?php if ($friends_id) { ?>
  26. <div id="user_profile_header">
  27. <?php $this->renderChild('profile_header', array('profile'=>$profile, 'tabs'=>$tabs)); ?>
  28. </div>
  29. <div id="user_content_list"><?php echo $profiles_list_html; ?></div>
  30. <?php } ?>
  31.  
получаем при заходе в свои друзья сообщение "У вас нет друзей" и если заходим к кому то у кого тоже нет друзей "У пользователя нет друзей"
И да, что бы все было без ошибок в файле system\controllers\users\actions\profile_friends, 11 строку заменить на:
  1.  
  2. if (!isset($this->tabs['friends'])){ error_reporting(0);}
  3.  
вроде бы ни чего не забыл.
#9 12 декабря 2018 в 21:39

вроде бы ни чего не забыл.

DrDooM

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