Как убрать пустые группы свойств

InstantCMS 2.X
#1 21 апреля 2017 в 20:08
Здравствуйте, други!
Не знаю почему никто ещё не задался этим вопросом? Собственно проблема: как убрать пустые группы свойств?
Берём к примеру тип контента "Объявления" (board) и для него делаем нужные "свойства" (цвет, размер, вес и т.д.), а потом эти свойства для удобства группируем в группу (например, "Характеристики").
Создаём объявление, заполняем все свойства, сохраняем и видим красоту:
Характеристики:
Цвет: красный
Размер: 20*30см
Вес: 1кг
Супер! То что нужно. Кроме "Характеристик" можно наделать кучу групп свойств для удобства отображения.

Но стоит не заполнить ни одного свойства в группе на странице объявления мы видим:

Характеристики:
И собственно всё. Название группы отображается вне зависимости, заполнили вы свойства или нет! Выглядит крайне некрасиво.

Вот код, отвечающий за вывод:
  1.  
  2. <?php if ($props && array_filter((array)$props_values)) { ?>
  3. <?php
  4. $props_fields = $this->controller->getPropsFields($props);
  5. $props_fieldsets = cmsForm::mapFieldsToFieldsets($props);
  6. ?>
  7. <div class="content_item_props <?php echo $ctype['name']; ?>_item_props">
  8. <table>
  9. <tbody>
  10. <?php foreach($props_fieldsets as $fieldset){ ?>
  11. <?php if ($fieldset['title']){ ?>
  12. <tr>
  13. <td class="heading" colspan="2"><?php html($fieldset['title']); ?></td>
  14. </tr>
  15. <?php } ?>
  16. <?php if ($fieldset['fields']){ ?>
  17. <?php foreach($fieldset['fields'] as $prop){ ?>
  18. <?php if (isset($props_values[$prop['id']])) { ?>
  19. <?php $prop_field = $props_fields[$prop['id']]; ?>
  20. <tr>
  21. <td class="title"><div><?php html($prop['title']); ?><div></td>
  22. <td class="value">
  23. <?php echo $prop_field->setItem($item)->parse($props_values[$prop['id']]); ?>
  24. </td>
  25. </tr>
  26. <?php } ?>
  27. <?php } ?>
  28. <?php } ?>
  29. <?php } ?>
  30. </tbody>
  31. </table>
  32. </div>
  33. <?php } ?>
  34.  
Прошу помощи с этим вопросом. Какое правило нужно подставить/добавить, чтобы код
  1.  
  2. <?php if ($fieldset['title']){ ?>
  3. <tr>
  4. <td class="heading" colspan="2"><?php html($fieldset['title']); ?></td>
  5. </tr>
  6. <?php } ?>
  7.  
не выполнялся в случае отсутствия заполненных свойств?
#2 21 апреля 2017 в 22:03
Скорее всего я ошибаюсь. Не проверял. И не буду. Но что-то мне подсказывает, что что-то типа этого:
  1. <?php if ($fieldset['title'] || $fieldset['fields']){ ?>
  2. <tr>
  3. <td class="heading" colspan="2"><?php html($fieldset['title']); ?></td>
  4. </tr>
  5. <?php } ?>
или что-то подобное, проверяющее, есть ли заполненные поля. И если есть, то выводит заголовок группы, а если нет, то не выводит.
#3 21 апреля 2017 в 22:18
@AHTEPO, напишите в git
#4 22 апреля 2017 в 12:23

Скорее всего я ошибаюсь.

DK
Что я только не пробовал… Видимо ещё где-то алгоритм полей править надо, но не нашёл((
#5 22 апреля 2017 в 16:26


Что я только не пробовал…

@AHTEPO
На этой странице есть разумный совет как решать подобные проблемы таким знатокам как мы с вами.
Попробуйте ещё и его.
#6 22 апреля 2017 в 21:46


На этой странице есть разумный совет как решать подобные проблемы таким знатокам как мы с вами.
Попробуйте ещё и его.

Олег Васильевич я
Изволите говорить загадками вы?)
Если вы про
  1. <?php if ($fieldset['title'] || $fieldset['fields']){ ?>
, то это было одним из первых, что я пробовал ;)
#7 22 апреля 2017 в 22:01



На этой странице есть разумный совет как решать подобные проблемы таким знатокам как мы с вами.
Попробуйте ещё и его.

Олег Васильевич я
Изволите говорить загадками вы?)
Если вы про, то это было одним из первых, что я пробовал ;)

@AHTEPO
Нет, я не про "это". Там глупость написана изначально.
Я про "это".
#8 22 апреля 2017 в 22:51
Олег Васильевич я, написал сразу.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.