WebMan

WebMan

В данный период я не оказываю услуг и не занимаюсь сторонними разработками
+434
Репутация
6116
Рейтинг
#1 Подсказки для терминов в статьях (как на Хабре) 10 октября 2025 в 11:43

Как вариант.

Если речь про термины, то логично будет вынести их в какой-то тип контента с двумя полями: термин и его htm-описание. Этот тип контента можно выводить на сайте отдельно в разделе «Термины», возможно с виджетом-фильтром списка терминов по начальным буквам (А, Б, В и т.д.) и отдельной страницей для каждого термина.

Соответственно, в компоненте подсказок нужны три опции: тип контента, поле для термина и поле для описания.

Технологий вывода подсказок может быть несколько:

1. Автоматический при генерации страницы

В опциях компонента «Термины» указываются типы контента и их поля, в которых компонент должен искать и выделять термины.

При генерации страницы такого типа контента к найденным терминам компонент добавляет html-код (css-стиль) для выделения термина на странице (обычно это прерывистое подчёркивание и изменение цвета), а также java-код при наведении мышки для обращения к серверу через ajax и получения соответствующего html-кода подсказки. Желательно чтобы полученные данные кешировались на случай, если термин на странице используется несколько раз.

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

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

Минусы: повышается нагрузка на сервер при генерации страниц. И не понятно, как быть со склонениями и падежами терминов в текстах, может быть добавить в тип контента «Термины» третье поле со склонениями, по которому и будет производиться поиск.

2. Автоматический при создании контента

Компонент «Термины» при наборе (добавлении, редактировании) текста в реакторе проверяет каждое новое набираемое (изменяемое) слово (после пробела или знака пунктуации), ищет его в типе контента терминов по первым набранным буквам и предлагает выпадающий список найденных терминов, начинающихся с этих букв или содержащих эту строку. При выборе какого-то термина из этого списка, слово оборачивается java-код для обращения к серверу за описанием этого термина.

Плюсы: полный контроль автора за подсказками по терминам, при редактировании наглядно видны существующие термины.

Минусы: при добавлении новых терминов на сайт, они не будут выделяться в старых текстах, придётся вручную просматривать тексты и добавлять в редакторе.

3. Ручной при создании контента

При наборе (добавлении, редактировании) текста в реакторе автор может нажать кнопку «Термин» как у Вас на скрине. Тогда компонент поищет этот термин в заданном в опциях типе контента и предложит варианты терминов оттуда. Если такого термина нет, то можно сделать всплывающее окошко быстрого добавления с двумя полями «термин» и «описание».

Может быть можно сочетать две или сразу три подобных технологии.

#2 Компонент "Shortcodes Builder" 18 сентября 2025 в 22:48

а в шаблоне пишем что-то вроде этого:

Pechora

Пока не понятно, зачем это всё нужно? Ради каких целей столько усилий? Может для их решения есть более эффективные способы?

И заодно поясните, пожалуйста, чем конструкция (да ещё и без подсветки кода)

  1. [ctype-name]

лучше, чем 

  1. <?php echo $ctype['name'] ?>

Ведь админу придётся изучать новый синтаксис, к тому же очень ограниченный вашими хотелками и согласием на внедрение. А сервер будет нагружаться постоянной компиляцией псевдо-шаблона.

#3 Компонент "Shortcodes Builder" 18 сентября 2025 в 21:14

думаю, какая-то минимальная версия будет скоро готова

Pechora

Идея может быть полезна тем, кто хочет дать возможность изменять вывод контента операторам сайта (клиентам). Или тем, кто хочет оперативно через Админку что-то менять в простых шаблонах вывода.

Но нужна будет проверка ошибок для введённых шаблонов с дружественными описаниями и понятными подсказками. И хотя бы минимальная документация по уже реализованным возможностям. Желательна базовая цветовая подсветка вводимого кода. И хорошо бы иметь возможность хранить по несколько шаблонов для каждого типа контента и выбирать их из списка, а не править один единственный. Вы действительно хотите настолько заморочиться?

И сразу добавьте кеширование получившегося php-шаблона, а также удаление/изменение кешированного php-шаблона при изменении шорткодов. Это избавит от компиляции шорткодов при каждом запросе страницы.

Может быть Вам подойдёт вариант просто хранить в компоненте (в БД) php-шаблоны, а не изобретать свой мини-шаблонизатор со своим языком? Этого хватит, чтобы оперативно менять вывод контента через Админку, например. Вообще, сначала желательно определиться с целями такого компонента и для кого он будет предназначен, а уже потом думать, как проще и удобнее это реализовать.

#4 Как скрыть не активных пользователей (без подтверждения e-mail) из виджета списка новых пользователей? 22 сентября 2023 в 14:58

Вроде архив приложил, но может что-то забыл нажать. Дублирую.

Прикрепленный файл
webman-install-1-0-0.zip 4 Кб
#5 Как скрыть не активных пользователей (без подтверждения e-mail) из виджета списка новых пользователей? 22 сентября 2023 в 11:52

Действительно, в постах блога побились ссылки на картинки и некоторые файлы. Пока у меня нет возможности их исправить, поэтому прилагаю архив с готовым пакетом пустого компонента из поста «Как создать свой компонент для хуков?». После установки на него нужно накатить обновление из поста «Исключаем неактивных пользователей из списков».

Хаки — не лучший способ изменения InstantCMS. Но если Вам очень хочется, то можно перед этой строкой в /system/controllers/users/widgets/list/widget.php

  1. list($fields, $model) = cmsEventsManager::hook('profiles_list_filter', array($fields, $model));

добавить строку

  1. $model->filterIsNull('is_locked');

Все эксперименты, естественно, лучше производить на локальной копии сайта.

#6 Как скрыть не активных пользователей (без подтверждения e-mail) из виджета списка новых пользователей? 21 сентября 2023 в 19:08
#7 Редирект с главной страницы на внутреннюю 16 марта 2023 в 20:11

500 ошибку выдает

Антон

1. Перенаправления на хостинге разрешены?

2. Адрес страницы, куда перенаправлять подставлен без ошибок?

3. Целевой адрес напрямую открывается?

4. Логи Апача в панели управления хостингом без ошибок?

Если везде ответы «Да», то обращайтесь в техподдержку хостинга.

#8 Редирект с главной страницы на внутреннюю 16 марта 2023 в 18:12
  1. RewriteEngine On
  2. RewriteBase /
  3. RewriteRule ^$ page.php
#9 [ЕСТЬ РЕШЕНИЕ] вход в админку после смены хостера 19 декабря 2022 в 11:12

если снести полностью сайт и БД. И попробовать развернуть сайт с 0, будет ли эффект?

santi

Для проверки можно развернуть демку на тестовом поддомене.

#10 [ЕСТЬ РЕШЕНИЕ] Не сохраняются настройки в админке после переезда 23 сентября 2022 в 08:51

Посмотрите, что в момент сохранения пишет в логах ошибок PHP на севере?

#11 [ЕСТЬ РЕШЕНИЕ] Не сохраняются настройки в админке после переезда 22 сентября 2022 в 21:04

Чтобы убедиться, что проблема точно не в правах, можно прописать для папки /system/config/ и файлов в ней права 777. Проверить сохранение конфига.

А потом опять вернуть для папки 755, для файлов в ней 644, для config.php и theme_*.yml — 666.

#12 [ЕСТЬ РЕШЕНИЕ] Не сохраняются настройки в админке после переезда 22 сентября 2022 в 15:22

Выставьте права 755 на папку конфигурации /system/config/

https://docs.instantcms.ru/manual/install#права-доступа

#13 [ЕСТЬ РЕШЕНИЕ] Разделитель, горизонтальная черта в меню - как добавить? 3 апреля 2022 в 23:27

Для дефолтной темы я когда-то использовал такой способ.

Делал пункт меню с заголовком и ссылкой "---". Прописывал в нём класс css «divider».

А в стиле css своего шаблона добавлял стиль:

  1. /* Пункт выпадающего подменю со стилем divider - разделитель */
  2. .menu li.divider {
  3. height: 1px;
  4. margin: 2px -3px;
  5. overflow: hidden;
  6. border-bottom: 1px solid #CCCCDD;
  7. pointer-events: none !important;
  8. cursor: not-allowed !important;
  9. }
  10.  

Получилось примерно так

Изображение

Можете поиграться со стилями под Вашу тему.

#14 [ЕСТЬ РЕШЕНИЕ] Вопрос о работе сайта Instantcms.ru... 17 апреля 2021 в 16:58

Почему основной сайт по прежнему работает на InstantCMS 1, а дополнения сайта на InstantCMS 2...?

Антон Круппо
Видимо, идёт постепенный переход на Двойку. Перенести офсайт на новую версию не так просто, как кажется, и времени требует очень много. Подумайте, что важнее пользователям: новый востребованный функционал в Двойке или перевод на неё офсайта? Ответ очевиден. Вот все силы и были брошены на развитие движка. По мере освобождения ресурсов будет обновлён и сайт Инстанта. Процесс обновления в процессе… 😊

Дело в том, что хочу запустить сайт на первой ветке.

Антон Круппо
Имеет смысл только если у Вас есть очень серьёзные, обоснованные причины оставаться на Единичке и если Вы сможете самостоятельно написать для неё нужные компоненты или функции, добавить поддержку новых технологий.
В противном случае без колебаний выбирайте Двойку. Она более современная, удобная, расширяемая и перспективная.
#15 Какую нагрузку может держать проект? 15 апреля 2021 в 18:51

Коллеги, кто нибудь устраивал нагрузку движка?

Tempest
Шесть лет назад я проводил простое нагрузочное тестирование на шареде. Можете посмотреть графики и почитать выводы. Расчётная нагрузка при описанных тогда условиях составляла десятки тысяч уников в сутки.

За это время Двойка была много раз оптимизирована по разным критериям. Серверы также ускорились: даже шаровые хостинги перешли на NVMe SSD и более шустрые процы, ограничения на хостингах улучшились за те же деньги. Так что итоговая нагрузочная способность современного сайта на Двойке выросла минимум в несколько раз.

Могу показать это ускорение на цифрах: шесть лет назад минимальное время создания главной страницы Двойки с демо-данными, которое я видел на шареде, было около 200 мс, а год назад около 30 мс. Это без встроенного кеширования.
🍪Мы используем файлы cookie для работы сайта. Читать подробнее.