N

résolu Quel version

  • Auteur de la discussion Auteur de la discussion nicky1
  • Date de début Date de début

Add-on xenforo 2

Ressources et modules complémentaires pour XenForo 2

Styles xenforo 2

Styles / Thèmes et apparence pour xenforo 2

Templates xenforo 2

Codes pour modifier les templates sur xenforo 2

Section Premium

Add-on et Styles pour membre Premium
N

résolu Quel version

  • Auteur de la discussion Auteur de la discussion nicky1
  • Date de début Date de début
Catégorie Catégorie Questions & Aides
Titre du sujet Titre du sujet Quel version
Auteur de la discussion Auteur de la discussion nicky1
Date de début Date de début
Réponses Réponses 30
Affichages Affichages 775
Réaction Réaction 0
Dernier message par Dernier message par MasterMan
Ben commence deja par voir quel style ? te conviendrait le mieux et tu vois si il y a des correspondances avec la version que tu veux prendre .
 
Upvote 0
Salut @nicky1
Pour moi je te conseille la version v2.1.12 (la plus stable que j'avait sur mon site) mais si tu veux rester sur la version 2.2 je te conseille la dernier alors.
 
Upvote 0
merci beaucoup je vais écouter ton conseil vraiment merci beaucoup
 
Upvote 0
Quand tu installe des addons prend bien la bonne version pour ton xenforo.
N'installe prend pas des addons pour xenforo 2.2 pour les installer sur xenforo 2.1
 
Upvote 0
merci beaucoup j'aime le thème élégant dark mais je ne sait pas si il vas passer dessus
 
Upvote 0
merci beaucoup j'aime le thème élégant dark mais je ne sait pas si il vas passer dessus

J'ai tester le style élégant dark 2.1.5 sur xenforo 2.2.2 et il fonctionne après avoir refais les templates obsolètes
 
Upvote 0
la je test sur la 2.2.2 comme tu m'a dis a chaque fois dans le panneau admin il y a template obsolete
 
Upvote 0
ok attend je teste a nouveau et te les donnes et merci de ton aide
Publication fusionnée automatiquement :

 
Upvote 0
Change le contenu de tes templates par ceux la :

HTML:
<!DOCTYPE html>
<html id="XF" lang="{$xf.language.language_code}" dir="{$xf.language.text_direction}"
    data-app="public"
    data-template="{$template}"
    data-container-key="{$containerKey}"
    data-content-key="{$contentKey}"
    data-logged-in="{{ $xf.visitor.user_id ? 'true' : 'false' }}"
    data-cookie-prefix="{$xf.cookie.prefix}"
    data-csrf="{{ csrf_token()|escape('js') }}"
    class="XenMake{{ property('xm_pageStyle') == 'default' ? ' PageStyleDefault' : '' }}{{ property('xm_pageStyle') == 'boxed' ? ' PageStyleBoxed' : '' }} <xf:if is="property('xm_autoHiddenNavbar')">xm_hidden</xf:if> has-no-js {{ $template ? 'template-' . $template : '' }}"
    {{ $xf.runJobs ? ' data-run-jobs=""' : '' }}>
<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">

    <xf:set var="$siteName" value="{$xf.options.boardTitle}" />
    <xf:set var="$h1"><xf:h1 fallback="{$siteName}" /></xf:set>
    <xf:set var="$description"><xf:description /></xf:set>

    <title><xf:title formatter="%s | %s" fallback="{$xf.options.boardTitle}" page="{$pageNumber}" /></title>

    <xf:foreach loop="$head" value="$headTag">
        {$headTag}
    </xf:foreach>

    <xf:if is="!$head.meta_site_name && $siteName is not empty">
        <xf:macro template="metadata_macros" name="site_name" arg-siteName="{$siteName}" arg-output="{{ true }}" />
    </xf:if>
    <xf:if is="!$head.meta_type">
        <xf:macro template="metadata_macros" name="type" arg-type="website" arg-output="{{ true }}" />
    </xf:if>
    <xf:if is="!$head.meta_title">
        <xf:macro template="metadata_macros" name="title" arg-title="{{ page_title() ?: $siteName }}" arg-output="{{ true }}" />
    </xf:if>
    <xf:if is="!$head.meta_description && $description is not empty && $pageDescriptionMeta">
        <xf:macro template="metadata_macros" name="description" arg-description="{$description}" arg-output="{{ true }}" />
    </xf:if>
    <xf:if is="!$head.meta_share_url">
        <xf:macro template="metadata_macros" name="share_url" arg-shareUrl="{$xf.fullUri}" arg-output="{{ true }}" />
    </xf:if>
    <xf:if is="!$head.meta_image_url && property('publicMetadataLogoUrl')">
        <xf:macro template="metadata_macros" name="image_url"
            arg-imageUrl="{{ base_url(property('publicMetadataLogoUrl'), true) }}"
            arg-output="{{ true }}" />
    </xf:if>

    <xf:if is="property('metaThemeColor')">
        <meta name="theme-color" content="{{ parse_less_color(property('metaThemeColor')) }}" />
    </xf:if>

    <xf:macro template="helper_js_global" name="head" arg-app="public" />

    <xf:if is="property('publicFaviconUrl')">
        <link rel="icon" type="image/png" href="{{ base_url(property('publicFaviconUrl'), true) }}" sizes="32x32" />
    </xf:if>
    <xf:if is="property('publicMetadataLogoUrl')">
        <link rel="apple-touch-icon" href="{{ base_url(property('publicMetadataLogoUrl'), true) }}" />
    </xf:if>
    <xf:include template="google_analytics" />
    <!--XenForo_Require:CSS-->
   
    <xf:if is="property('xm_googleFonts')">
        <link href='//fonts.googleapis.com/css?family={{ property('xm_googleFonts') }}' rel='stylesheet' type='text/css'>
    </xf:if>
    <xf:css src="xm_core.less" />

</head>
<body data-template="{$template}">
<div class="p-pageWrapper" id="top">

<xf:if contentcheck="true">
    <div class="p-staffBar">
        <div class="p-staffBar-inner hScroller" data-xf-init="h-scroller">
            <div class="hScroller-scroll">
            <xf:contentcheck>
                <xf:if is="$xf.visitor.is_moderator && $xf.session.unapprovedCounts.total">
                    <a href="{{ link('approval-queue') }}" class="p-staffBar-link badgeContainer badgeContainer--highlighted" data-badge="{$xf.session.unapprovedCounts.total|number}">
                        {{ phrase('approval_queue') }}
                    </a>
                </xf:if>

                <xf:if is="$xf.visitor.is_moderator && !$xf.options.reportIntoForumId && $xf.session.reportCounts.total">
                    <a href="{{ link('reports') }}"
                        class="p-staffBar-link badgeContainer badgeContainer--visible {{ ($xf.session.reportCounts.total && ($xf.session.reportCounts.lastBuilt > $xf.session.reportLastRead) OR $xf.session.reportCounts.assigned) ? ' badgeContainer--highlighted' : '' }}"
                        data-badge="{{ $xf.session.reportCounts.assigned ? $xf.session.reportCounts.assigned|number . ' / ' . $xf.session.reportCounts.total|number : $xf.session.reportCounts.total|number }}"
                        title="{{ $xf.session.reportCounts.lastBuilt ? phrase('last_report_update:')|for_attr . ' ' . date_time($xf.session.reportCounts.lastBuilt) : '' }}">
                        {{ phrase('reports') }}
                    </a>
                </xf:if>

                <xf:if contentcheck="true">
                    <a class="p-staffBar-link menuTrigger" data-xf-click="menu" data-xf-key="alt+m" role="button" tabindex="0" aria-expanded="false" aria-haspopup="true">{{ phrase('moderator') }}</a>
                    <div class="menu" data-menu="menu" aria-hidden="true">
                        <div class="menu-content">
                            <h4 class="menu-header">{{ phrase('moderator_tools') }}</h4>
                            <xf:contentcheck>
                            <!--[XF:mod_tools_menu:top]-->
                            <xf:if is="$xf.visitor.is_moderator">
                                <a href="{{ link('approval-queue') }}" class="menu-linkRow">{{ phrase('approval_queue') }}</a>
                            </xf:if>
                            <xf:if is="$xf.visitor.is_moderator && !$xf.options.reportIntoForumId">
                                <a href="{{ link('reports') }}" class="menu-linkRow" title="{{ $xf.session.reportCounts.lastBuilt ? phrase('last_report_update:')|for_attr . ' ' . date_time($xf.session.reportCounts.lastBuilt) : '' }}">{{ phrase('reports') }}</a>
                            </xf:if>
                            <!--[XF:mod_tools_menu:bottom]-->
                            </xf:contentcheck>
                        </div>
                    </div>
                </xf:if>

                <xf:if is="$xf.visitor.is_admin">
                    <a href="{{ base_url('admin.php') }}" class="p-staffBar-link" target="_blank">{{ phrase('admin') }}</a>
                </xf:if>
                <xf:if is="property('xm_visitorTabsLocation') == 'staff'">
                    </div><xf:include template="xm_visitorTabs" /><div>
                </xf:if>
            </xf:contentcheck>
            </div>
        </div>
    </div>
</xf:if>

<div class="xm-page-wrapper">

<xf:if is="property('xm_navPosition') == 'default'">
<header class="p-header" id="header">
    <div class="p-header-inner">
        <div class="p-header-content">

            <div class="p-header-logo p-header-logo--{{ property('xmLogoType') == 'text' ? 'textlogo' : 'image' }}">
                <a href="{{ ($xf.options.logoLink && $xf.homePageUrl) ? $xf.homePageUrl : link('index') }}">
                    <xf:if is="property('xmLogoType') == 'text'">
                        <xf:if is="property('xmLogoText')">
                            {{ property('xmLogoText') }}
                        <xf:else />  
                            {$xf.options.boardTitle}
                        </xf:if>
                    <xf:else />                  
                    <img src="{{ base_url(property('publicLogoUrl')) }}"
                        alt="{$xf.options.boardTitle}" class="logo-desktop"
                        {{ property('publicLogoUrl2x') ? 'srcset="' . base_url(property('publicLogoUrl2x')) . ' 2x"' : '' }} />
                    <xf:if is="property('xmMobileLogo')">
                        <img src="{{ base_url(property('xmMobileLogo')) }}" alt="{$xf.options.boardTitle}" class="logo-mobile" />
                    </xf:if>
                    </xf:if>
                </a>
            </div>

            <xf:ad position="container_header" />
           
            <xf:if is="property('xmSearchLocation') == 'header'">
                <xf:macro template="xm_search" name="xm_search_macro" arg-searchConstraints="{$searchConstraints}"  />
            </xf:if>
        </div>
    </div>
</header>
</xf:if>

<xf:set var="$navHtml">
    <nav class="p-nav">
        <div class="p-nav-inner">
            <a class="p-nav-menuTrigger" data-xf-click="off-canvas" data-menu=".js-headerOffCanvasMenu" role="button" tabindex="0">
                <i aria-hidden="true"></i>
                <span class="p-nav-menuText">{{ phrase('menu') }}</span>
            </a>

            <div class="p-nav-smallLogo<xf:if is="property('xmLogoType') == 'text'"> textLogo</xf:if>">
                <a href="{{ ($xf.options.logoLink && $xf.homePageUrl) ? $xf.homePageUrl : link('index') }}">
                    <xf:if is="property('xmLogoType') == 'text'">
                        <xf:if is="property('xmLogoText')">
                            {{ property('xmLogoText') }}
                        <xf:else />  
                            {$xf.options.boardTitle}
                        </xf:if>
                    <xf:else />      
                    <img src="{{ base_url(property('publicLogoUrl')) }}"
                        alt="{$xf.options.boardTitle}" class="logo-desktop"
                    {{ property('publicLogoUrl2x') ? 'srcset="' . base_url(property('publicLogoUrl2x')) . ' 2x"' : '' }} />
                    <xf:if is="property('xmMobileLogo')">
                        <img src="{{ base_url(property('xmMobileLogo')) }}" alt="{$xf.options.boardTitle}" class="logo-mobile" />
                    </xf:if>
                    </xf:if>
                </a>
            </div>

            <div class="p-nav-scroller hScroller" data-xf-init="h-scroller" data-auto-scroll=".p-navEl.is-selected">
                <div class="hScroller-scroll">
                    <ul class="p-nav-list js-offCanvasNavSource">
                    <xf:foreach loop="$navTree" key="$navSection" value="$navEntry" i="$i" if="{{ $navSection != $xf.app.defaultNavigationId }}">
                        <li>
                            <xf:macro name="nav_entry"
                                arg-navId="{$navSection}"
                                arg-nav="{$navEntry}"
                                arg-selected="{{ $navSection == $pageSection }}"
                                arg-shortcut="{$i}" />
                        </li>
                    </xf:foreach>
                    </ul>
                </div>
            </div>
           
            <xf:if is="property('xm_visitorTabsLocation') == 'default'">
            <div class="p-nav-opposite">
                <div class="p-navgroup p-account {{ $xf.visitor.user_id ? 'p-navgroup--member' : 'p-navgroup--guest' }}">
                    <xf:if is="$xf.visitor.user_id">
                        <xf:if is="$xf.visitor.user_state == 'rejected' OR $xf.visitor.user_state == 'disabled'">
                            <a href="{{ link('account') }}"
                                class="p-navgroup-link p-navgroup-link--iconic p-navgroup-link--user">
                                <xf:avatar user="$xf.visitor" size="xxs" href="" title="" />
                                <span class="p-navgroup-linkText">{$xf.visitor.username}</span>
                            </a>

                            <a href="{{ link('logout', null, {'t': csrf_token()}) }}" class="p-navgroup-link">
                                <span class="p-navgroup-linkText">{{ phrase('log_out') }}</span>
                            </a>
                        <xf:else />
                            <a href="{{ link('account') }}"
                                class="p-navgroup-link p-navgroup-link--iconic p-navgroup-link--user"
                                data-xf-click="menu"
                                data-xf-key="{{ phrase('shortcut.visitor_menu')|for_attr }}"
                                data-menu-pos-ref="< .p-navgroup"
                                title="{$xf.visitor.username}"
                                aria-expanded="false"
                                aria-haspopup="true">
                                <xf:avatar user="$xf.visitor" size="xxs" href="" title="" />
                                <span class="p-navgroup-linkText">{$xf.visitor.username}</span>
                            </a>
                            <div class="menu menu--structural menu--wide menu--account" data-menu="menu" aria-hidden="true"
                                data-href="{{ link('account/visitor-menu') }}"
                                data-load-target=".js-visitorMenuBody">
                                <div class="menu-content js-visitorMenuBody">
                                    <div class="menu-row">
                                        {{ phrase('loading...') }}
                                    </div>
                                </div>
                            </div>

                            <a href="{{ link('conversations') }}"
                                class="p-navgroup-link p-navgroup-link--iconic p-navgroup-link--conversations js-badge--conversations badgeContainer{{ $xf.visitor.conversations_unread ? ' badgeContainer--highlighted' : '' }}"
                                data-badge="{$xf.visitor.conversations_unread|number}"
                                data-xf-click="menu"
                                data-xf-key="{{ phrase('shortcut.conversations_menu')|for_attr }}"
                                data-menu-pos-ref="< .p-navgroup"
                                title="{{ phrase('conversations')|for_attr }}"
                                aria-label="{{ phrase('conversations')|for_attr }}"
                                aria-expanded="false"
                                aria-haspopup="true">
                                <i aria-hidden="true"></i>
                                <span class="p-navgroup-linkText">{{ phrase('nav_inbox') }}</span>
                            </a>
                            <div class="menu menu--structural menu--medium" data-menu="menu" aria-hidden="true"
                                data-href="{{ link('conversations/popup') }}"
                                data-nocache="true"
                                data-load-target=".js-convMenuBody">
                                <div class="menu-content">
                                    <h3 class="menu-header">{{ phrase('conversations') }}</h3>
                                    <div class="js-convMenuBody">
                                        <div class="menu-row">{{ phrase('loading...') }}</div>
                                    </div>
                                    <div class="menu-footer menu-footer--split">
                                        <span class="menu-footer-main">
                                            <a href="{{ link('conversations') }}">{{ phrase('show_all...') }}</a>
                                        </span>
                                        <xf:if is="$xf.visitor.canStartConversation()">
                                            <span class="menu-footer-opposite">
                                                <a href="{{ link('conversations/add') }}">{{ phrase('start_new_conversation') }}</a>
                                            </span>
                                        </xf:if>
                                    </div>
                                </div>
                            </div>

                            <a href="{{ link('account/alerts') }}"
                                class="p-navgroup-link p-navgroup-link--iconic p-navgroup-link--alerts js-badge--alerts badgeContainer{{ $xf.visitor.alerts_unread ? ' badgeContainer--highlighted' : '' }}"
                                data-badge="{$xf.visitor.alerts_unread|number}"
                                data-xf-click="menu"
                                data-xf-key="{{ phrase('shortcut.alerts_menu')|for_attr }}"
                                data-menu-pos-ref="< .p-navgroup"
                                title="{{ phrase('alerts')|for_attr }}"
                                aria-label="{{ phrase('alerts')|for_attr }}"
                                aria-expanded="false"
                                aria-haspopup="true">
                                <i aria-hidden="true"></i>
                                <span class="p-navgroup-linkText">{{ phrase('nav_alerts') }}</span>
                            </a>
                            <div class="menu menu--structural menu--medium" data-menu="menu" aria-hidden="true"
                                data-href="{{ link('account/alerts-popup') }}"
                                data-nocache="true"
                                data-load-target=".js-alertsMenuBody">
                                <div class="menu-content">
                                    <h3 class="menu-header">{{ phrase('alerts') }}</h3>
                                    <div class="js-alertsMenuBody">
                                        <div class="menu-row">{{ phrase('loading...') }}</div>
                                    </div>
                                    <div class="menu-footer menu-footer--split">
                                        <span class="menu-footer-main">
                                            <a href="{{ link('account/alerts') }}">{{ phrase('show_all...') }}</a>
                                        </span>
                                        <span class="menu-footer-opposite">
                                            <a href="{{ link('account/preferences') }}">{{ phrase('preferences') }}</a>
                                        </span>
                                    </div>
                                </div>
                            </div>
                        </xf:if>
                    <xf:else />
                        <a href="{{ link('login') }}" class="p-navgroup-link p-navgroup-link--textual p-navgroup-link--logIn"
                            data-xf-click="overlay" data-follow-redirects="on">
                            <span class="p-navgroup-linkText">{{ phrase('log_in') }}</span>
                        </a>
                        <xf:if is="$xf.options.registrationSetup.enabled">
                            <a href="{{ link('register') }}" class="p-navgroup-link p-navgroup-link--textual p-navgroup-link--register"
                                data-xf-click="overlay" data-follow-redirects="on">
                                <span class="p-navgroup-linkText">{{ phrase('register') }}</span>
                            </a>
                        </xf:if>
                    </xf:if>
                    <xf:if is="{{ property('xm_navPosition') }} == 'default' AND (property('xmSearchLocation') == 'header') AND {{ property('xm_liveBgSwitcher') }} == '1'">              
                        <a href="#" class="p-navgroup-link bgPicker" data-xf-init="tooltip" title="{{ phrase('xtr_open_background_chooser') }}"><i class="far fa-pen"></i></a>
                    </xf:if>
                    <xf:if is="{{ property('xm_navPosition') }} == 'belowLogo' AND (property('xmSearchLocation') == 'header') AND {{ property('xm_liveBgSwitcher') }} == '1'">              
                        <a href="#" class="p-navgroup-link bgPicker" data-xf-init="tooltip" title="{{ phrase('xtr_open_background_chooser') }}"><i class="far fa-pen"></i></a>
                    </xf:if>
                </div>

                <div class="p-navgroup p-discovery{{ !$xf.visitor.canSearch() ? ' p-discovery--noSearch' : '' }}">
                    <a href="{{ link('whats-new') }}"
                        class="p-navgroup-link p-navgroup-link--iconic p-navgroup-link--whatsnew"
                        aria-label="{{ phrase('whats_new')|for_attr }}"
                        title="{{ phrase('whats_new')|for_attr }}">
                        <i aria-hidden="true"></i>
                        <span class="p-navgroup-linkText">{{ phrase('whats_new') }}</span>
                    </a>

                    <xf:if is="$xf.visitor.canSearch()">
                        <a href="{{ link('search') }}"
                            class="p-navgroup-link p-navgroup-link--iconic p-navgroup-link--search"
                            data-xf-click="menu"
                            data-xf-key="{{ phrase('shortcut.search_menu')|for_attr }}"
                            aria-label="{{ phrase('search')|for_attr }}"
                            aria-expanded="false"
                            aria-haspopup="true"
                            title="{{ phrase('search')|for_attr }}">
                            <i aria-hidden="true"></i>
                            <span class="p-navgroup-linkText">{{ phrase('search') }}</span>
                        </a>
                        <div class="menu menu--structural menu--wide" data-menu="menu" aria-hidden="true">
                            <form action="{{ link('search/search') }}" method="post"
                                class="menu-content"
                                data-xf-init="quick-search">

                                <h3 class="menu-header">{{ phrase('search') }}</h3>
                                <!--[XF:search_menu:above_input]-->
                                <div class="menu-row">
                                    <xf:if is="$searchConstraints">
                                        <div class="inputGroup inputGroup--joined">
                                            <xf:textbox name="keywords"
                                                placeholder="{{ phrase('search...') }}"
                                                aria-label="{{ phrase('search') }}"
                                                data-menu-autofocus="true" />
                                            <xf:select name="constraints"
                                                class="js-quickSearch-constraint"
                                                aria-label="{{ phrase('search_within') }}">

                                                <xf:option value="">{{ phrase('everywhere') }}</xf:option>
                                                <xf:foreach loop="$searchConstraints" key="$constraintName" value="$constraint">
                                                    <xf:option value="{$constraint|json}">{$constraintName}</xf:option>
                                                </xf:foreach>
                                            </xf:select>
                                        </div>
                                    <xf:else />
                                        <xf:textbox name="keywords"
                                            placeholder="{{ phrase('search...') }}"
                                            aria-label="{{ phrase('search') }}"
                                            data-menu-autofocus="true" />
                                    </xf:if>
                                </div>

                                <!--[XF:search_menu:above_title_only]-->
                                <div class="menu-row">
                                    <xf:checkbox standalone="true"><xf:option name="c[title_only]" label="{{ phrase('search_titles_only') }}" /></xf:checkbox>
                                </div>
                                <!--[XF:search_menu:above_member]-->
                                <div class="menu-row">
                                    <div class="inputGroup">
                                        <span class="inputGroup-text" id="ctrl_search_menu_by_member">{{ phrase('by:') }}</span>
                                        <input type="text" class="input" name="c[users]" data-xf-init="auto-complete" placeholder="{{ phrase('member')|for_attr }}" aria-labelledby="ctrl_search_menu_by_member" />
                                    </div>
                                </div>
                                <div class="menu-footer">
                                    <span class="menu-footer-controls">
                                        <xf:button type="submit" class="button--primary" icon="search" />
                                        <xf:button href="{{ link('search') }}">{{ phrase('advanced_search...') }}</xf:button>
                                    </span>
                                </div>

                                <xf:csrf />
                            </form>
                        </div>
                    </xf:if>
                    <xf:if is="{{ property('xm_visitorTabsLocation') }} == 'default' AND (property('xm_liveBgSwitcher') == '1')">
                        <a href="#" class="p-navgroup-link bgPicker" data-xf-init="tooltip" title="Open Background Chooser"><i class="far fa-pen"></i></a>
                    </xf:if>
                </div>
            </div>
            </xf:if>
        </div>
    </nav>
</xf:set>
<xf:if is="!property('xmDisableSubnav')">  
<xf:set var="$subNavHtml">
    <xf:if is="$selectedNavChildren is not empty">
        <div class="p-sectionLinks">
            <div class="p-sectionLinks-inner hScroller" data-xf-init="h-scroller">
                <div class="hScroller-scroll">
                    <ul class="p-sectionLinks-list">
                    <xf:foreach loop="$selectedNavChildren" key="$navId" value="$navEntry" i="$i">
                        <li>
                            <xf:macro name="nav_entry" arg-navId="{$navId}" arg-nav="{$navEntry}" arg-shortcut="alt+{$i}" />
                        </li>
                    </xf:foreach>
                    </ul>
                </div>
            </div>
        </div>
    <xf:elseif is="{$selectedNavEntry}" />
        <div class="p-sectionLinks p-sectionLinks--empty"></div>
    </xf:if>
</xf:set>
</xf:if>

<xf:if is="property('publicNavSticky') == 'primary'">
    <div class="p-navSticky p-navSticky--primary" data-xf-init="sticky-header">
        {$navHtml|raw}
    </div>
    {$subNavHtml|raw}
<xf:elseif is="property('publicNavSticky') == 'all'" />
    <div class="p-navSticky p-navSticky--all" data-xf-init="sticky-header">
        {$navHtml|raw}
        {$subNavHtml|raw}
    </div>
<xf:else />
    {$navHtml|raw}
    {$subNavHtml|raw}
</xf:if>

<xf:if is="property('xm_navPosition') == 'belowLogo'">
    <xf:include template="xm_logo" />
</xf:if>

<div class="offCanvasMenu offCanvasMenu--nav js-headerOffCanvasMenu" data-menu="menu" aria-hidden="true" data-ocm-builder="navigation">
    <div class="offCanvasMenu-backdrop" data-menu-close="true"></div>
    <div class="offCanvasMenu-content">
        <div class="offCanvasMenu-header">
            {{ phrase('menu') }}
            <a class="offCanvasMenu-closer" data-menu-close="true" role="button" tabindex="0" aria-label="{{ phrase('close')|for_attr }}"></a>
        </div>
        <xf:if is="$xf.visitor.user_id">
            <div class="p-offCanvasAccountLink">
                <div class="offCanvasMenu-linkHolder">
                    <a href="{{ link('account') }}" class="offCanvasMenu-link">
                        <xf:avatar user="$xf.visitor" size="xxs" href="" />
                        {$xf.visitor.username}
                    </a>
                </div>
                <hr class="offCanvasMenu-separator" />
            </div>
        <xf:else />
            <div class="p-offCanvasRegisterLink">
                <div class="offCanvasMenu-linkHolder">
                    <a href="{{ link('login') }}" class="offCanvasMenu-link" data-xf-click="overlay" data-menu-close="true">
                        {{ phrase('log_in') }}
                    </a>
                </div>
                <hr class="offCanvasMenu-separator" />
                <xf:if is="$xf.options.registrationSetup.enabled">
                    <div class="offCanvasMenu-linkHolder">
                        <a href="{{ link('register') }}" class="offCanvasMenu-link" data-xf-click="overlay" data-menu-close="true">
                            {{ phrase('register') }}
                        </a>
                    </div>
                    <hr class="offCanvasMenu-separator" />
                </xf:if>
            </div>
        </xf:if>
        <div class="js-offCanvasNavTarget"></div>
    </div>
</div>


<xf:if is="{{ property('xm_showMessageBlock') }} && ( ( $template == 'forum_list' && !{{ property('xm_welcomeBlock_showAllTemplates') }}) || {{ property('xm_welcomeBlock_showAllTemplates') }}) && ( (!{$xf.visitor.user_id} && {{ property('xm_messageBlockUserGroupsGuests') }}) || ({$xf.visitor.user_id} && {{ property('xm_messageBlockUserGroupsMembers') }}) )">
    <xf:if is="!{{ property('xm_welcomeBlock_custom') }}">
        <xf:include template="xm_message_block" />
    <xf:else />
        <xf:include template="xm_customMessageBlock" />
    </xf:if>
</xf:if>  

<div class="p-body">
    <div class="p-body-inner">
    <xf:if is="property('xm_liveBgSwitcher')">
        <xf:include template="xm_liveBgChooser" />
    </xf:if>
    <xf:if is="{{ property('xm_enableQuickTouch') }} && ( ( $template == 'forum_list' && !{{ property('xm_quickTouchShowAllPages') }}) || {{ property('xm_quickTouchShowAllPages') }})">  
        <xf:include template="xm_hero" />
    </xf:if>
        <!--XF:EXTRA_OUTPUT-->

        <xf:if is="$notices.block">
            <xf:macro template="notice_macros" name="notice_list" arg-type="block" arg-notices="{$notices.block}" />
        </xf:if>

        <xf:if is="$notices.scrolling">
            <xf:macro template="notice_macros" name="notice_list" arg-type="scrolling" arg-notices="{$notices.scrolling}" />
        </xf:if>

        <xf:ad position="container_breadcrumb_top_above" />
        <xf:if is="!property('xm_topBreadcrumb')">
        <div class='xenmake-breadcrumb'>
        <xf:macro name="breadcrumbs"
            arg-breadcrumbs="{$breadcrumbs}"
            arg-navTree="{$navTree}"
            arg-selectedNavEntry="{$selectedNavEntry}" />
        </div>
        </xf:if>  
        <xf:ad position="container_breadcrumb_top_below" />

        <xf:macro template="browser_warning_macros" name="javascript" />
        <xf:macro template="browser_warning_macros" name="browser" />

        <xf:if is="$headerHtml is not empty">
            <div class="p-body-header">
                {$headerHtml|raw}
            </div>
        <xf:elseif contentcheck="true" />
            <div class="p-body-header">
            <xf:contentcheck>
                <xf:if contentcheck="true">
                    <div class="p-title {{ $noH1 ? 'p-title--noH1' : '' }}">
                    <xf:contentcheck>
                        <xf:if is="!{{ property('xm_forumTitle')}} OR $template != 'forum_list'">
                            <xf:if is="!$noH1">
                                <h1 class="p-title-value">{$h1}</h1>
                            </xf:if>
                        </xf:if>
                        <xf:if contentcheck="true">
                            <div class="p-title-pageAction"><xf:contentcheck><xf:pageaction /></xf:contentcheck><xf:if is="$sidebar"><xf:if is="property('xm_collapsibleSidebar') && !property('xm_sidebarDisable') && $sidebar"><span id="collapse-side" class="button collapseTrigger collapseTrigger--block {{ !is_toggled('_sidebarCollapse') ? ' is-active' : '' }}" data-xf-click="toggle" data-xf-init="toggle-storage" data-storage-type="cookie" data-target=".p-body-main--withSidebar" data-storage-key="_sidebarCollapse"></span></xf:if></xf:if></div>
                           
                        </xf:if>
                    </xf:contentcheck>
                    </div>
                </xf:if>

                <xf:if is="$description is not empty">
                    <div class="p-description">{$description}</div>
                </xf:if>
            </xf:contentcheck>
            </div>
        </xf:if>

        <div class="p-body-main {{ $sidebar ? 'p-body-main--withSidebar' : '' }} {{ $sideNav ? 'p-body-main--withSideNav' : '' }} {{ !is_toggled('_sidebarCollapse') ? 'xm-sidebar-default' : '' }}">
            <xf:if is="$sideNav">
                <div class="p-body-sideNav">
                    <div class="p-body-sideNavTrigger">
                        <xf:button class="button--link" data-xf-click="off-canvas" data-menu="#js-SideNavOcm">
                            {{ $sideNavTitle ?: phrase('navigation') }}
                        </xf:button>
                    </div>
                    <div class="p-body-sideNavInner" data-ocm-class="offCanvasMenu offCanvasMenu--blocks" id="js-SideNavOcm" data-ocm-builder="sideNav">
                        <div data-ocm-class="offCanvasMenu-backdrop" data-menu-close="true"></div>
                        <div data-ocm-class="offCanvasMenu-content">
                            <div class="p-body-sideNavContent">
                                <xf:ad position="container_sidenav_above" />
                                <xf:foreach loop="$sideNav" value="$sideNavHtml">
                                    {$sideNavHtml}
                                </xf:foreach>
                                <xf:ad position="container_sidenav_below" />
                            </div>
                        </div>
                    </div>
                </div>
            </xf:if>

            <div class="p-body-content">
                <xf:ad position="container_content_above" />
                <div class="p-body-pageContent">{$content|raw}</div>
                <xf:ad position="container_content_below" />
            </div>

            <xf:if is="$sidebar">
                <div class="p-body-sidebar">
                            <xf:if is="{{ property('sidebarVisitorPanel') }}">
                            <xf:if is="$xf.visitor.user_id">
                                <xf:include template="xm_sidebarVisitorPanel" />
                            </xf:if>
                            </xf:if>                  
                    <xf:ad position="container_sidebar_above" />
                    <xf:foreach loop="$sidebar" value="$sidebarHtml">
                        {$sidebarHtml}
                    </xf:foreach>
                    <xf:ad position="container_sidebar_below" />
                </div>
            </xf:if>
        </div>

        <xf:ad position="container_breadcrumb_bottom_above" />
        <xf:if is="!property('xm_bottomBreadcrumb')">
        <div class='xenmake-breadcrumb bottom'>
        <xf:macro name="breadcrumbs"
            arg-breadcrumbs="{$breadcrumbs}"
            arg-navTree="{$navTree}"
            arg-selectedNavEntry="{$selectedNavEntry}"
            arg-variant="bottom" />
        </div>  
        </xf:if>
        <xf:ad position="container_breadcrumb_bottom_below" />
    </div>
</div>



<footer class="<xf:if is="{{ property( 'footerWrapper') }} ">p-footer-inner<xf:else />p-footer</xf:if>" id="footer">
    <div class="<xf:if is="{{ property( 'footerWrapper') }} ">p-footer<xf:else />p-footer-inner</xf:if>">
        <div class="p-footer-row">
            <xf:if contentcheck="true">
                <div class="p-footer-row-main">
                    <ul class="p-footer-linkList">
                    <xf:contentcheck>
                        <xf:if is="$xf.visitor.canChangeStyle()">
                            <li><a href="{{ link('misc/style') }}" data-xf-click="overlay"
                                data-xf-init="tooltip" title="{{ phrase('style_chooser')|for_attr }}" rel="nofollow">
                                <xf:fa icon="fa-paint-brush" /> {$xf.style.title}
                            </a></li>
                        </xf:if>
                        <xf:if is="$xf.visitor.canChangeLanguage()">
                            <li><a href="{{ link('misc/language') }}" data-xf-click="overlay"
                                data-xf-init="tooltip" title="{{ phrase('language_chooser')|for_attr }}" rel="nofollow">
                                <xf:fa icon="fa-globe" /> {$xf.language.title}</a></li>
                        </xf:if>
                    </xf:contentcheck>
                    </ul>
                </div>
            </xf:if>
           
            <div class="p-footer-row-opposite">
                <ul class="p-footer-linkList">
                    <xf:if is="$xf.visitor.canUseContactForm()">
                        <xf:if is="$xf.contactUrl">
                            <li><a href="{$xf.contactUrl}" data-xf-click="{{ ($xf.options.contactUrl.overlay OR $xf.options.contactUrl.type == 'default') ? 'overlay' : '' }}">{{ phrase('contact_us') }}</a></li>
                        </xf:if>
                    </xf:if>

                    <xf:if is="$xf.tosUrl">
                        <li><a href="{$xf.tosUrl}">{{ phrase('terms_and_rules') }}</a></li>
                    </xf:if>

                    <xf:if is="$xf.privacyPolicyUrl">
                        <li><a href="{$xf.privacyPolicyUrl}">{{ phrase('privacy_policy') }}</a></li>
                    </xf:if>

                    <xf:if is="$xf.helpPageCount">
                        <li><a href="{{ link('help') }}">{{ phrase('help') }}</a></li>
                    </xf:if>

                    <xf:if is="$xf.homePageUrl">
                        <li><a class="footer-home" href="{$xf.homePageUrl}">{{ phrase('home') }}</a></li>
                    </xf:if>

                    <li><a href="{{ link('forums/index.rss', '-') }}" target="_blank" class="p-footer-rssLink" title="{{ phrase('rss')|for_attr }}"><span aria-hidden="true"><xf:fa icon="fa-rss" /><span class="u-srOnly">{{ phrase('rss') }}</span></span></a></li>
                </ul>
            </div>
        </div>
    </div>
</footer>
<xf:if is="{{ property('advancedFooterOn') }}">
    <xf:include template="xm_footer" />  
</xf:if>


<footer class="<xf:if is="{{ property( 'footerWrapper') }} ">p-footer-inner<xf:else />p-footer</xf:if>" id="footer">
    <div class="<xf:if is="{{ property( 'footerWrapper') }} ">p-footer<xf:else />p-footer-inner</xf:if>">
        <xf:if contentcheck="true">
            <div class="p-footer-copyright">
            <xf:contentcheck>
                <xf:copyright />
                {{ phrase('extra_copyright') }}
            </xf:contentcheck>
            </div>
        </xf:if>

        <xf:if contentcheck="true">
            <div class="p-footer-debug">
            <xf:contentcheck>
                <xf:macro template="debug_macros" name="debug"
                    arg-controller="{$controller}"
                    arg-action="{$actionMethod}"
                    arg-template="{$template}" />
            </xf:contentcheck>
            </div>
        </xf:if>
    </div>
</footer>  

</div> <!-- closing xm-page-wrapper -->
</div> <!-- closing p-pageWrapper -->

<div class="u-bottomFixer js-bottomFixTarget">
    <xf:if is="$notices.floating">
        <xf:macro template="notice_macros" name="notice_list" arg-type="floating" arg-notices="{$notices.floating}" />
    </xf:if>
    <xf:if is="$notices.bottom_fixer">
        <xf:macro template="notice_macros" name="notice_list" arg-type="bottom_fixer" arg-notices="{$notices.bottom_fixer}" />
    </xf:if>
</div>

<xf:if is="property('scrollJumpButtons')">
    <div class="u-scrollButtons js-scrollButtons" data-trigger-type="{{ property('scrollJumpButtons') }}">
        <xf:button href="#top" class="button--scroll" data-xf-click="scroll-to"><xf:fa icon="fa-arrow-up" /><span class="u-srOnly">{{ phrase('top') }}</span></xf:button>
        <xf:if is="property('scrollJumpButtons') != 'up'">
            <xf:button href="#footer" class="button--scroll" data-xf-click="scroll-to"><xf:fa icon="fa-arrow-down" /><span class="u-srOnly">{{ phrase('bottom') }}</span></xf:button>
        </xf:if>
    </div>
</xf:if>

<xf:macro template="helper_js_global" name="body" arg-app="public" arg-jsState="{$jsState}" />

<xf:if is="property('xm_autoHiddenNavbar')">
    <xf:include template="xm_hidden_js" />
</xf:if>

<xf:if is="property('xm_liveBgSwitcher')">
    <xf:js src="{{ base_url('styles/xenmake/resources/js/bg-chooser/cookie.min.js') }}" />
    <xf:js src="{{ base_url('styles/xenmake/resources/js/bg-chooser/xm_custom.min.js') }}" />
</xf:if>

<xf:if is="{{ property('xm_showMessageBlock') }} && ( ( $template == 'forum_list' && !{{ property('xm_welcomeBlock_showAllTemplates') }}) || {{ property('xm_welcomeBlock_showAllTemplates') }}) && ( ({{ property('xm_messageBlockCanvasEffect') }}) )">  
    <xf:include template="xm_canvas_js" />
</xf:if>  

<xf:if is="count($xf.reactionsActive) > 1">
    <script type="text/template" id="xfReactTooltipTemplate">
        <div class="tooltip-content-inner">
            <div class="reactTooltip">
                <xf:foreach loop="$xf.reactionsActive" key="$reactionId" value="$reaction">
                    <xf:reaction id="{$reactionId}" tooltip="true" />
                </xf:foreach>
            </div>
        </div>
    </script>
</xf:if>
{$ldJsonHtml|raw}

</body>
</html>

<xf:macro name="nav_entry" arg-navId="!" arg-nav="!" arg-selected="{{ false }}" arg-shortcut="">
    <div class="p-navEl {{ $selected ? 'is-selected' : '' }}" {{ $nav.children ? 'data-has-children="true"' : '' }}>
        <xf:if is="$nav.href">

            <xf:macro name="nav_link"
                arg-navId="{$navId}"
                arg-nav="{$nav}"
                arg-class="p-navEl-link {{ $nav.children ? 'p-navEl-link--splitMenu' : '' }}"
                arg-shortcut="{{ $nav.children ? false : $shortcut }}" />

            <xf:if is="$nav.children"><a data-xf-key="{$shortcut}"
                data-xf-click="menu"
                data-menu-pos-ref="< .p-navEl"
                class="p-navEl-splitTrigger"
                role="button"
                tabindex="0"
                aria-label="{{ phrase('toggle_expanded')|for_attr }}"
                aria-expanded="false"
                aria-haspopup="true"></a></xf:if>

        <xf:elseif is="$nav.children" /><a data-xf-key="{$shortcut}"
            data-xf-click="menu"
            data-menu-pos-ref="< .p-navEl"
            class="p-navEl-linkHolder"
            role="button"
            tabindex="0"
            aria-expanded="false"
            aria-haspopup="true">
            <xf:macro name="nav_link"
                arg-navId="{$navId}"
                arg-nav="{$nav}"
                arg-class="p-navEl-link p-navEl-link--menuTrigger" />
        </a>

        <xf:else />

            <xf:macro name="nav_link"
                arg-navId="{$navId}"
                arg-nav="{$nav}"
                arg-class="p-navEl-link"
                arg-shortcut="{$shortcut}" />

        </xf:if>
        <xf:if is="$nav.children">
            <div class="menu menu--structural" data-menu="menu" aria-hidden="true">
                <div class="menu-content">
                    <!--<h4 class="menu-header">{$nav.title}</h4>-->
                    <xf:foreach loop="$nav.children" key="$childNavId" value="$child">
                        <xf:macro name="nav_menu_entry"
                            arg-navId="{$childNavId}"
                            arg-nav="{$child}" />
                    </xf:foreach>
                </div>
            </div>
        </xf:if>
    </div>
</xf:macro>

<xf:macro name="nav_link" arg-navId="!" arg-nav="!" arg-class="" arg-titleHtml="" arg-shortcut="{{ false }}">
    <xf:set var="$tag" value="{{ $nav.href ? 'a' : 'span' }}" />
    <{$tag} {{ $nav.href ? 'href="' . $nav.href . '"' : '' }}
        class="{{ trim($class) }} {$nav.attributes.class}"
        {{ attributes($nav.attributes, ['class']) }}
        {{ $shortcut !== false ? 'data-xf-key="' . $shortcut . '"' : '' }}
        data-nav-id="{$navId}"><xf:if is="$nav.icon"><xf:fa icon="{$nav.icon}" /> </xf:if>{{ $titleHtml ? $titleHtml|raw : $nav.title }}<xf:if is="$nav.counter"> <span class="badge badge--highlighted">{$nav.counter|number}</span></xf:if></{$tag}>
</xf:macro>

<xf:macro name="nav_menu_entry" arg-navId="!" arg-nav="!" arg-depth="0">
    <xf:macro name="nav_link"
        arg-navId="{$navId}"
        arg-nav="{$nav}"
        arg-class="menu-linkRow u-indentDepth{$depth} js-offCanvasCopy" />
    <xf:if is="$nav.children">
        <xf:foreach loop="$nav.children" key="$childNavId" value="$child">
            <xf:macro name="nav_menu_entry"
                arg-navId="{$childNavId}"
                arg-nav="{$child}"
                arg-depth="{{ $depth + 1 }}" />
        </xf:foreach>
        <xf:if is="$depth == 0">
            <hr class="menu-separator" />
        </xf:if>
    </xf:if>
</xf:macro>

<xf:macro name="breadcrumbs" arg-breadcrumbs="!" arg-navTree="!" arg-selectedNavEntry="{{ null }}" arg-variant="">
    <xf:if contentcheck="true">
        <ul class="p-breadcrumbs {{ $variant ? 'p-breadcrumbs--' . $variant : '' }}"
            itemscope itemtype="https://schema.org/BreadcrumbList">
        <xf:contentcheck>
            <xf:set var="$position" value="{{ 0 }}" />

            <xf:set var="$rootBreadcrumb" value="{$navTree.{$xf.options.rootBreadcrumb}}" />
            <xf:if is="$rootBreadcrumb AND $rootBreadcrumb.href != $xf.uri AND $rootBreadcrumb.href != $xf.fullUri">
                <xf:set var="$position" value="{{ $position + 1 }}" />
                <xf:macro name="crumb"
                    arg-position="{$position}"
                    arg-href="{$rootBreadcrumb.href}"
                    arg-value="{$rootBreadcrumb.title}" />
            </xf:if>

            <xf:if is="$selectedNavEntry AND $selectedNavEntry.href AND $selectedNavEntry.href != $xf.uri AND $selectedNavEntry.href != $xf.fullUri AND $selectedNavEntry.href != $rootBreadcrumb.href">
                <xf:set var="$position" value="{{ $position + 1 }}" />
                <xf:macro name="crumb"
                    arg-position="{$position}"
                    arg-href="{$selectedNavEntry.href}"
                    arg-value="{$selectedNavEntry.title}" />
            </xf:if>
            <xf:foreach loop="$breadcrumbs" value="$breadcrumb" if="$breadcrumb.href != $xf.uri AND $breadcrumb.href != $xf.fullUri">
                <xf:set var="$position" value="{{ $position + 1 }}" />
                <xf:macro name="crumb"
                    arg-position="{$position}"
                    arg-href="{$breadcrumb.href}"
                    arg-value="{$breadcrumb.value}" />
            </xf:foreach>

        </xf:contentcheck>
        </ul>
        <xf:if is="property('xmSocialBreadcrumb')">
            <xf:include template="xm_social_icons" />
        </xf:if>
    </xf:if>
</xf:macro>

<xf:macro name="crumb" arg-href="!" arg-value="!" arg-position="{{ 0 }}">
    <li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
        <a href="{$href}" itemprop="item">
            <span itemprop="name">{$value}</span>
        </a>
        <xf:if is="$position"><meta itemprop="position" content="{$position}" /></xf:if>
    </li>
</xf:macro>

HTML:
<xf:title>{$category.title}</xf:title>
<xf:description>{$category.description|raw}</xf:description>

<xf:macro template="metadata_macros" name="canonical_url" arg-canonicalUrl="{{ link('canonical:categories', $category) }}" />

<xf:macro template="category_macros" name="category_page_options" arg-category="{$category}" />
<xf:breadcrumb source="$category.getBreadcrumbs(false)" />

<xf:if is="$nodeTree">
    <div class="block container-class">
        <div class="block-outer"><xf:trim>
            <xf:if contentcheck="true">
                <div class="block-outer-opposite">
                    <div class="buttonGroup">
                    <xf:contentcheck>
                        <xf:if is="$xf.visitor.user_id && $hasForumDescendents">
                            <xf:button href="{{ link('categories/mark-read', $category, {'date': $xf.time}) }}"
                                class="button--link" overlay="true">
                                {{ phrase('mark_read') }}
                            </xf:button>
                        </xf:if>
                    </xf:contentcheck>
                    </div>
                </div>
            </xf:if>
        </xf:trim></div>
        <div class="block-container">
            <div class="block-body">
                <xf:macro template="forum_list" name="node_list"
                    arg-children="{$nodeTree}"
                    arg-extras="{$nodeExtras}"
                    arg-depth="2" />
            </div>
        </div>
    </div>
<xf:else />
    <div class="blockMessage">{{ phrase('there_is_nothing_to_display') }}</div>
</xf:if>

<xf:widgetpos id="category_view_sidebar" context-category="{$category}" position="sidebar" />

HTML:
<xf:title page="{$page}">{$forum.Node.title}</xf:title>
<xf:description>{$forum.Node.description|raw}</xf:description>

<xf:css src="structured_list.less" />
<xf:macro template="metadata_macros" name="canonical_url"
    arg-canonicalUrl="{{ link('canonical:forums', $forum, $canonicalFilters + {'page': $page}) }}" />

<xf:head option="rss_forum"><link rel="alternate" type="application/rss+xml" title="{{ phrase('rss_feed_for_x', {'title': $forum.title})|for_attr }}" href="{{ link('forums/index.rss', $forum) }}" /></xf:head>

<xf:macro template="forum_macros" name="forum_page_options" arg-forum="{$forum}" />
<xf:breadcrumb source="$forum.getBreadcrumbs(false)" />

<xf:pageaction if="$forum.canCreateThread()">
    <xf:button href="{{ link('forums/post-thread', $forum) }}" class="button--cta" icon="write">
        {{ phrase('post_thread') }}
    </xf:button>
</xf:pageaction>

<xf:if is="$pendingApproval">
    <div class="blockMessage blockMessage--important">{{ phrase('content_submitted_displayed_pending_approval') }}</div>
</xf:if>

<xf:if is="$nodeTree">
    <xf:ad position="forum_view_above_node_list" arg-forum="{$forum}" />
    <div class="block container-class">
        <div class="block-container">
            <div class="block-body">
                <xf:macro template="forum_list" name="node_list"
                    arg-children="{$nodeTree}"
                    arg-extras="{$nodeExtras}"
                    arg-depth="2" />
            </div>
        </div>
    </div>
    <xf:ad position="forum_view_below_node_list" arg-forum="{$forum}" />
</xf:if>

<xf:if is="$canInlineMod">
    <xf:js src="xf/inline_mod.js" min="1" />
</xf:if>

<xf:ad position="forum_view_above_thread_list" arg-forum="{$forum}" />
<div class="block" data-xf-init="{{ $canInlineMod ? 'inline-mod' : '' }}" data-type="thread" data-href="{{ link('inline-mod') }}">

    <div class="block-outer"><xf:trim>
        <xf:pagenav page="{$page}" perpage="{$perPage}" total="{$total}"
            link="forums" data="{$forum}" params="{$filters}"
            wrapperclass="block-outer-main" />
        <xf:if contentcheck="true">
            <div class="block-outer-opposite">
                <div class="buttonGroup">
                <xf:contentcheck>
                    <xf:if is="$canInlineMod">
                        <xf:macro template="inline_mod_macros" name="button" />
                    </xf:if>
                    <xf:if is="$xf.visitor.user_id">
                        <xf:button href="{{ link('forums/mark-read', $forum, {'date': $xf.time}) }}"
                            class="button--link" overlay="true">
                            {{ phrase('mark_read') }}
                        </xf:button>
                    </xf:if>
                    <xf:if is="$forum.canWatch()">
                        <xf:button href="{{ link('forums/watch', $forum) }}" class="button--link"
                            data-xf-click="switch-overlay"
                            data-sk-watch="{{ phrase('watch') }}"
                            data-sk-unwatch="{{ phrase('unwatch') }}">
                            <xf:if is="{$forum.Watch.{$xf.visitor.user_id}}">{{ phrase('unwatch') }}<xf:else />{{ phrase('watch') }}</xf:if>
                        </xf:button>
                    </xf:if>
                </xf:contentcheck>
                </div>
            </div>
        </xf:if>
    </xf:trim></div>

    <xf:set var="$dateLimits" value="{{ {
        '-1': phrase('any_time'),
        '7': phrase('x_days', {'days': '7'}),
        '14': phrase('x_days', {'days': '14'}),
        '30': phrase('x_days', {'days': '30'}),
        '60': phrase('x_months', {'months': '2'}),
        '90': phrase('x_months', {'months': '3'}),
        '182': phrase('x_months', {'months': '6'}),
        '365': phrase('1_year')
    } }}" />
    <xf:set var="$sortOrders" value="{{ {
        'last_post_date': phrase('last_message'),
        'post_date': phrase('first_message'),
        'title': phrase('title'),
        'reply_count': phrase('replies'),
        'view_count': phrase('views'),
        'first_post_reaction_score': phrase('first_message_reaction_score')
    } }}" />

    <div class="block-container">
        <div class="block-filterBar">
            <div class="filterBar">
                <xf:if contentcheck="true">
                    <ul class="filterBar-filters">
                    <xf:contentcheck>
                        <xf:if is="$filters.prefix_id">
                            <li><a href="{{ link('forums', $forum, $filters|replace('prefix_id', null)) }}"
                                class="filterBar-filterToggle" data-xf-init="tooltip" title="{{ phrase('remove_this_filter')|for_attr }}">
                                <span class="filterBar-filterToggle-label">{{ phrase('prefix:') }}</span>
                                {{ prefix_title('thread', $filters.prefix_id) }}</a></li>
                        </xf:if>
                        <xf:if is="$filters.starter_id AND $starterFilter">
                            <li><a href="{{ link('forums', $forum, $filters|replace('starter_id', null)) }}"
                                class="filterBar-filterToggle" data-xf-init="tooltip" title="{{ phrase('remove_this_filter')|for_attr }}">
                                <span class="filterBar-filterToggle-label">{{ phrase('started_by:') }}</span>
                                {$starterFilter.username}</a></li>
                        </xf:if>
                        <xf:if is="$filters.last_days AND {$dateLimits.{$filters.last_days}}">
                            <li><a href="{{ link('forums', $forum, $filters|replace('last_days', null)) }}"
                                class="filterBar-filterToggle" data-xf-init="tooltip" title="{{ phrase('remove_this_filter')|for_attr }}">
                                <span class="filterBar-filterToggle-label">{{ phrase('last_updated:') }}</span>
                                {$dateLimits.{$filters.last_days}}</a></li>
                        </xf:if>
                        <xf:if is="$filters.order AND {$sortOrders.{$filters.order}}">
                            <li><a href="{{ link('forums', $forum, $filters|replace({'order': null, 'direction': null})) }}"
                                class="filterBar-filterToggle" data-xf-init="tooltip" title="{{ phrase('return_to_default_order')|for_attr }}">
                                <span class="filterBar-filterToggle-label">{{ phrase('sort_by:') }}</span>
                                {$sortOrders.{$filters.order}}
                                <xf:fa icon="{{ $filters.direction == 'asc' ? 'fa-angle-up' : 'fa-angle-down' }}" />
                                <span class="u-srOnly"><xf:if is="$filters.direction == 'asc'">{{ phrase('ascending') }}<xf:else />{{ phrase('descending') }}</xf:if></span>
                            </a></li>
                        </xf:if>
                    </xf:contentcheck>
                    </ul>
                </xf:if>

                <a class="filterBar-menuTrigger" data-xf-click="menu" role="button" tabindex="0" aria-expanded="false" aria-haspopup="true">{{ phrase('filters') }}</a>
                <div class="menu menu--wide" data-menu="menu" aria-hidden="true"
                    data-href="{{ link('forums/filters', $forum, $filters) }}"
                    data-load-target=".js-filterMenuBody">
                    <div class="menu-content">
                        <h4 class="menu-header">{{ phrase('show_only:') }}</h4>
                        <div class="js-filterMenuBody">
                            <div class="menu-row">{{ phrase('loading...') }}</div>
                        </div>
                    </div>
                </div>
            </div>
        </div>

        <xf:set var="$qtPos">{{ ($sortInfo.order == 'last_post_date' && $sortInfo.direction == 'asc') ? 'bottom' : 'top' }}</xf:set>

        <div class="block-body">
            <div class="structItemContainer">
                <xf:macro template="thread_list_macros" name="quick_thread"
                    arg-forum="{$forum}"
                    arg-page="{$page}"
                    arg-order="{$sortInfo.order}"
                    arg-direction="{$sortInfo.direction}" />
                <xf:if is="$stickyThreads is not empty OR $threads is not empty">
                    <xf:if is="$stickyThreads is not empty">
                        <xf:if is="{{ property('xmStickyThreads') }}"><div class="separate_thread_important">{{ property('xmStickythreads') }}</div></xf:if>
                        <div class="structItemContainer-group structItemContainer-group--sticky">
                            <xf:foreach loop="$stickyThreads" value="$thread">
                                <xf:macro template="thread_list_macros" name="item" arg-thread="{$thread}" arg-forum="{$forum}" />
                            </xf:foreach>
                        </div>
                        <xf:if is="{{ property('xmStickyThreads') }}"><div class="separate_thread_important">{{ property('xmNormalthreads') }}</div></xf:if>

                        <xf:ad position="forum_view_below_stickies" arg-forum="{$forum}" />
                    </xf:if>

                    <div class="structItemContainer-group js-threadList">
                        <xf:if is="$threads is not empty">
                            <xf:foreach loop="$threads" value="$thread">
                                <xf:macro template="thread_list_macros" name="item" arg-thread="{$thread}" arg-forum="{$forum}" />
                            </xf:foreach>
                            <xf:if is="$showDateLimitDisabler">
                                <div class="structItem structItem--note">
                                    <div class="structItem-cell">
                                        <a href="{{ link('forums', $forum, {'page': $page, 'no_date_limit': 1} + $filters) }}">
                                            {{ phrase('show_older_items') }}
                                        </a>
                                    </div>
                                </div>
                            </xf:if>
                        </xf:if>
                    </div>
                <xf:elseif is="$filters" />
                    <div class="structItemContainer-group js-threadList">
                        <div class="structItem js-emptyThreadList">
                            <div class="structItem-cell">{{ phrase('there_no_threads_matching_your_filters') }}</div>
                        </div>
                    </div>
                <xf:else />
                    <div class="structItemContainer-group js-threadList">
                        <div class="structItem js-emptyThreadList">
                            <div class="structItem-cell">{{ phrase('there_no_threads_in_this_forum') }}</div>
                        </div>
                    </div>
                </xf:if>
            </div>
        </div>
    </div>

    <div class="block-outer block-outer--after">
        <xf:pagenav
            page="{$page}" perpage="{$perPage}" total="{$total}"
            link="forums" data="{$forum}" params="{$filters}"
            wrapperclass="block-outer-main" />
        <xf:showignored wrapperclass="block-outer-opposite" />
        <xf:if is="!$forum.canCreateThread()">
            <div class="block-outer-opposite">
                <xf:if is="$xf.visitor.user_id">
                    <span class="button button--wrap is-disabled">
                        {{ phrase('no_permission_to_post') }}
                        <!-- this is not interactive so shouldn't be a button element -->
                    </span>
                <xf:else />
                    <xf:button href="{{ link('login') }}" class="button--link button--wrap" overlay="true">
                        {{ phrase('log_in_or_register_to_post') }}
                    </xf:button>
                </xf:if>
            </div>
        </xf:if>
    </div>
</div>
<xf:ad position="forum_view_below_thread_list" arg-forum="{$forum}" />

<xf:widgetpos id="forum_view_sidebar" context-forum="{$forum}" position="sidebar" />

HTML:
<xf:macro name="depth1" arg-node="!" arg-extras="!" arg-children="!" arg-childExtras="!" arg-depth="1">
    <div class="block">
        <div class="block-container">
            <div class="block-body">
                <xf:macro name="forum"
                    arg-node="{$node}"
                    arg-extras="{$extras}"
                    arg-children="{$children}"
                    arg-childExtras="{$childExtras}"
                    arg-depth="{$depth}" />
            </div>
        </div>
    </div>
</xf:macro>

<xf:macro name="depth2" arg-node="!" arg-extras="!" arg-children="!" arg-childExtras="!" arg-depth="1">
    <xf:macro name="forum"
        arg-node="{$node}"
        arg-extras="{$extras}"
        arg-children="{$children}"
        arg-childExtras="{$childExtras}"
        arg-depth="{$depth}" />
</xf:macro>

<xf:macro name="depthN" arg-node="!" arg-extras="!" arg-children="!" arg-childExtras="!" arg-depth="1">
    <li>
        <a href="{{ link('forums', $node) }}" class="subNodeLink subNodeLink--forum {{ $extras.hasNew ? 'subNodeLink--unread' : '' }}">
            <xf:fa icon="{{ $node.Data.TypeHandler.getTypeIconClass() ?: 'fa-comments' }}" class="subNodeLink-icon" />{$node.title}
        </a>
        <xf:macro template="forum_list" name="sub_node_list"
            arg-children="{$children}"
            arg-childExtras="{$childExtras}"
            arg-depth="{{ $depth + 1 }}" />
    </li>
</xf:macro>

<xf:macro name="forum"
    arg-node="!"
    arg-extras="!"
    arg-children="!"
    arg-childExtras="!"
    arg-depth="!"
    arg-chooseName=""
    arg-bonusInfo="">

    <div class="node node--id{$node.node_id} node--depth{$depth} node--forum {{ $extras.hasNew ? 'node--unread' : 'node--read' }}">
           
        <xf:if is="{{ property('xmNodeLayout') }} == 'default'">
        <div class="node-body">
            <span class="node-icon" aria-hidden="true">
                <xf:fa icon="{{ $node.Data.TypeHandler.getTypeIconClass() ?: 'fa-comments' }}" />
            </span>
            <div class="node-main js-nodeMain">
                <xf:if is="$chooseName">
                    <xf:checkbox standalone="true">
                        <xf:option labelclass="u-pullRight" class="js-chooseItem" name="{$chooseName}[]" value="{$node.node_id}" />
                    </xf:checkbox>
                </xf:if>

                <xf:set var="$descriptionDisplay" value="{{ property('nodeListDescriptionDisplay') }}" />
                <h3 class="node-title">
                    <a href="{{ link('forums', $node) }}" data-xf-init="{{ $descriptionDisplay == 'tooltip' ? 'element-tooltip' : '' }}" data-shortcut="node-description">{$node.title}</a>
                </h3>
                <xf:if is="$descriptionDisplay != 'none' && $node.description">
                    <div class="node-description {{ $descriptionDisplay == 'tooltip' ? 'node-description--tooltip js-nodeDescTooltip' : '' }}">{$node.description|raw}</div>
                </xf:if>

                <div class="node-meta">
                    <xf:if is="!{$extras.privateInfo}">
                        <div class="node-statsMeta">
                            <dl class="pairs pairs--inline">
                                <dt>{{ phrase('threads') }}</dt>
                                <dd>{$extras.discussion_count|number_short(1)}</dd>
                            </dl>
                            <dl class="pairs pairs--inline">
                                <dt>{{ phrase('messages') }}</dt>
                                <dd>{$extras.message_count|number_short(1)}</dd>
                            </dl>
                        </div>
                    </xf:if>

                    <xf:if is="$depth == 2 AND property('nodeListSubDisplay') == 'menu'">
                        <xf:macro template="forum_list" name="sub_nodes_menu"
                            arg-children="{$children}"
                            arg-childExtras="{$childExtras}"
                            arg-depth="{{ $depth + 1 }}" />
                    </xf:if>
                </div>

                <xf:if is="$depth == 2 AND property('nodeListSubDisplay') == 'flat'">
                    <xf:macro template="forum_list" name="sub_nodes_flat"
                        arg-children="{$children}"
                        arg-childExtras="{$childExtras}"
                        arg-depth="{{ $depth + 1 }}" />
                </xf:if>

                <xf:if is="$bonusInfo is not empty">
                    <div class="node-bonus">{$bonusInfo}</div>
                </xf:if>
            </div>

            <xf:if is="!{$extras.privateInfo}">
                <div class="node-stats">
                    <dl class="pairs pairs--rows">
                        <dt>{{ phrase('threads') }}</dt>
                        <dd>{$extras.discussion_count|number_short(1)}</dd>
                    </dl>
                    <dl class="pairs pairs--rows">
                        <dt>{{ phrase('messages') }}</dt>
                        <dd>{$extras.message_count|number_short(1)}</dd>
                    </dl>
                </div>
            </xf:if>

            <div class="node-extra">
                <xf:if is="{$extras.privateInfo}">
                    <span class="node-extra-placeholder">{{ phrase('private') }}</span>
                <xf:elseif is="{$extras.LastThread}" />
                    <div class="node-extra-icon">
                        <xf:if is="$xf.visitor.isIgnoring($extras.last_post_user_id)">
                            <xf:avatar user="{{ null }}" size="xs" />
                        <xf:else />
                            <xf:avatar user="{$extras.LastPostUser}" defaultname="{$extras.last_post_username}" size="xs" />
                        </xf:if>
                    </div>
                    <div class="node-extra-row">
                        <xf:if is="$extras.LastThread.isUnread()">
                            <a href="{{ link('threads/unread', $extras.LastThread) }}" class="node-extra-title" title="{$extras.LastThread.title}">{{ prefix('thread', $extras.LastThread) }}{$extras.LastThread.title}</a>
                        <xf:else />
                            <a href="{{ link('threads/post', $extras.LastThread, {'post_id': $extras.last_post_id}) }}" class="node-extra-title" title="{$extras.LastThread.title}">{{ prefix('thread', $extras.LastThread) }}{$extras.LastThread.title}</a>
                        </xf:if>
                    </div>
                    <div class="node-extra-row">
                        <ul class="listInline listInline--bullet">
                            <li><xf:date time="{$extras.last_post_date}" class="node-extra-date" /></li>
                            <xf:if is="$xf.visitor.isIgnoring($extras.last_post_user_id)">
                                <li class="node-extra-user">{{ phrase('ignored_member') }}</li>
                            <xf:else />
                                <li class="node-extra-user"><xf:username user="{$extras.LastPostUser}" defaultname="{$extras.last_post_username}" /></li>
                            </xf:if>
                        </ul>
                    </div>
                <xf:else />
                    <span class="node-extra-placeholder">{{ phrase('none') }}</span>
                </xf:if>
            </div>
        </div>
        </xf:if>
       
        <xf:if is="(property('xmNodeLayout') == 'classic')">
            <xf:include template="xm_node_list_forum_classic" />
        </xf:if>
       
        <xf:if is="{{ property('xmNodeLayout') }} == 'dual'">
            <xf:include template="xm_node_list_forum_dual" />
        </xf:if>
       
        <xf:if is="(property('xmNodeLayout') == 'dual2')">
            <xf:include template="xm_node_list_forum_dual2" />
        </xf:if>
       
        <xf:if is="{{ property('xmNodeLayout') }} == 'dualColImg'">
            <xf:include template="xm_node_list_forum_image" />
        </xf:if>      
    </div>

    <xf:if is="{$depth} == 1">
        <xf:macro template="forum_list" name="node_list"
            arg-children="{$children}"
            arg-extras="{$childExtras}"
            arg-depth="{{ $depth + 1 }}" />
    </xf:if>
</xf:macro>

HTML:
.shareButtons
{
    .m-clearFix();
}

.shareButtons-buttons
{
    .shareButtons--iconic &
    {
        display: grid;
        grid-template-columns: repeat(auto-fill, minmax(35px, 1fr));
    }
}

.shareButtons-label
{
    float: left;
    margin-right: 3px;
    color: @xf-textColorMuted;
    min-height: 35px;
    line-height: 35px;
}

.shareButtons-button
{
    float: left;
    margin-right: 3px;
    padding: 6px;
    color: @xf-textColorMuted;
    font-size: 20px;
    line-height: 20px;
    white-space: nowrap;
    min-width: 35px;
    border-radius: @xf-borderRadiusSmall;
    background-color: transparent;
    .m-transition();

    &:last-of-type
    {
        margin-right: 0;
    }

    &:hover
    {
        text-decoration: none;
        color: white;
    }

    > i
    {
        display: inline-block;
        vertical-align: middle;

        .m-faBase('Pro');
    }

    &.shareButtons-button--brand
    {
        > i
        {
            .m-faBase('Brands');
        }
    }

    > span
    {
        font-weight: @xf-fontWeightNormal;
        font-size: @xf-fontSizeNormal;
    }

    .shareButtons--iconic &
    {
        text-align: center;

        > i
        {
            min-width: 20px;
        }

        > span
        {
            .m-visuallyHidden();
        }
    }

    &.shareButtons-button--facebook
    {
        &:hover { background-color: #3B5998; }
        > i:before { .m-faContent(@fa-var-facebook-f); }
    }

    &.shareButtons-button--twitter
    {
        &:hover { background-color: #1DA1F3; }
        > i:before { .m-faContent(@fa-var-twitter); }
    }
   
    &.shareButtons-button--youtube
    {
        &:hover { background-color: #FF0000; }
        > i:before { .m-faContent(@fa-var-youtube); }
    }

    &.shareButtons-button--gplus
    {
        &:hover { background-color: #dd4b39; }
        > i:before { .m-faContent(@fa-var-google-plus-g); }
    }
   
    &.shareButtons-button--linkedin
    {
        &:hover { background-color: #0077B5; }
        > i:before { .m-faContent(@fa-var-linkedin); }
    }
   
    &.shareButtons-button--vimeo
    {
        &:hover { background-color: #162221; }
        > i:before { .m-faContent(@fa-var-vimeo); }
    }
   
    &.shareButtons-button--steam
    {
        &:hover { background-color: #000000; }
        > i:before { .m-faContent(@fa-var-steam); }
    }

    &.shareButtons-button--pinterest
    {
        &:hover { background-color: #bd081c; }
        > i:before { .m-faContent(@fa-var-pinterest-p); }
    }
   
    &.shareButtons-button--twitch
    {
        &:hover { background-color: #B9A3E3; }
        > i:before { .m-faContent(@fa-var-twitch); }
    }
   
    &.shareButtons-button--vk
    {
        &:hover { background-color: #6441A5; }
        > i:before { .m-faContent(@fa-var-vk); }
    }

    &.shareButtons-button--tumblr
    {
        &:hover { background-color: #35465C; }
        > i:before { .m-faContent(@fa-var-tumblr); }
    }
   
    &.shareButtons-button--instagram
    {
        &:hover { background-color: #405DE6; }
        > i:before { .m-faContent(@fa-var-instagram); }
    }

    &.shareButtons-button--reddit
    {
        &:hover { background-color: #FF4500; }
        > i:before { .m-faContent(@fa-var-reddit-alien); }
    }
   
    &.shareButtons-button--github
    {
        &:hover { background-color: #4078C0; }
        > i:before { .m-faContent(@fa-var-github); }
    }

    &.shareButtons-button--whatsApp
    {
        &:hover { background-color: #25D366; }
        > i:before { .m-faContent(@fa-var-whatsapp); }
    }

    &.shareButtons-button--email
    {
        &:hover { background-color: #1289ff; }
        > i:before { .m-faContent(@fa-var-envelope); }
    }
   
    &.shareButtons-button--rss
    {
        &:hover { background-color: #F26522; }
        > i:before { .m-faContent(@fa-var-rss); }
    }
   
    &.shareButtons-button--instagram
    {
        &:hover { background-color: #405DE6; }
        > i:before { .m-faContent(@fa-var-instagram); }
    }

    &.shareButtons-button--share
    {
        cursor: pointer;
        &:hover { background-color: #787878; }
        > i:before { .m-faContent(@fa-var-share-alt); }
    }

    &.shareButtons-button--link
    {
        cursor: pointer;
        &:hover { background-color: #787878; }
        > i:before { .m-faContent(@fa-var-link); }
    }

    &.is-hidden
    {
        display: none;
    }
}

.shareInput
{
    margin-bottom: 5px;

    &:last-child
    {
        margin-bottom: 0;
    }
}

.shareInput-label
{
    font-size: @xf-fontSizeSmall;
    .m-appendColon();
}

.shareInput-button
{
    color: @xf-linkColor;
    cursor: pointer;

    > i
    {
        display: inline-block;
        vertical-align: middle;
        .m-faBase();

        &:before { .m-faContent(@fa-var-copy); }
    }

    &.is-hidden
    {
        display: none;
    }
}

.shareInput-input
{
    font-size: @xf-fontSizeSmall;

    .m-inputZoomFix();

    .shareInput-button.is-hidden + &
    {
        border-radius: @xf-borderRadiusMedium;
    }
}
 
Upvote 0
super merci beaucou de ton aide
Publication fusionnée automatiquement :

Génial merci Laurent plus aucunes erreurs super !!!!!!
 
Dernière édition:
Upvote 0
Si tu as toujours cet erreur Screenshot

L'erreur vient de l'addon XenMake-StyleProperty 1.0.2
Tu dois installer la version 1.0.3
Dis moi et je te l'envois en mp
 
Upvote 0
non pour me moment plus d'erreur super
Publication fusionnée automatiquement :

ah si j'ai sa maintenant
 
Upvote 0
Sujets similaires Les plus vues Voir plus
Retour
Haut Bas