[vBMods.rocks] Forum Category Spacing - no template editing needed/vBCloud compatible
Want to separate or group forum categories in its own "table" without editing display_Forums_list template? The entire category and forum directory are displayed using a single <table> tag. This makes it impossible to separate the forums by category in its own table that has border without editing display_Forums_list template and adding multiple <table> tags as others had done. But not until now.
I thought that mod was great (and it is!) but it requires editing an existing template and most of you know that editing existing vBulletin templates is not recommended and ideal. So I got challenged to create my own version that doesn't require editing using pure CSS. But technically not really using pure CSS as I had no choice but to add a little bit of JavaScript in order to programmatically identify which is the last forum channel in a category. Knowing the last forum in a category enables the CSS to know where to break the table into multiple "tables". The end result is not using multiple actual <table> tags but with a little bit of creativity and imagination, I was able to replicate an illusion or impression of using multiple tables. Without much further ado, here's how to accomplish this. 1. Add in css_additional template or via Sitebuilder (Edit Site ON) > Style > CSS Editor. Code:
/* Forum Category Spacing START */ .l-xsmall .forum-list-container .forum-list-header { border: 0; } .l-xsmall .canvas-layout-container .canvas-widget .widget-header, .l-xsmall #forum-tab .forum-list-container .forum-list-header th { border-top: 0; } .l-xsmall #forum-tab .forum-list-container .forum-list-header .header-forum { border-right: 1px solid #C9CED2; } #forum-tab.forum-category-spacing .category-header td { border-left: 1px solid #C9CED2; border-right: 1px solid #C9CED2; } #forum-tab.forum-category-spacing .forum-list-container { border-collapse: collapse; } #forum-tab.forum-category-spacing .forum-item .cell-forum, #forum-tab.forum-category-spacing .subforum-list > td { border-left: 1px solid #C9CED2; } #forum-tab.forum-category-spacing .forum-item .lastpost, #forum-tab.forum-category-spacing .subforum-list > td { border-right: 1px solid #C9CED2; } #forum-tab.forum-category-spacing .forum-item-last > td, #forum-tab.forum-category-spacing .subforum-list table { position: relative; padding-bottom: 30px; } #forum-tab.forum-category-spacing .forum-item.forum-item-last .cell-forum, #forum-tab.forum-category-spacing .subforum-list.forum-item-last > td { border-left: 0; } #forum-tab.forum-category-spacing .forum-item.forum-item-last .lastpost, #forum-tab.forum-category-spacing .subforum-list.forum-item-last > td { border-right: 0; } #forum-tab.forum-category-spacing .forum-item-last .cell-forum:before { content: ''; display: block; height: -webkit-calc(100% - 16px); height: calc(100% - 16px); width: 1px; position: absolute; top: 0; left: 0; background: #C9CED2; } #forum-tab.forum-category-spacing .forum-item-last > td:after { content: ''; display: block; height: 1px; width: 100%; position: absolute; bottom: 16px; background: #C9CED2; } #forum-tab.forum-category-spacing .forum-item-last .cell-forum:after { margin-left: -5px; } .l-small #forum-tab.forum-category-spacing .forum-item-last .cell-forum:after { margin-left: -25px; } .l-xsmall #forum-tab.forum-category-spacing .forum-item-last .cell-forum:after { margin-left: -10px; } #forum-tab.forum-category-spacing .forum-item-last .topics-count:after { margin-left: -15px; } #forum-tab.forum-category-spacing .forum-item-last .posts-count:after { margin-left: -7px; } #forum-tab.forum-category-spacing .forum-item-last .lastpost:after { margin-left: 0; } #forum-tab.forum-category-spacing .subforum-list.forum-item-last > td:after { margin-left: -29px; } #forum-tab.forum-category-spacing .forum-item-last .lastpost:before, #forum-tab.forum-category-spacing .subforum-list.forum-item-last > td:before { content: ''; display: block; height: -webkit-calc(100% - 16px); height: calc(100% - 16px); width: 1px; position: absolute; top: 0; right: -1px; background: #C9CED2; } #forum-tab.forum-category-spacing .subforum-list.forum-item-last table { border-left: 1px solid #C9CED2; margin: -18px 0 -14px -29px; } #forum-tab.forum-category-spacing .subforum-list.forum-item-last table tr:first-child td { padding-top: 18px; } #forum-tab.forum-category-spacing .subforum-list.forum-item-last table td:first-child, .l-small #forum-tab.forum-category-spacing .subforum-list.forum-item-last table td { padding-left: 29px; } .l-small #forum-tab.forum-category-spacing .subforum-list.forum-item-last table tr:first-child td + td { padding-top: 0; } #forum-tab.forum-category-spacing .subforum-list.forum-item-last table tr:last-child td, .l-small #forum-tab.forum-category-spacing .subforum-list.forum-item-last table tr:last-child td:last-child { padding-bottom: 16px; } .l-small #forum-tab.forum-category-spacing .subforum-list.forum-item-last table tr:last-child td { padding-bottom: 0; } .l-xsmall #forum-tab.forum-category-spacing .forum-item:not(.forum-item-last) .cell-forum, .l-xsmall #forum-tab.forum-category-spacing .forum-item-last .forum-wrapper, .forum-item-last .rx-forum-stats, .l-xsmall #forum-tab.forum-category-spacing .forum-item-last .rx-lastpost-info { border-right: 1px solid #C9CED2; } .l-xsmall #forum-tab.forum-category-spacing .forum-item-last .forum-wrapper { margin-top: -8px; padding-top: 8px; display: block; padding-right: 10px; } .l-xsmall #forum-tab.forum-category-spacing .forum-item-last .rx-lastpost-info { margin-bottom: -14px; padding-bottom: 14px; } .l-xsmall #forum-tab.forum-category-spacing .forum-item-last .rx-forum-stats, .l-xsmall #forum-tab.forum-category-spacing .forum-item-last .rx-lastpost-info { margin-right: -1px; padding-right: 10px; width: 100%; } #forum-tab.forum-category-spacing .list-footer { background: transparent; border-bottom: 0; margin-top: -10px; } /* Forum Category Spacing END */ 2. Add a script to dynamically determine the last forum in a category. Ideally, we should use a template hook to insert the script but unfortunately, there is no hook location that is close to the forum directory list. We need to run the script as soon as the forum directory is rendered to avoid flickering or flashing. I chose to add the script in the Mark Channels Read phrase which is right below the forum directory.
Compatibility:
Demo: See homepage of my mod site at http://vbmods.rocks/ This mod is also posted at http://vbmods.rocks/forum/vbulletin-5-modifications/vbulletin-5-template-only-modifications/2194-forum-category-spacing-on-homepage-no-template-editing-required-and-vbcloud-compatible Enjoy! Download No files for download. |
Similar Mods
Show Thread Enhancements [vBMods.rocks] Add Custom Profile Fields in Postbit | vBulletin 5.x Products & Extensions |
New Posting Features [vBMods.rocks] Quote Selected Text | vBulletin 5.x Products & Extensions |
Show Thread Enhancements [vBMods.rocks] Display Status Update in Postbit | vBulletin 5.x Products & Extensions |
Forum Display Enhancements [vBMods.rocks] Display Forum Description on Forum Channel page using an Ad Module | vBulletin 5.x Products & Extensions |
Miscellaneous Hacks [vBMods.rocks] Quick fix for guests having no access to the reset-password page | vBulletin 5.x Products & Extensions |