htmlbook.ru/html/datalist
Файлик который лежит в \system\fields\us.php
<?php class fieldUs extends cmsFormField { public $title = 'Список пользователей'; public $sql = 'text NULL DEFAULT NULL'; public $is_vertical = false; public function getOptions(){ $users_model = cmsCore::getModel('users'); $getf=$users_model->getGroups(); $getmodel = new cmsmodel; $getmodels=$getmodel->get('users_fields',FALSE,'name'); $getmodels= array_column($getmodels, 'title', 'name'); $getg = array_column($getf, 'title', 'id'); $getg[0]='Все'; 'title' => 'Выберите групы пользователей', 'items' => $getg )), 'title' => 'Выберите выводимые поля в записи', 'items' => $getmodels )), 'title' => 'Выводить название групп полей', 'default' => false )) ); } public function parse($value){ $htl=''; $pol=$this->getOption('pol'); $grupaf=$this->getOption('grupaf'); $getmodel = new cmsmodel; $getmodels=$getmodel->get('users_fields',false,'name'); $users_model = cmsCore::getModel('users'); foreach ($val as $key => $uset){ $use = href_to_profile($users_model->getUser($uset)); $userr=$users_model->getUser($uset); $card_fields['email'] = 1; $content_model = cmsCore::getModel('content'); $content_model->setTablePrefix(''); $content_model->orderBy('ordering'); $fields = $content_model->getContentFields('users'); $i=0; foreach ($fields as $name => $field) { $inft3=''; $inft='';$inft2='';$titlcah='';$ceshep='';$profile_info=''; foreach ($pol as $poln){ if($field['name']==$poln){ 'title' => $field['title'], 'name' =>$field['name'], 'hint' => $field['handler_title'] != $field['title'] ? $field['handler_title'] : '', 'default' => 1 ); } }} $childs1['profile_fields']=$childs; $profile = $userr; $ceshep=$ceshep.' <div class="widget_profile_card">'; //1 $a='<a href="'.href_to('users', $profile['id']).'"title="'.$profile['nickname'].'" ">'; $ceshep=$ceshep.'<div class="profile_info">'.$a.$profile['nickname'].'</a>';//2 $ceshep=$ceshep.'<div class="avatar"><a href="'.href_to('users', $profile['id']).' ">'.html_avatar_image($profile['avatar'], 'micro', $profile['nickname']).'</a></div>'; } $ceshep=$ceshep.'<div class="name"><a href="'. href_to('users', $profile['id']).'">'.'</a></div>'; } $ceshep=$ceshep.'</div>';} //2 $user = cmsUser::getInstance(); $ceshep=$ceshep.'<div class="card_information content_item">';//2 $fieldsets = cmsForm::mapFieldsToFieldsets($profile_fields, function($field, $user){ return true; }, $profile); foreach($fieldsets as $fieldset){ if (!$fieldset['fields']) { continue; } $ceshep=$ceshep.'<div class="fieldset">';//3 if($grupaf){ if ($fieldset['title']){ $ceshep=$ceshep.'<div class="fieldset_title"> <h3>'.$fieldset['title'].' </h3> </div>'; } } foreach($fieldset['fields'] as $field){ if ($field['groups_read'] && !$user->isInGroups($field['groups_read'])) { continue; } $label_pos = 'none'; } else { $label_pos = $field['options']['label_in_item']; } $ceshep=$ceshep.' <div class="field ft_'.$field['type'].' f_'.$field['name'].'">';//4 if ($label_pos != 'none'){ $ceshep=$ceshep.'<div class="title title_'.$label_pos.'">'.$field['title'].': </div>'; } $ceshep=$ceshep.'<div class="value">'.$a.$field['handler']->setItem($profile)->parse( $profile[$field['name']] ).'</a> </div> </div>';//4 } $ceshep=$ceshep.'</div>';//3 } $ceshep=$ceshep.' </div>';//2 } $ceshep=$ceshep.'</div>';//1 $htl=$htl
Пример Виджет на JQuery и AJAX
То что нужно только как его прикрутить не пойму, тем более что при нажатии на пользователя он должен записываться в поле и сохраняется. На данный момент выглядит так, нажимаешь на чекбокс, потом сохраняешь запись и там сохраняется ник выбранного пользователя с ссылкой на его профиль.
Искусственный интеллект предвижу не ранее чем в cms 3.0.при нажатии на пользователя он должен записываться в поле и сохраняется
@CEH9I, создайте новый виджет. В системный файл поместите php код из примера, заменив данные на свои. Таблицу и тп. В файл шаблона виджета поместите HTML код из примера. И всё). Ну и is код тоже конечно подключить.
Зачем виджет? Мне это надо использовать в поле, в контенте.
<?php echo html_select_multiple($field->element_name, $field->data['items'], $field->data['selected'], array('id'=>$field->id, 'class' => $field->is_vertical ? 'block_labels' : '')); ?>
<?php $this->addTplJSNameFromContext('jquery-chosen'); $this->addTplCSSNameFromContext('jquery-chosen'); echo html_select($field->element_name, $field->data['items'], $value, ($field->data['dom_attr'] + array('multiple' => true))); ?>
Спасибо за ответ, но вылезает ошибка
@CEH9I, в файле \templates\default\assets\fields\us.php вместо этого
прописать это
будет селектор с мультивыбором и строкой поиска по этому селектору.
Notice: Undefined index: dom_attr in/templates/default/assets/fields/us.tpl.php on line 8
При замене "dom_attr" на "selected" получается такое окно.
'title' => 'Выводить название групп полей', 'default' => false )),
'default' => 'string', 'generator' => $search ; ))
Там выводит типы контентов.Можете вместо $search подставить
function() { return cmsForm::getAvailableFormFields('only_public', 'content'); }
И вроде у вас в этом файле уже есть метод который возвращает список.
Вам надо в файл us.php добавить после
этот код
'title' => 'Выводить название групп полей', 'default' => false )),
А в $search поместить ф-цию вывода групп пользователей. Или самих пользователей, что там вам надо. Наподобии этого
'default' => 'string', 'generator' => $search ; ))
Там выводит типы контентов.Можете вместо $search подставить
что бы посмотреть как будет.И это ли вам надо.
function() { return cmsForm::getAvailableFormFields('only_public', 'content'); }
И вроде у вас в этом файле уже есть метод который возвращает список.
Ошибка
Parse error: syntax error, unexpected 'new' (T_NEW), expecting ')'
Да и мне надо просто поле где при вводе букв будут подставляться нужные пользователи.
Сам список пользователей уже получен, нужно просто выбор не чек боксами а поиском по буквам. Я так понимаю копать надо только в файле us.tpl.php
Нет там никакой ошибки.Я проверял.Ошибка
для этого нужен соответствующий метод, который будет выполнять соответствующий запрос.Да и мне надо просто поле где при вводе букв будут подставляться нужные пользователи.
Нет. Но можете копать где хотите).Я так понимаю копать надо только в файле us.tpl.php
Нет там никакой ошибки.Я проверял.Ошибка
для этого нужен соответствующий метод, который будет выполнять соответствующий запрос.Да и мне надо просто поле где при вводе букв будут подставляться нужные пользователи.
Нет. Но можете копать где хотите).Я так понимаю копать надо только в файле us.tpl.php
Можете показать как у вас выглядит?