Zau4man

Zau4man

+1110
Репутация
19741
Рейтинг
#1 [ЕСТЬ РЕШЕНИЕ] как правильно в коде получить и применить пресеты для фото ? 20 марта 2026 в 09:51

полный до сервера

No Name

полный до сервера

и что должно быть в $presets

No Name

там же в коде все есть

  1. $presets = $model_images->filterIn('name', $sizes)->getPresets();

где $sizes — массив имен пресетов. Их надо найти в настройках поля avatart.

#2 [ЕСТЬ РЕШЕНИЕ] как правильно в коде получить и применить пресеты для фото ? 19 марта 2026 в 17:51

 No Name, открываем историю ваших сообщений. Видим, что вы уже спрашивали подобное в феврале. И там уже был ответ instantcms.ru/forum/zagruzka-avatara-polzovatelja-cherez-kod.html#post-369843

  1. private function copyPreviews($image_file, $presets) {
  2. try {
  3. $image = new cmsImages($image_file);
  4. } catch (Exception $exc) {
  5. files_delete_file($image_file, 2);
  6. return false;
  7. }
  8. $result = [];
  9. foreach ($presets as $p) {
  10. $resized_path = $image->resizeByPreset($p, '');
  11. if (!$resized_path) {
  12. continue;
  13. }
  14. $result[$p['name']] = $resized_path;
  15. }
  16. files_delete_file($image_file, 2);
  17. return $result;
  18.  
  19. }
#3 Компонент «Профили пользователей» не имеет настроек 18 марта 2026 в 07:34

 dimi55, почему то в админке вашего сайта у компонента Профили пользователей снята пометка о том, что у компонента есть админка.

Таблица: cms_controllers в базе данных. Должна быть 1 в поле is_backend. У вас, видимо, там NULL

Изображение

#4 Редирект внутри сайта 16 марта 2026 в 07:24

 Radu, возможно, вам подойдет решение из приложения к письму. Компонент Только свое позволяет ограничить для пользователя просмотр записей типа контента только своими записями. Администратор сайта видит все записи.

В настройках компонента можно выбрать, в каких типах контента нужна такая возможность.

Архив zonlyowns20240323_1.0.0 в приложении к сообщению. Пожалуйста, не ставьте сразу на живой сайт. Протестируйте где-то. Писалось 2 года назад.

Прикрепленный файл
zonlyowns20240323-1-0-0.zip 6 Кб
#5 Связь поле профиля и тп 13 марта 2026 в 06:42

 Radu, так если вы отредактируете старую запись, то таким образом потрете все данные о пробеге. 

#6 Что за блтотрафик и зачем? 11 марта 2026 в 16:19

Посмотрите статистику по ip адресам. Покажите статистику популярных страниц. По вашему скриншоту можно только гадать...

#7 [ЕСТЬ РЕШЕНИЕ] Вывод поля вместо единицы 10 марта 2026 в 14:53

 Pawell, реализуйте в вашем поле метод parse. Включите показ поля в списке/записи. Тогда html поля будет доступен примерно так

  1. <?php echo $item['fields']['framework']['html'] ?>

где framework — системное имя вашего поля.

Как я понимаю, вы отключили показ поля, чтобы он не «двоился». Выведите поле кодом выше, как я советую. а в месте обычного вывода полей, там где код примерно такой

  1. foreach ($item['fields'] as $field) {

добавьте что-то типа

  1. if (in_array($field['name'], ['framework'])) {
  2. continue;
  3. }

И получите то, что хотите. Ваше поле будет выведено в нужном вам месте шаблона списка/записи типа контента, а в месте коробочного вывода полей будет пропущено при помощи конструкции, описанной выше

#8 Пропал список из новостей в мобильной версии 3 марта 2026 в 07:01

 sferoid, столбцы, для которых не выводится название поля в списке, скрываются.

Вот код скрытия github.com/instantsoft/icms2/blob/298557aad05f89f74ce0d63b2fe8844991a48e42/templates/modern/content/default_list_table.tpl.php#L37

Чтобы показывались как тут demo.instantcms.ru/board в настройках поля заголовок должно быть вот так

Изображение

Так задумано автором. Вы можете изменить этот файл шаблона, задав свою логику.

#9 Как удалить название типа контента? 1 марта 2026 в 18:54

 Radu, можете удалить весь этот блок

  1. <?php if ($show_h1){ ?>
  2. <h1>
  3. <?php $this->pageH1(); ?>
  4. <?php if (!empty($ctype['rss_link'])){ ?>
  5. <sup>
  6. <a class="inline_rss_icon d-none d-lg-inline-block" title="RSS" href="<?php echo $ctype['rss_link']; ?>">
  7. <?php html_svg_icon('solid', 'rss'); ?>
  8. </a>
  9. </sup>
  10. <?php } ?>
  11. </h1>
  12. <?php } ?>

в файле шаблона просмотра категории github.com/instantsoft/icms2/blob/master/templates/modern/controllers/content/category_view.tpl.php

Но это также удалит и название категории при просмотре категории новостей.

Добавлено спустя 1 минуту

Ну и править лучше в своем дочернем шаблоне, чтобы при обновлении движка правки в шаблоне не «затерлись». Про дочерние шаблоны instantcms.ru/blogs/horoshie-mysli/kak-ne-poterjat-pravki-v-shablone-delaem-dochernii-shablon-4549.html

#10 Изменение размера шрифта при использовании мобильного устройства 23 февраля 2026 в 17:46

понятия не имею что оно делает

pupsik

это поможет частично. Это подключит в итоговый файл стилей вот такой scss github.com/instantsoft/icms2/blob/master/templates/modern/scss/bootstrap/vendor/_rfs.scss

и к стилям типа

  1. h4, .h4 {
  2. font-size: 1.5rem;
  3. }

будут добавлены еще стили через media

  1. @media (max-width: 1200px) {
  2. h4, .h4 {
  3. font-size: calc(1.275rem + 0.3vw);
  4. }
  5. }

что сделает размеры текста зависимыми от ширины экрана.

Наверно автору поможет уменьшить «Базовый размер шрифта» до 0.9rem + включить опцию «Включить адаптивные размеры шрифтов».

Это уменьшит шрифт в целом и сделает его повышение в зависимости от ширины экрана более плавным.

#11 [ЕСТЬ РЕШЕНИЕ] Работа сайта без регистрации в Роскомнадзоре... 18 февраля 2026 в 20:40

 ReY, в приложении к сообщению форума компонент Авторизация и регистрация по никнейму

После установки не забудьте настроить компонент, а также добавить ссылки enter/login enter/register и enter/logout?csrf_token={csrf_token} в меню

ИзображениеИзображениеИзображениеИзображениеИзображениеИзображение

Делалось перед сном. Могут быть опечатки, ошибки.

Ну и вы должны понимать:

1. куки сайт все равно создает, а значит о них надо предупреждать
2. нужны какие-то решения по восстановлению доступа для пользователей. Например, просить указать в профиле какое-то секретное слово.
3. Нужны какие-то средства борьбы со спамом. Например, после регистрации помещать пользователя в группу с минимальными правами и переводить в общую только после проявления человечности

Если пожеланий в ходе тестов не возникнет, размещу решение в блогах.

Прикрепленный файл
enter20260218-1-0-0.zip 15 Кб
#12 [ЕСТЬ РЕШЕНИЕ] Работа сайта без регистрации в Роскомнадзоре... 16 февраля 2026 в 14:22

Может есть какое-то дополнение для регистрации с помощью логина и пароля или как-то и где-то можно настроить поле мейла

ReY

судя по коду экшнов входа и регистрации, пытаться вмешаться хуками и что-то исправить в самом компоненте авторизации не стоит.

На мой взгляд, для вашей затеи, если не пугает обилие спама, лучше написать простой компонент, в котором также реализовать два экшна: вход и регистрация. По очень простой форме никнейм и пароль. 

И уже в своем компонент реализовать логику нужных проверок. При регистрации генерировать фейковое мыло. Отключать рассылку писем, если у пользователя фейковое мыло. Дать возможность указать нормальное мыло.

А далее, например при логине взять от пользователя никнейм, пароль, найти его в базе, получить оттуда фейковое мыло, и уже его использовать в коробочном методе логина cmsUser::login github.com/instantsoft/icms2/blob/d2275e1e3fbb4c3d68f7db9851bab619aa870d42/system/core/user.php#L284

И т.п.

Подобное делал во входе через телеграм в теме instantcms.ru/forum/samye-prostye-registracija-i-vhod-na-sait.html Но то решение вам точно не подойдет, просто, как пример реализованной логики входа и регистрации через сторонний компонент.

#13 Загрузка аватара пользователя через код 13 февраля 2026 в 10:12

 No Name, код можете посмотреть в моем бесплатном дополнении 

Примерно так

  1. public function getPresetSizes() {
  2. return $this->getOption('sizes');
  3.  
  4. }
  5.  
  6. public function getPreviews($value) {
  7. $codes = $this->getYoutubeIds($value);
  8. if (!$codes) {
  9. return NULL;
  10. }
  11. $result = [];
  12. $sizes = $this->getPresetSizes();
  13. $model_images = cmsCore::getModel('images');
  14. $presets = $model_images->filterIn('name', $sizes)->getPresets();
  15. foreach ($codes as $code_item) {
  16. $code = $code_item['code'];
  17. $image = $this->copyPreview($code);
  18. $images = $this->copyPreviews($image, $presets);
  19. if ($images) {
  20. $result[$code] = $images;
  21. }
  22. }
  23. return empty($result) ? false : $result;
  24.  
  25. }
  26.  
  27. public function savePreviews($model, $ctype_name, $previews_name, $id, $result) {
  28. $table_name = $model->table_prefix . $ctype_name;
  29. $model->update($table_name, $id, [
  30. $previews_name => cmsModel::arrayToString($result)
  31. ],false,true);
  32.  
  33. }
  34.  
  35. private function copyPreview($code) {
  36.  
  37. $images = array(
  38. 'https://img.youtube.com/vi/' . $code . '/oardefault.jpg',//short
  39. 'https://img.youtube.com/vi/' . $code . '/maxresdefault.jpg',
  40. 'https://img.youtube.com/vi/' . $code . '/sddefault.jpg',
  41. 'https://img.youtube.com/vi/' . $code . '/hqdefault.jpg'
  42. );
  43.  
  44. $link = false;
  45.  
  46. foreach ($images as $ytimg) {
  47.  
  48. $h = get_headers($ytimg, true);
  49. $code = substr($h[0], 9, 3);
  50.  
  51. if ((int) $code < 400) {
  52. $link = $ytimg;
  53. break;
  54. }
  55. }
  56.  
  57. $dest = $this->getDestination($link);
  58. file_save_from_url($link, $dest);
  59. return $dest;
  60.  
  61. }
  62.  
  63. private function copyPreviews($image_file, $presets) {
  64. try {
  65. $image = new cmsImages($image_file);
  66. } catch (Exception $exc) {
  67. files_delete_file($image_file, 2);
  68. return false;
  69. }
  70. $result = [];
  71. foreach ($presets as $p) {
  72. $resized_path = $image->resizeByPreset($p, '');
  73. if (!$resized_path) {
  74. continue;
  75. }
  76. $result[$p['name']] = $resized_path;
  77. }
  78. files_delete_file($image_file, 2);
  79. return $result;
  80.  
  81. }
  82.  
  83. private function getDestination($link) {
  84. $uploader = new cmsUploader;
  85. $directory = $uploader->getUploadDestinationDirectory();
  86. $dest_name = files_sanitize_name($link);
  87. return $directory . $dest_name;
  88.  
  89. }
#14 Смена иконки в категориях 11 февраля 2026 в 08:33

 abodya, вот тут выводится иконка папки github.com/instantsoft/icms2/blob/92b6d68da99909b3607561abf867ea6af8a8827e/templates/modern/controllers/content/category_view.tpl.php#L134

Можете сменить ее на любую из иконок, которые найдете в настройках сайта

Изображение

#15 Где хранится информация об отрицательных масках в виджете? 4 февраля 2026 в 13:26

 Def, некорректно обновились с 2.16.3 до 2.17.0. И нет столбца, чтобы данные этого поля сохранить.

в install.php пакета обновления был такой код

  1. if(!$core->db->isFieldExists('widgets_bind', 'url_mask_not', false)){
  2. $core->db->query("ALTER TABLE `cms_widgets_bind` ADD `url_mask_not` TEXT NULL DEFAULT NULL COMMENT 'Отрицательные маски виджета' AFTER `groups_hide`;");
  3. }

Видимо, нужно выполнить вручную в phpmyadmin, заменив cms_ на префикс вашего сайта

  1. ALTER TABLE `cms_widgets_bind` ADD `url_mask_not` TEXT NULL DEFAULT NULL COMMENT 'Отрицательные маски виджета' AFTER `groups_hide`;

и там в установочкнике еще добавлялось поле описание для тегов. Его, скорее всего, тоже нет

  1. ALTER TABLE `cms_tags` ADD `description` TEXT NULL DEFAULT NULL AFTER `tag`;

Вспомнилось, так как у одного из клиентов была 1 в 1 проблема. При этом движок ни на что не ругался, обновление прошло штатно, просто столбцы не создались.

🍪Мы используем файлы cookie для работы сайта. Читать подробнее.