Не знаю почему никто ещё не задался этим вопросом? Собственно проблема: как убрать пустые группы свойств?
Берём к примеру тип контента "Объявления" (board) и для него делаем нужные "свойства" (цвет, размер, вес и т.д.), а потом эти свойства для удобства группируем в группу (например, "Характеристики").
Создаём объявление, заполняем все свойства, сохраняем и видим красоту:
Характеристики:
Цвет: красный
Размер: 20*30см
Вес: 1кг
Супер! То что нужно. Кроме "Характеристик" можно наделать кучу групп свойств для удобства отображения.
Но стоит не заполнить ни одного свойства в группе на странице объявления мы видим:
Характеристики:И собственно всё. Название группы отображается вне зависимости, заполнили вы свойства или нет! Выглядит крайне некрасиво.
Вот код, отвечающий за вывод:
<?php $props_fields = $this->controller->getPropsFields($props); $props_fieldsets = cmsForm::mapFieldsToFieldsets($props); ?> <div class="content_item_props <?php echo $ctype['name']; ?>_item_props"> <table> <tbody> <?php foreach($props_fieldsets as $fieldset){ ?> <?php if ($fieldset['title']){ ?> <tr> <td class="heading" colspan="2"><?php html($fieldset['title']); ?></td> </tr> <?php } ?> <?php if ($fieldset['fields']){ ?> <?php foreach($fieldset['fields'] as $prop){ ?> <?php $prop_field = $props_fields[$prop['id']]; ?> <tr> <td class="title"><div><?php html($prop['title']); ?><div></td> <td class="value"> <?php echo $prop_field->setItem($item)->parse($props_values[$prop['id']]); ?> </td> </tr> <?php } ?> <?php } ?> <?php } ?> <?php } ?> </tbody> </table> </div> <?php } ?>
<?php if ($fieldset['title']){ ?> <tr> <td class="heading" colspan="2"><?php html($fieldset['title']); ?></td> </tr> <?php } ?>