Тип поля "Список пользователей" помогите доработать!

InstantCMS 2.X
#17 4 мая 2021 в 13:33


disk.yandex.ru/d/OVLFwapN2YWTQA

Lora
Мне надо вывод такой во фронтеде при редактировании записи, а не в админки.
#18 4 мая 2021 в 14:18
Какая разница? Самый простой вариант. В вашем tpl.php файле.
  1. <input type="text" onclick="icms.UsList(this)" name="<?php echo $field->element_name; ?>" id="uslist" class="" value="<?php echo $value; ?>" />
  2. <div></div>
  3. <?php ob_start(); ?>
  4. <script>
  5. icms.UsList = function(e){
  6.  
  7. if(e.value != '') alert(e.value);// Если поле не пустое отправляете запрос на сервер, там выполняете поиск по букве, возвращаете совпадения и выводите в div.
  8. }
  9. </script>
  10. <?php $this->addBottom(ob_get_clean()); ?>
Но думаю, если поискать, то и системными методами можно обойтись.
P.S. Хотя наверное onchange лучше использовать.
#19 4 мая 2021 в 15:42


Какая разница? Самый простой вариант. В вашем tpl.php файле.

  1.  
  2.  

Lora

не работает Иллюстрация
#20 4 мая 2021 в 16:47
Что не работает? Вы похоже вообще не кодер. Зачем писали, помогите? Заказали бы разработку. Рублей за пятьсот, думаю, вам бы сделали. А если хотите сами, то начните с чего попроще.
#22 4 мая 2021 в 16:57
Сейчас поглядел код этого поля для вывода на фронте. Заметил это
  1. $getmodel = new cmsmodel;
  2. $getmodels=$getmodel->get('users_fields',false,'name');
  3. $val=explode(',', $value);
  4. $users_model = cmsCore::getModel('users');
  5. foreach ($val as $key => $uset){
  6. $use = href_to_profile($users_model->getUser($uset));
  7. $userr=$users_model->getUser($uset);
  8. $card_fields['email'] = 1;
  9. $content_model = cmsCore::getModel('content');
  10. $content_model->setTablePrefix('');
  11. $content_model->orderBy('ordering');
  12. $fields = $content_model->getContentFields('users');
Дальше смотреть не стал. Печалька. Тормоза вас ждут на сайте. Особенно, если в списке его выведете.
#23 4 мая 2021 в 17:20


Сейчас поглядел код этого поля для вывода на фронте. Заметил это

  1. $getmodel = new cmsmodel;
  2. $getmodels=$getmodel->get('users_fields',false,'name');
  3. $val=explode(',', $value);
  4. $users_model = cmsCore::getModel('users');
  5. foreach ($val as $key => $uset){
  6. $use = href_to_profile($users_model->getUser($uset));
  7. $userr=$users_model->getUser($uset);
  8. $card_fields['email'] = 1;
  9. $content_model = cmsCore::getModel('content');
  10. $content_model->setTablePrefix('');
  11. $content_model->orderBy('ordering');
  12. $fields = $content_model->getContentFields('users');
Дальше смотреть не стал. Печалька. Тормоза вас ждут на сайте. Особенно, если в списке его выведете.

Loadырь

после добавления кода выше, ошибка пропала, но поле для ввода текста не появилось.

И насчет кода что в нем не так? Доступ к этому полю для изменения будет только админ

Иллюстрация
#24 4 мая 2021 в 21:13

после добавления кода выше, ошибка пропала, но поле для ввода текста не появилось.

@CEH9I
Поле для ввода и не появится. Появиться должен обычный селектор, в котором при количестве строк (пользователей) более 8 появится поле для фильтрации по этому списку в селекторе. И судя по скрину, селектор с мультивыбором появился, но в консоли браузера есть кучка ошибок яваскриптов, которые блокируют появление этого "поля для ввода".

И насчет кода что в нем не так?

@CEH9I
Никакой оптимизации по запросам в бд. Создаются экземпляры модели до цикла два раза и во время цикла по количеству пользователей выбранных админом. И это работает при выводе на сайте для всех, даже для гостей. Если админ выберет 50 пользователей, то это будут 50 запросов в бд, только для того, чтобы вывести Логин и ссылку на каждого пользователя. И так для каждого вывода этого поля. В списке у вас выводится допустим 15 записей. Если это поле вывести в списке, то умножайте 15*50 =… Дальше сюда можно добавить пару виджетов со списками записей с этим полем из других разделов или типов контента и в результате несложных математических вычислений вы поймете сколько у вас будет запросов в бд для получения только логина и ссылки на профиль пользователя.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.