Pechora.Dev 🐻

Pechora.Dev 🐻

+35
Репутация
255
Рейтинг
#1 Компонент "Shortcodes Builder" 28 сентября 2025 в 17:41

Loadырь, изучение php для админов и не нужно. Как я уже писал выше, скорее всего я очень плохо изъяснился, и никто посыла толком и не понял. Рассмотрев систему со всех сторон, я уже понял что одним компонентом тут не обойтись — и вероятнее всего нужно делать отдельный шаблон. Полностью независимый от модерна

#2 Компонент "Shortcodes Builder" 21 сентября 2025 в 20:00
так а не лучше тогда дать возможность создавать свой шаблон через админку, но стандартным синтаксисом?)
Def

Про какой стандарт идет речь?

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

Итак, просто покажу что уже есть и как это работает.

Для начала компонент добавляет в настройки типа контента новые опции:

Изображение

Сейчас, вывод новостей выглядит так:

Изображение

Напишем простой шаблон, используя шорткоды компонента:

Изображение

И посмотрим что получилось на сайте:

Изображение

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

Как только будет готова первая версия для теста, выложу в блог. 

#4 Компонент "Shortcodes Builder" 19 сентября 2025 в 01:10

лучше, чем 

Тем, что делаем мы это прямо из АП, без необходимости создавать шаблон в нужной директории виджета/поля/шаблона контроллера

Добавлено спустя 27 минут
Короче, как на ДЛЕ.
pupsik

Вообще нет. Эх, видать не моя фишка понятно объяснять суть идей 😆

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

 Fuze, в том-то и дело, что шаблон писать и не нужно. Скажем как я это вижу. На примере виджета меню (прям очень приблизительно). Пишем наипростецкий виджет, в котором всего две опции (родной виджет для обработки и шаблон виджета). Выбираем в первом списке «Меню», а в шаблоне пишем что-то вроде этого:

  1. <nav class="nav [nav-class]">
  2. <ul>
  3. [menu=menu_name return=array]
  4. [foreach:menu_items]
  5. <li class="[is-active]active[/is-active] [nav-li-class]">
  6. <a href="[url]">
  7. [title] [icon-solid:envelope]
  8. </a>
  9.  
  10. [if:children]
  11. <ul class="sub-menu">
  12. [foreach:children]
  13. <li class="sub [nav-li-class] [is-active]active[/is-active]">
  14. <a href="[url]">[title]</a>
  15.  
  16. [if:children]
  17. <ul class="sub-sub-menu">
  18. [foreach:children]
  19. <li class="sub [nav-li-class] [is-active]active[/is-active]">
  20. <a href="[url]">[title]</a>
  21. </li>
  22. [/foreach]
  23. </ul>
  24. [/if]
  25. </li>
  26. [/foreach]
  27. </ul>
  28. [/if]
  29. </li>
  30. [/foreach]
  31. </ul>
  32. </nav>

Сохраняем на позиции сетки. Содержимое поля «шаблон виджета» пишется в базу как есть — вместе с шорктодами (аля простой html), а вот уже дальше система обрабатывает эти шорткоды так как нужно. Понятно, что конструкция [foreach:menu_items]...[foreach] должна обработаться так:

  1. <?php foreach ($items as $item) { ?>...<?php } ?>

Вообще, у меня есть понимание как это должно работать. И инструмент больше для разработчиков, нежели для рядовых пользователей. Я видел и знаю CMS, где это очень хорошо реализовано. 

Поэтому прошу сильно не пинать — это всего лишь пока мысль, даже не имеющая рабочего прототипа. И, как говорится — «Идея с балконами пришла уже после строительства дома»

#6 Компонент "Shortcodes Builder" 18 сентября 2025 в 20:06

 Fuze, шаблонизатор наверное нет. Просто при помощи регулярок описать шорткоды. Просто их получится очень много. У любого поля могут быть кучи дополнительных параметров, помимо самого значения. Поэтому задача для меня интересная, сейчас думаю, как бы это лучше все организовать. Однажды я такое делал, но для собственной мини-cms, там ядро и классы знал вдоль и поперек. В данном же случае придется прямо погружаться в изучение всех методов. 

но думаю, какая-то минимальная версия будет скоро готова, хотя бы которая будет просто рендерить значения полей на фронте. 

#1 Компонент "Shortcodes Builder" 18 сентября 2025 в 17:18

Добрый день! Работая с InstantCms, столкнулся с тем, что если что-то нужно разрабатывать в дизайн сайта (список записей типа контента например), приходится либо создавать свой шаблон, либо править уже имеющиеся. 

И на ум пришла идея создать компонент, который позволял бы при создании или редактировании типа контента самостоятельно создавать структуру списка и отдельной записи. Например вот так:

  1. [addcss="my-list"]
  2. [addjs="my-list"]
  3. <section class = "my-list">
  4. [ctype]
  5. <div class = "list-item-[ctype-name]">
  6. <h3>[ctype-field-title]</h3>
  7. <p>[ctype-field-content]</p>
  8. <a href = "[url]" class = "button-more">Читать</a>
  9. </div>
  10. [/ctype]
  11. </section>

Суть проста — шорткоды обрабатываются как отдельные конструкции или элементы. Например шорткод [ctype-field-title] выведет значение поля «Заголовок». 

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

В связи с этим провожу опрос. Вероятнее всего, на этой уйдет время, но уверен, найдет отклик среди тех, кто разрабатывает много и часто. 

Предвидя возможные вопросы скажу сразу — нет, это не wysywig редактор. Да, html как минимум знать нужно. 

#7 Генерация имён файлов 15 сентября 2025 в 15:18

 ruccich, кеширование однако

#8 [ЕСТЬ РЕШЕНИЕ] Демо-версия сайта не запускается 15 сентября 2025 в 10:20

Что-то не так?

А.Саган

Да вроде работает

Изображение

#9 [ЕСТЬ РЕШЕНИЕ] helper.php ломает стили админки 8 сентября 2025 в 07:48

 Михаил, это не баг, а ожидаемое поведение системы. Можете добавить проверку на админку в вашем хелпере:

  1. function html_input($type = 'text', $name = '', $value = '', $attributes = []) {
  2.  
  3. if ($type === 'password' && empty($attributes['autocomplete'])) {
  4. $attributes['autocomplete'] = 'off';
  5. }
  6. $attributes['type'] = $type;
  7. $attributes['name'] = $name;
  8. $attributes['value'] = $value;
  9.  
  10. // Если это админка - возвращаем стандартные классы
  11. if (cmsCore::getInstance()->uri_controller == 'admin') {
  12. return html_tag_short('input', $attributes, 'input form-control');
  13. }
  14.  
  15. // Для фронтенда - просто кастомные классы
  16. return html_tag_short('input', $attributes, 'my-custom-class');
  17. }

Решение такое себе, но я почему-то подозреваю, что в тему admincoreui тоже нужно класть хэлпер. Могу ошибаться. 

#10 Дополнительные поля в любом виджете 31 августа 2025 в 12:32

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

#11 Дополнительные поля в любом виджете 31 августа 2025 в 11:04

 Михаил, чтобы добавить поле, в файле опций options.form.php

  1. new fieldТипПоля('options:имя_поля', [
  2. 'title' => 'Заголовок поля'
  3. ]),


Где ТипПоля — например string или number, а имя_поля — системное имя для использования в шаблоне.

А так в целом вообще неясно, какую цель вы преследуете 😀

#12 Компонент + поле "Мультизагрузка файлов" - анонс 29 августа 2025 в 19:43

 Def, показывается. Попробуйте на хостинге затестить, так как на локальном все за секунду загружается. )))

#13 Компонент + поле "Мультизагрузка файлов" - анонс 29 августа 2025 в 16:35

Изображение

Сортировка в премиум-версии. 

#14 Компонент + поле "Мультизагрузка файлов" - анонс 28 августа 2025 в 12:06

Здорово!) А как имена файлам задавать, чтобы на сайте выводились понятные названия?) И если файл назван киррилицей, то может ли сразу в имя поставлять именно коррилицу?)

Def

Такую опцию я уже сделал:

Изображение

Возможность переименования файлов тоже готова — можно переименовывать как латиницу в кириллицу так и наоборот. А так по умолчанию, если не отмечена опция «Сохранять оригинальные названия файлов» то файл с именем Документ.pdf при загрузке превращается в document.pdf

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