Node Tabs by Xenthemes [Paid] [Deleted]

Very interested in this mod. Is it possible to add conditionals so the tabs don't display if the forum is being displayed on a screen of a certain width?

Absolutely. You can do that with a CSS Media Query inside the EXTRA.css template. Eg-

@media (max-width: 480px) {
.category-tabs {
display: none;
}
}

Cool addon !

Suggestion:
View attachment 94104

Thanks, noted :)
 
Hi.

I tried to use the addon but when I click the tabs nothing happens and it doesn't put the children nodes into it.
 
Just installed it and it does not seem to work on @Mike Creuzer https://xenforo.com/community/resources/ui-x.2239/

Hi Dave,

In your theme, can you find the PAGE_CONTAINER template and confirm that the below code exists:

PHP:
<xen:include template="ad_above_content" />

This is an extremely important template call and is what my plugin looks for when adding its code. I'd be surprised if UI.X has removed this so it might potentially be something else.
 
@Tom Christian would you like me to give you admin on the forum and you can have a look around

This is what it looks like

Code:
<!DOCTYPE html><xen:set var="$isResponsive" value="{xen:if '@enableResponsive AND !{$noResponsive}', 1, 0}" />
<html id="XenForo" lang="{$visitorLanguage.language_code}" dir="{$visitorLanguage.text_direction}" class="Public NoJs {xen:if {$visitor.user_id}, 'LoggedIn', 'LoggedOut'} {xen:if {$sidebar}, 'Sidebar', 'NoSidebar'} {xen:if $hasAutoDeferred, RunDeferred} {xen:if $isResponsive, Responsive, NoResponsive}{xen:if @uix_collapseNodes, ' hasCollapseNodes'}{xen:if {xen:property uix_navigationFixed}, ' hasHeaderFixed'}<xen:if is="@uix_navStyle==1"> hasNavAtTop</xen:if>{xen:if @uix_loginModalBox, ' hasLoginModal'}{xen:if '!@uix_removeTabLinks', ' hasTabLinks', ' not_hasTabLinks'}{xen:if '@uix_collapsibleSidebar && {$sidebar}', ' hasSidebarToggle', ' not_hasSidebarToggle'}{xen:if '@uix_beta', ' uix_betaMode'}{xen:if '{$canSearch}', ' hasSearch', ' not_hasSearch'}<xen:if is="@uix_navStyle == 2"> activeSmallLogo</xen:if> navStyle_@uix_navStyle pageStyle_@uix_pageStyle" xmlns:fb="http://www.facebook.com/2008/fbml">
<head>

<xen:hook name="page_container_head">
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1" />
    <xen:if is="{$isResponsive}">
        <meta name="viewport" content="width=device-width, initial-scale=1" />
    </xen:if>
    <xen:if is="@uix_webApp">
        <meta name="apple-mobile-web-app-capable" content="yes">
        <meta name="mobile-web-app-capable" content="yes">
    </xen:if>
    <xen:if is="{$requestPaths.fullBasePath}">
        <base href="{$requestPaths.fullBasePath}" />
        <script><xen:comment>/* Chrome bug and for Google cache */</xen:comment>
            var _b = document.getElementsByTagName('base')[0], _bH = "{xen:jsescape $requestPaths.fullBasePath}";
            if (_b && _b.href != _bH) _b.href = _bH;
        </script>
    </xen:if>

    <title><xen:if is="{$title}">{xen:raw $title} | {$xenOptions.boardTitle}<xen:else />{$xenOptions.boardTitle}</xen:if></title>
   
    <noscript><style>.JsOnly, .jsOnly { display: none !important; }</style></noscript>
    <link rel="stylesheet" href="css.php?css=xenforo,form,public&amp;style={xen:urlencode $_styleId}&amp;dir={$visitorLanguage.text_direction}&amp;d={$visitorStyle.last_modified_date}" />
   
    <!--XenForo_Require:CSS-->
   
    <link rel="stylesheet" href="css.php?css=uix,<xen:if is="@uix_cssTemplate">@uix_cssTemplate</xen:if>,EXTRA&amp;style={xen:urlencode $_styleId}&amp;dir={$visitorLanguage.text_direction}&amp;d={$visitorStyle.last_modified_date}" />

    {xen:helper ignoredCss, {$visitor.ignoredUsers}}

    <xen:if is="@uix_adStylerOn">
        <link rel="stylesheet" href="{$javaScriptSource}/audentio/ad_styler/2.1/stylesheets/colpick.css" />
        <link rel="stylesheet" href="{$javaScriptSource}/audentio/ad_styler/2.1/stylesheets/styleit.css" />
    </xen:if>

    <xen:include template="google_analytics" />
    <xen:include template="page_container_js_head" />
   
    <xen:if is="@uix_favicon"><link href="@uix_favicon" rel="icon" type="image/x-icon" /></xen:if>
    <link rel="apple-touch-icon" href="{xen:helper fullurl, @ogLogoPath, 1}" />
    <link rel="alternate" type="application/rss+xml" title="{xen:phrase rss_feed_for_x, 'title={$xenOptions.boardTitle}'}" href="{xen:link forums/-/index.rss}" />
    <xen:if is="{$pageDescription.content} AND !{$pageDescription.skipmeta} AND !{$head.description}"><meta name="description" content="{xen:string wordTrim, {xen:helper stripHtml, {xen:raw $pageDescription.content}}, 200}" /></xen:if>
    <xen:if is="{$head}"><xen:foreach loop="$head" value="$headElement">{xen:raw $headElement}</xen:foreach></xen:if>
</xen:hook>

<xen:if is="@uix_adStylerOn">
    <script src="{$javaScriptSource}/audentio/ad_styler/2.1/javascripts/colpick.js?_v={$xenOptions.jsVersion}"></script>
    <script src="{$javaScriptSource}/audentio/ad_styler/2.1/javascripts/bucket.js?_v={$xenOptions.jsVersion}"></script>
    <script src="{$javaScriptSource}/audentio/ad_styler/2.1/javascripts/styleit.js?_v={$xenOptions.jsVersion}"></script>
</xen:if>

</head>

<body{xen:if {$bodyClasses}, ' class="{$bodyClasses}"'}>
    <xen:if is="@uix_adStylerOn">
        <script>
            styleit_skin_name = "{xen:property 'uix_adStylerPresetGroup'}_{$visitor.style_id}";
            styleit_id = "@uix_adStyler_id";
            styleit_var = {};
           
            @uix_adStyler_vars
           
            styleit_var['boardPath'] = "{$xenOptions.boardUrl}";
            styleit_var['ImgPath'] = '{$javaScriptSource}/audentio/ad_styler/2.1/images';
            styleit_var['gFontsPath'] = "//fonts.googleapis.com";
            si_restored = false; styleit_store = _bucket('si-'+styleit_skin_name);
           
            var
                head = document.getElementsByTagName('head')[0];
                siStyleTag = document.createElement('style');
                siStyleTag.type = "text/css";
                siStyleTag.id = "si-style",
                savedStyle = styleit_store.get('style'),
                styledata = styleit_store.get('styledata');
               
            if ( savedStyle ) {
                if (siStyleTag.styleSheet) { siStyleTag.styleSheet.cssText = savedStyle }
                else { siStyleTag.appendChild(document.createTextNode(savedStyle)) }
                head.appendChild(siStyleTag);
                si_restored = true;
               
                for (var elm in styledata) {
                    for (var prop in styledata[elm]) {
                        if (prop == "_fonturl") {
                            var
                            fontTag = document.createElement('link');
                            fontTag.href = styledata[elm][prop];
                            fontTag.type = "text/css";
                            fontTag.rel = "stylesheet";
                            head.appendChild(fontTag);
                        }
                    }
                }
            }
        </script>
    </xen:if>
   
    <xen:if is="!{$visitor.user_id} && !{$hideLoginBar}" >
        <xen:include template="login_bar" />
    </xen:if>
   
    <xen:if is="@uix_offCanvasSidebar">
        <div id="uix_paneContainer" class="off-canvas-wrapper">
                <aside class="uix_sidePane left-off-canvas-content">
                    <div class="uix_sidePane_content">
                        <xen:include template="uix_offCanvasSidebar" />
                    </div>
                </aside>
            <div class="inner-wrapper">

               
                <a href="#" class="exit-off-canvas"></a>
       
    </xen:if>

    <xen:hook name="body">

    <div class="uix_wrapperFix" style="height: 1px; margin-bottom: -1px;"></div>
        <div id="uix_wrapper">

<div id="headerMover">
    <div id="headerProxy"></div>
<header>
    <xen:include template="header" />
    <xen:edithint template="navigation" />
    <xen:edithint template="search_bar" />
</header>

<div id="content" class="{$contentTemplate}">
    <div class="pageWidth">
        <div class="pageContent">
            <!-- main content area -->
           
            <xen:hook name="page_container_content_top" />
           
            <xen:include template="ad_above_top_breadcrumb" />
                   
            <xen:hook name="page_container_breadcrumb_top">
            <div class="breadBoxTop {xen:if $topctrl, withTopCtrl}">
                <xen:if is="{$topctrl}"><div class="topCtrl">{xen:raw $topctrl}</div></xen:if>
                <xen:include template="breadcrumb"><xen:set var="$microdata">1</xen:set></xen:include>
            </div>
            </xen:hook>
                       
            <xen:include template="ad_below_top_breadcrumb" />
           
            <xen:if is="@uix_showWelcomeBlock && ( ({$contentTemplate} == 'forum_list' && !@uix_welcomeBlock_showAllTemplates) || @uix_welcomeBlock_showAllTemplates) && ( (!{$visitor.user_id} && @uix_welcomeBlock_userGroups_guests) || ({$visitor.user_id} && @uix_welcomeBlock_userGroups_members) )">
                <div id="uix_welcomeBlock" class="{xen:if @uix_showWelcomeBlock_fixed, 'uix_welcomeBlock_fixed'}">
                    <xen:if is="!@uix_welcomeBlock_custom">
                        <xen:include template="uix_welcomeBlock" />
                    <xen:else />
                        <xen:include template="uix_welcomeBlock_custom" />
                    </xen:if>
                </div>
            </xen:if>
           
            <xen:if is="{$sidebar}">
                <div class="uix_contentFix">   
                    <div class="mainContainer">
                        <div class="mainContent">
            <xen:else />
                <div class="mainContainer_noSidebar">
            </xen:if>
                   
                        <!--[if lt IE 8]>
                            <p class="importantMessage">{xen:phrase you_are_using_out_of_date_browser_upgrade}</p>
                        <![endif]-->

                        <xen:hook name="page_container_notices">
                        <xen:include template="notices" />                       
                        </xen:hook>

                        <xen:hook name="page_container_content_title_bar">
                        <xen:if is="!{$noH1}">
                            <xen:if is="!@uix_removePageTitle || (@uix_removePageTitle && {$contentTemplate} != 'forum_list')">                       
                                <!-- h1 title, description -->
                                <div class="titleBar">
                                    {xen:raw $beforeH1}
                                    <h1><xen:if
                                        is="{$h1}">{xen:raw $h1}<xen:elseif
                                        is="{$title}" />{xen:raw $title}<xen:else
                                        />{$xenOptions.boardTitle}</xen:if></h1>
                                   
                                    <xen:if is="{$pageDescription.content}"><p id="pageDescription" class="muted {$pageDescription.class}">{xen:raw $pageDescription.content}</p></xen:if>
                                </div>
                            </xen:if>
                        </xen:if>
                        </xen:hook>
                       
                        <xen:include template="ad_above_content" />
                       
                        <!-- main template -->
                        {xen:raw $contents}
                       
                        <xen:include template="ad_below_content" />
                       
                        <xen:if is="!{$visitor.user_id} && !{$hideLoginBar}">
                            <!-- login form, to be moved to the upper drop-down -->
                            <xen:include template="login_bar_form" />
                        </xen:if>
                       
            <xen:if is="{$sidebar}">
                        </div>
                    </div>
               
                    <!-- sidebar -->
                    <aside class="uix_mainSidebar {xen:if @uix_sidebarLocation, ' uix_mainSidebar_left', ' uix_mainSidebar_right'}">
                        <div class="sidebar">
                            <xen:hook name="page_container_sidebar">
                            <xen:include template="ad_sidebar_top" />
                            <xen:if is="!{$noVisitorPanel}"><xen:include template="sidebar_visitor_panel" /></xen:if>
                            {xen:raw $sidebar}
                            <xen:include template="ad_sidebar_bottom" />
                            </xen:hook>
                        </div>
                    </aside>
                </div>
            <xen:else />
                </div>
            </xen:if>
           
            <xen:hook name="page_container_breadcrumb_bottom">           
            <xen:if is="!@uix_hideBottomBreadcrumb">
                <div class="breadBoxBottom"><xen:include template="breadcrumb" /></div>
            </xen:if>
            </xen:hook>
                       
            <xen:include template="ad_below_bottom_breadcrumb" />
                       
        </div>
    </div>
</div>

</div>

<footer>
    <xen:include template="footer" />
</footer>

<xen:include template="page_container_js_body" />

<xen:if is="@uix_adStylerOn">
    <script>
      $(document).ready(function(){
            $(document).styleit({
              default_preset:             '@uix_adStylerDefaultPreset',
              easing:                 true,
              min_width:             @uix_adStylerMinWidth,
              template_caching:         false,
              <xen:if is="@uix_adStylerPresets">presets: "@uix_adStylerPresets",</xen:if>
              disable_presets:             {xen:if @uix_adStylerDisablePresets, 'true', 'false'},
              si_folder_path:             '{$javaScriptSource}/audentio/ad_styler/2.1/styles/@uix_adStylerPresetGroup'
        });
      });
    </script>
</xen:if>

<xen:if is="{$isIndexPage} AND {$canSearch}">
<script type="application/ld+json">
{
    "@context": "http://schema.org",
    "@type": "WebSite",
    "url": "{xen:jsescape {xen:link canonical:index}}",
    "potentialAction": {
        "@type": "SearchAction",
        "target": "{xen:jsescape {xen:link canonical:search/search}}{xen:if $xenOptions.useFriendlyUrls, '?', '&'}keywords={search_keywords}",
        "query-input": "required name=search_keywords"
    }
}
</script>
</xen:if>

</xen:hook>
</div> <xen:comment>END #wrapper</xen:comment>
<div class="uix_wrapperFix" style="height: 1px; margin-top: -1px;"></div>


<xen:if is="@uix_offCanvasSidebar">
        </div> <xen:comment> END .inner_wrapper </xen:comment>
    </div> <xen:comment> END .off-canvas-wrapper </xen:comment>
</xen:if>

<xen:include template="uix_quickScripts_footer" />

<!-- UI.X Version: @uix_version //-->

</body>
</html>
 
Last edited:
@Tom Christian not to worry I purchased another style and will try it with that https://pixelexit.com/products/core.1/

Okay, well if it doesn't work with that, please feel free to send me your boards details so I can investigate. It would be great to know what's wrong so I can help future customers.

Let me know if you have problems with it and I can take a look at it for you.

Nice addon @Tom Christian I'll be picking up a copy myself as well shortly.

Thanks, Russ :).
 
Hello again Tom & Xenthemes
Could you please post some screenshoots of the options of this addon in the ACP and the creating process of the tabs? Please.
In the tabs can I have info like: recent posts, recent threads, etc. Or only nodes?
The addon increase some db queries?
Thanks for your replies, I appreciate your great work.
 
Hello again Tom & Xenthemes
Could you please post some screenshoots of the options of this addon in the ACP and the creating process of the tabs? Please.
In the tabs can I have info like: recent posts, recent threads, etc. Or only nodes?
The addon increase some db queries?
Thanks for your replies, I appreciate your great work.

It's powered completely by Javascript, it doesn't add any DB queries. It simply clones the title + url of each node and creates tabs from that data.
 
@Tom Christian

Because node levels have this:

e.g.:

.nodeList .node.level_1 {
margin-bottom: 20px;
}

When you choose a tab:

View attachment 93030


Basically I'd like to get rid of the margin-bottom: 20px; when (and only when) a tab has been selected (any other than "All").

Currently it is like this:

View attachment 93031

With margin-bottom: 20px removed it is like this (and this is how I would prefer it):

View attachment 93032


Is that possible?

Note though that I can't just make the change in EXTRA.css because then the "All" view breaks; there won't be any space between the nodes in the "All" view because of lack of margin-bottom: 20px.
So the margin-bottom: 20px -> margin-bottom: 0px; change should only be applied to tabs other than All.

Fantastic addon btw!
@Tom Christian,

You promised to add the above to the next update (said in an email support ticket).

But it's been 2.5 months now.

Is an update ever coming? :(

...otherwise fantastic add-on!
 
Not sure if you're still maintaining this - but I would love it if it had caching as an option.

So if you leave on subforum 3, you go back to the site and see subforum 3. Alternatively - looking to get this added to the addon by another developer depending on how much you want.
 
Not sure if you're still maintaining this - but I would love it if it had caching as an option.

So if you leave on subforum 3, you go back to the site and see subforum 3. Alternatively - looking to get this added to the addon by another developer depending on how much you want.

I'm happy for you have someone else add it. This could be achieved quite easily with localStorage. I'll keep it in mind :)
 
@DaveM Looks okay to me Dave. Yes, if you could please create a ticket in the Xenthemes premium section, we can handle things over there. (Make sure you've added your license key to the plugin settings on your forum otherwise you won't have access).
Can you please fix this to work with audentio themes? I bought it but it has now expired so I cant open a ticket, however I would gladly renew my license if this issue was fixed, thanks.
 
I m running into this when trying to install the tabs add-on. Right now, it will not install. all of the resources are places in the right folders and FURL's in my forum folders.

Developer: default_value is not a valid array (XenthemesNodeTabs_groups)
 
Top Bottom