Итак, с задачей частично справился.
Создал виджет который показывает доп поля пользователя. Виджет работает, но не так как хотелось бы.
У виджета в админке есть опции, где я прописываю какие поля необходимо показывать (через запятую).
Проблема:
Но он выводит только данные из текстовых полей.
Не выводит данные из списков, местоположений и дат.
Не группирует поля как в профиле (напрример: общая информация, контакты и пр.)
Нет стилизации (верстки, классов как в профиле).
мойвиджет.php.tpl содержит такой вывод
<?php if($fields_names) { ?> <div class="fields" style="padding-left:10px;"> <?php foreach($fields_names as $name) { ?> <div><span class="dopoinf"><?php echo $fields[$name]['title'] ?>:</span> <?php echo $profile[$name] ?></div> <?php } ?> </div> <?php } ?>
А widget.php это
<?php class widgetUsersPcavatar extends cmsWidget { public $is_cacheable = false; public function run(){ $uri = cmsCore::getInstance()->uri; $content_model = cmsCore::getModel('content'); $item = $content_model->getContentItem($res2[0], $res2[1], 'slug'); $id = $item['user_id']; } else { $id = $res[1]; } $content_model->setTablePrefix(''); $content_model->orderBy('ordering'); if($this->options['fields_names']) { $fields = $content_model->getContentFields('users'); } $profile = cmsCore::getModel('users')->getUser($id); 'profile' => $profile, 'id' => $id, 'fields_names' => $this->options['fields_names'] ? explode(",", $this->options['fields_names']) : false, ); } }
options.form.php содержит
<?php class formWidgetUsersPcavatarOptions extends cmsForm { public function init() { 'type' => 'fieldset', 'title' => LANG_OPTIONS, 'title' => 'name полей для вывода', 'hint' => 'через запятую, в порядке вывода', 'default' => 0 )), ) ), ); } }