Can it be done with CSS? Grouping categories on category page

Чуть с опозданием :smile:, но, возможно, это кому-то пригодится. Хочу отметить следующее:

  • Не весь CSS-код обязателен, особенно границы и фоновые цвета для строк таблицы, так что не стесняйтесь настраивать их по своему вкусу.
  • Мне пришлось изменить макет с обычной таблицы на flex, так как для строк таблицы нельзя использовать отрицательные отступы, да и возникают другие проблемы с макетом. К тому же… это более гибко :smile:
  • Замените Category Group 1 и Category Group 2 на названия ваших групп категорий.
  • В моём примере использованы ID категорий 2 и 4. Чтобы найти нужный ID категории, используйте инструменты разработчика в Chrome (см. скриншот ниже), а затем замените [data-category-id="2"] и [data-category-id="4"] в моём примере на ваши ID.

Вставьте это во вкладку Common:

.category-list{
    display: flex;
    flex-direction: column;
}
.category-list thead tr{
    display: flex;
}
.category-list .topics {
    width: 95px;
    margin-left: auto;
    min-width: 95px;
    white-space: nowrap;
}
.category-list tbody tr {
    background-color: var(--primary-very-low);
    box-sizing: border-box;
    display: flex;
}
body .category-list [data-category-id="2"],body .category-list [data-category-id="4"] {
    position: relative;
    margin-top: 50px;
}
body [data-category-id="2"]::before {
    content: "Category Group 1";
}
body [data-category-id="4"]::before {
    content: "Category Group 2";
}
body [data-category-id="2"]::before,body [data-category-id="4"]::before {
    position: absolute;
    top: -35px;
    left: 0;
    font-weight: bold;
    font-size: 15px;
    text-transform: uppercase;
    color: var(--primary-medium);
}

Вставьте это во вкладку Desktop:

.category-list tbody tr {
    margin-bottom: 15px;
    border: 1px solid var(--primary-low);
}

А это — во вкладку Mobile:

body .category-list-item.category .posts {
    width: auto;
    margin-left: auto;
}
body .category-list-item>footer,body .subcategory-list-item>footer{
    background-color: var(--primary-very-low);
}
.categories-list .category-list th {
    padding: 0;
}
.category-list-item>footer .category-stat, .subcategory-list-item>footer .category-stat {
    float: right;
}
.category-list-item>footer .category-stat:first-child, .subcategory-list-item>footer .category-stat:first-child{
    margin-right: 0;
}
body .category-list-item.category tr:first-of-type{
    padding: 10px 0;
    border-bottom: 1px solid var(--primary-low);
}
body tr.category-topic-link:last-of-type{
    border-bottom: 1px solid var(--primary-low);
}
body .categories-list .category-list th {
    padding: 0;
}
body .category-list-item {
    border-top: none;
    margin-bottom: 10px;
}
body .category-list-item {
    padding: 0;
    border: 1px solid var(--primary-low)!important;
}
.category-list-item>footer, .subcategory-list-item>footer {
    border-top: none;
}

А вот так это выглядит на разрешениях для настольных компьютеров и мобильных устройств: