No Name, посмотрел дополнение, для первого раза очень хорошо, продолжайте в том же духе)
Есть некоторые моменты в коде, где я бы сделал по другому, например:
В файле system\fields\rximgo.php не нужны методы hookAfterAdd и hookAfterRemove они и так выполняются в таком же виде, что есть сейчас.
В методе parse вы получаете объект core потом из request получаете ctype_name и slug, что бы получить текущий запись.
$inCore = cmsCore::getInstance(); $content_model = $inCore->getModel('content'); $current_item = $content_model->getContentItemBySLUG($inCore->request->get('ctype_name'), $inCore->request->get('slug')); $url_item = $inCore->uri; $my_zapros_tip_contetna = 'con_'.$inCore->request->get('ctype_name'); $my_get_str = ($content_model->getItemById($my_zapros_tip_contetna, $current_item['id']))['rx_user_iamgo'];
Не нужны такие сложности, так как текущий запись уже есть в этом методе, просто обращайтесь так
$this->item['ctype_name']; // имя типа контента $this->item['id']; // ID записи $this->item['title']; // Заголовок записи $this->item['rx_user_iamgo']; или $value; // Значение вашего поля
В файле system\controllers\rxcontroller\actions\addamgomer.php
Данные о текущем пользователей получаете так cmsUser::get('is_logged') или cmsUser::get('id')
Лучше получать так
$this->cms_user->is_logged; // авторизован или нет $this->cms_user->is_admin; // админ или нет $this->cms_user->id; // ID текущего пользователя $this->cms_user->nickname; // ник пользователя
Так же вы создаете объект модели контента cmsCore::getModel('content') и обращаетесь в getItemById
Данный метод общий и можно обращаться с любой модели, поэтому лучше создайте свой файл model.php или объект
$model = new cmsModel();
Еще заметил, что везде используете insertOrUpdate, хотя update ни разу не было, поэтому лучше использовать insert
В файле templates\modern\controllers\rxcontroller\fild_rx_imgo.tpl.php есть такой неправильный код
<div style="width: 50px;height: 50px;float: left;margin: 5px;"> <a href="/users/<?php echo $users_model->getUser($user_go)['id']; ?>" title="<?php echo $users_model->getUser($user_go)['nickname']; ?>"> $user_avatar = $users_model->getUser($user_go)['avatar']; echo html_avatar_image($user_avatar, 'small', $user->nickname); } else { echo html_avatar_image_empty($users_model->getUser($user_go)['nickname'], 'embed-responsive-item'); } ?> </a> </div>
Этот код выполняется в массиве списка пользователей и для каждого пользователя вы выполняете 5 запроса что бы получить id, nickname, avatar
Через какое то время начнутся нагрузки на базу, вам надо хотя бы в начале цикла получить один раз инфо о юзере, потом выводить
<?php $user = $users_model->getUser($user_go); ?> <div style="width: 50px;height: 50px;float: left;margin: 5px;"> <a href="<?php echo href_to('users', $user['id']); ?>" title="<?php echo $user['nickname']; ?>"> $user_avatar = $user['avatar']; echo html_avatar_image($user_avatar, 'small', $user->nickname); } else { echo html_avatar_image_empty($user['nickname'], 'embed-responsive-item'); } ?> </a> </div>
Но всё же не советую в tpl файлах использовать запросы на базу, это лучше сделать в файле system\fields\rximgo.php
В этом же файле выводить иконки полностью с <svg></svg> не надо, для этого есть удобный метод
<?php html_svg_icon('solid', 'minus-circle'); ?>
В остальном всё нормально, обращайтесь если возникнут вопросы
