Нужна помощь с условиями

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО InstantCMS 2.X
#1 30 сентября 2024 в 18:31

Есть поле «написать сообщение» — когда не авторизован его не видно.

Хотелось бы вывести так что бы даже не авторизованным оно было видно, но при нажатии появлялось окно предлагающее авторизоваться

Вот код:

  1. <?php
  2.  
  3. class fieldMessage extends cmsFormField
  4. {
  5. public $title = LANG_PARSER_MESSAGE;
  6. public $is_virtual = true;
  7.  
  8. public function getOptions()
  9. {
  10. return [
  11. new fieldString('title', [
  12. 'title' => LANG_PARSER_MESSAGE_TITLE,
  13. 'default' => 'Написать сообщение',
  14. ]),
  15. ];
  16. }
  17.  
  18. public function parse($value)
  19. {
  20. if ($this->item['user_id']===cmsUser::get('id') || !cmsUser::isLogged()) {
  21. return false;
  22. }
  23.  
  24.  
  25. return '<a class="ajax-modal ajax-modal-ready" href="/messages/write/'.$this->item['user_id'].'">' . html($this->getOption('title'), false) . '</a>';
  26. }
  27.  
  28. public function getInput($value)
  29. {
  30. return false;
  31. }
  32. }

Помогите плиз

#2 30 сентября 2024 в 20:15

 Happy, замените метод parse на

  1. public function parse($value){
  2.  
  3. //не авторизован
  4. if(!cmsUser::isLogged()){
  5.  
  6. return '<a class="ajax-modal" href="' . href_to('auth', 'login') . '">' . html($this->getOption('title'), false) . '</a>';
  7.  
  8. }
  9.  
  10. //автор
  11. if ($this->item['user_id']===cmsUser::get('id')) {
  12. return false;
  13. }
  14.  
  15. //остальные
  16. return '<a class="ajax-modal ajax-modal-ready" href="/messages/write/'.$this->item['user_id'].'">' . html($this->getOption('title'), false) . '</a>';
  17. }

должно помочь. Для понимания добавил комментарии.

#3 30 сентября 2024 в 20:47

 Zau4man, Спасибо, то что нужно!!!

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