Виджет "поля контента"

ЕСТЬ РЕШЕНИЕ InstantCMS 2.X

Кто-то знает как работает этот виджет?

#1 6 августа 2021 в 22:17

Кто-то знает как работает этот виджет?

При установке видит только типы контента, на этом функционал заканчивается — поле «Фоновое изображение» не дает выбрать изображение, А поле «Поле», похоже, снабжено поиском, но не работает.

Вообще, цель — вывести свойства в боковую панель, чтобы столбиком шли. Виджет PHP не прокатил.

Версия 2.14.2, в документации пусто.

#2 6 августа 2021 в 22:29

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

Изображение

После этого, ваше поле появится в настройках виджета «Поля контента»:

Изображение

#3 6 августа 2021 в 22:38

 Make, понял. спасибо. Значит штатными средствами свойства в боковую панель не вынести…

#4 6 августа 2021 в 23:14

 Make, понял. спасибо. Значит штатными средствами свойства в боковую панель не вынести...

aTroll

Почему не вывести? Очень даже. Подсказка:

Изображение

#5 16 августа 2021 в 14:13

В общем. Изменил в шаблоне в файле /templates/default/content/default_item.tpl.php: добавил два контейнера gleft (для полей) и gright (для свойств) которые объединил контейнером gall

  1. <div class="gall">
  2. <div class="gleft">
  3. <?php if (!empty($fieldset['fields'])) { ?>
  4. <?php foreach ($fieldset['fields'] as $field) { ?>
  5.  
  6. <div class="field ft_<?php echo $field['type']; ?> f_<?php echo $field['name']; ?> <?php echo $field['options']['wrap_type']; ?>_field" <?php if($field['options']['wrap_width']){ ?> style="width: <?php echo $field['options']['wrap_width']; ?>;"<?php } ?>>
  7. <?php if ($field['options']['label_in_item'] != 'none') { ?>
  8. <div class="field_label title_<?php echo $field['options']['label_in_item']; ?>"><?php html($field['title']); ?>: </div>
  9. <?php } ?>
  10. <div class="value"><?php echo $field['html']; ?></div>
  11. </div>
  12.  
  13. <?php } ?>
  14. <?php } ?>
  15.  
  16. <?php if ($is_fields_group) { ?></div><?php } ?>
  17.  
  18. <?php } ?>
  19. </div>
  20. <div class"gright>
  21. <?php if ($props_fieldsets) { ?>
  22. <div class="content_item_props <?php echo $ctype['name']; ?>_item_props">
  23. <table>
  24. <tbody>
  25. <?php foreach($props_fieldsets as $fieldset_id => $fieldset){ ?>
  26. <?php if ($fieldset['title']){ ?>
  27. <tr class="props_groups props_group_<?php echo $ctype['name']; ?>_<?php echo $fieldset_id ?>">
  28. <td class="heading" colspan="2"><?php html($fieldset['title']); ?></td>
  29. </tr>
  30. <?php } ?>
  31. <?php if ($fieldset['fields']){ ?>
  32. <?php foreach($fieldset['fields'] as $prop){ ?>
  33. <tr class="prop_wrap prop_<?php echo $prop['type']; ?>">
  34. <td class="title"><?php html($prop['title']); ?></td>
  35. <td class="value">
  36. <?php echo $prop['html']; ?>
  37. </td>
  38. </tr>
  39. <?php } ?>
  40. <?php } ?>
  41. <?php } ?>
  42. </tbody>
  43. </table>
  44. </div>
  45. <?php } ?>
  46. </div>
  47. </div>

И добавил стилей /templates/default/css/theme-content.css, ну и прописал адаптив под мобилки менее 800px

  1. .gall {
  2. display: flex;
  3. justify-content: space-between;
  4. }
  5. .gleft {
  6. width: calc(100% - 300px);
  7. }
  8. .gright{
  9. width: 270px;
  10. margin: 0 5px;
  11. }
  12.  
  13. @media screen and (max-width: 800px) {
  14. .gall {
  15. display: block;
  16. }
  17. .gleft {
  18. width: 100%;
  19. }
  20. . gright {
  21. max-width: 300px;
  22. margin: 10px 5px;
  23. }
  24. }
#6 3 декабря 2021 в 15:40

Дабы не плодить темы, спрошу здесь. Если не выбирать фоновую картинку в данном виджете, то фоном является темно-серый цвет. Как его поменять штатными средствами?

#7 3 декабря 2021 в 17:42

Если я правильно понимаю, то цвет фона прописан в файле templates\modern\scss\theme\_content.scss

По канону если, то в файле templates\modern_или_дочерний\scss\theme\_custom.scss перекрыть его своими стилями, примерно так

  1. .icms-content-header:before {
  2. background-color: red;
  3. }

Затем открыть настройки темы и нажать «Сохранить и скомпилировать css»

#8 6 декабря 2021 в 09:04

Если я правильно понимаю, то цвет фона прописан в файле templates\modern\scss\theme\_content.scss

По канону если, то в файле templates\modern_или_дочерний\scss\theme\_custom.scss перекрыть его своими стилями, примерно так

  1. .icms-content-header:before {
  2. background-color: red;
  3. }

Затем открыть настройки темы и нажать «Сохранить и скомпилировать css»

Zau4man

Спасибо. Попоробую.

#9 7 декабря 2021 в 14:11

Попробовал c изменениями в sass. Получилось. Но потерял универсальность по поводу фонового изображения. Буду дальше копать )

Я так понял, указанием стилей во вкладке «Дизайн» этот виджет не управляется. Или я что-то делаю не так.

#10 7 декабря 2021 в 14:16

Изображение

Управляется. Можно выбрать другой шаблон виджета. Но его надо заранее и создать и разместить в указанной папке. И вот к нему уже можете применить нужные классы/стили/js и т.п.

#11 7 декабря 2021 в 14:48

Да, до этого я уже дошел. Спасибо за отклик. Я думал, есть способ проще.

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

#12 27 апреля 2022 в 23:53

Продолжу здесь.

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

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