Иконка ресурса

Условия переменных в шаблонах XenForo 2

CrazyHackGUT, делаю для xfrm_overview_macros.

В общем полдня промаялся в поисках решения, не хочет работать с условиями. Делаю так
Шаблон: xfrm_overview_macros
Ключ модификации: display_text_cat_res
Тип поиска: Простая замена
Найти
Код:
<div class="carousel-footer">
                <a href="{$viewAllLink}">{{ phrase('xfrm_view_all_featured_resources') }}</a>
            </div>
        </div>
Заменить
Код:
$0
<xf:if is="{{$category.resource_category_id == 2 }}">
МОЙ ТЕКСТ
</xf:if>

Вместо category.resource_category_id подставлял разные значения, ничего не помогает. Возможно что-то не так делаю, потому что без условий все работает, но выводится во всех категориях.
 
Matew, спасибо, получилось сделать через модификацию шаблона xfrm_category_view.
 
Подскажите, как отобразить содержимое после верхнего сообщения в теме? В примерах есть после первого сообщения, но я хочу выводить рекламу на всех страницах темы после верхнего сообщения, а не 1 раз только после самого первого.
 
Точно внимательно читали?
Правильно вставить "свой html" после любого по счету сообщения на каждой странице (кроме личных переписок)
(Обратите внимание, что сообщения нумеруются от нуля!):


HTML:
<xf:if is="{$post.position} % {$xf.options.messagesPerPage} == 0 AND !{$conversation}">
    Cвой html
</xf:if>
 
Подскажите пожалуйста как можно вывести название ресурса $resource.title в свое поле дополнения $title
 
Подскажите, почему не отображается текст в виджете,
"Категория ресурсов: боковая навигация "

Код:
<xf:if is="{{$category.resource_category_id == 34 }}">
текст
</xf:if>

Просматриваю 34 категорию ресурсов и пусто, в баковой панеле меню нету не чего.
 
Это надо не в условия... а посмотреть, что возращает и делать от него условие
 
Captain, если правильно понял, то так в виджете прописал -
Код:
<xf:if is="{{$category.resource_category_id == 34 }}">
текст
</xf:if>
{{ dump($category) }}

подскажите, куда в этом космосе кода смотреть?
Код:
<
script > Sfdump = window.Sfdump || (function(doc) {
    var refStyle = doc.createElement('style'),
        rxEsc = /([.*+?^${}()|\[\]\/\\])/g,
        idRx = /\bsf-dump-\d+-ref[012]\w+\b/,
        keyHint = 0 <= navigator.platform.toUpperCase().indexOf('MAC') ? 'Cmd' : 'Ctrl',
        addEventListener = function(e, n, cb) {
            e.addEventListener(n, cb, false);
        };
    (doc.documentElement.firstElementChild || doc.documentElement.children[0]).appendChild(refStyle);
    if (!doc.addEventListener) {
        addEventListener = function(element, eventName, callback) {
            element.attachEvent('on' + eventName, function(e) {
                e.preventDefault = function() {
                    e.returnValue = false;
                };
                e.target = e.srcElement;
                callback(e);
            });
        };
    }

    function toggle(a, recursive) {
        var s = a.nextSibling || {},
            oldClass = s.className,
            arrow, newClass;
        if (/\bsf-dump-compact\b/.test(oldClass)) {
            arrow = '&#9660;';
            newClass = 'sf-dump-expanded';
        } else if (/\bsf-dump-expanded\b/.test(oldClass)) {
            arrow = '&#9654;';
            newClass = 'sf-dump-compact';
        } else {
            return false;
        }
        if (doc.createEvent && s.dispatchEvent) {
            var event = doc.createEvent('Event');
            event.initEvent('sf-dump-expanded' === newClass ? 'sfbeforedumpexpand' : 'sfbeforedumpcollapse', true, false);
            s.dispatchEvent(event);
        }
        a.lastChild.innerHTML = arrow;
        s.className = s.className.replace(/\bsf-dump-(compact|expanded)\b/, newClass);
        if (recursive) {
            try {
                a = s.querySelectorAll('.' + oldClass);
                for (s = 0; s < a.length; ++s) {
                    if (-1 == a[s].className.indexOf(newClass)) {
                        a[s].className = newClass;
                        a[s].previousSibling.lastChild.innerHTML = arrow;
                    }
                }
            } catch (e) {}
        }
        return true;
    };

    function collapse(a, recursive) {
        var s = a.nextSibling || {},
            oldClass = s.className;
        if (/\bsf-dump-expanded\b/.test(oldClass)) {
            toggle(a, recursive);
            return true;
        }
        return false;
    };

    function expand(a, recursive) {
        var s = a.nextSibling || {},
            oldClass = s.className;
        if (/\bsf-dump-compact\b/.test(oldClass)) {
            toggle(a, recursive);
            return true;
        }
        return false;
    };

    function collapseAll(root) {
        var a = root.querySelector('a.sf-dump-toggle');
        if (a) {
            collapse(a, true);
            expand(a);
            return true;
        }
        return false;
    }

    function reveal(node) {
        var previous, parents = [];
        while ((node = node.parentNode || {}) && (previous = node.previousSibling) && 'A' === previous.tagName) {
            parents.push(previous);
        }
        if (0 !== parents.length) {
            parents.forEach(function(parent) {
                expand(parent);
            });
            return true;
        }
        return false;
    }

    function highlight(root, activeNode, nodes) {
        resetHighlightedNodes(root);
        Array.from(nodes || []).forEach(function(node) {
            if (!/\bsf-dump-highlight\b/.test(node.className)) {
                node.className = node.className + ' sf-dump-highlight';
            }
        });
        if (!/\bsf-dump-highlight-active\b/.test(activeNode.className)) {
            activeNode.className = activeNode.className + ' sf-dump-highlight-active';
        }
    }

    function resetHighlightedNodes(root) {
        Array.from(root.querySelectorAll('.sf-dump-str, .sf-dump-key, .sf-dump-public, .sf-dump-protected, .sf-dump-private')).forEach(function(strNode) {
            strNode.className = strNode.className.replace(/\bsf-dump-highlight\b/, '');
            strNode.className = strNode.className.replace(/\bsf-dump-highlight-active\b/, '');
        });
    }
    return function(root, x) {
        root = doc.getElementById(root);
        var indentRx = new RegExp('^(' + (root.getAttribute('data-indent-pad') || ' ').replace(rxEsc, '\\$1') + ')+', 'm'),
            options = {
                "maxDepth": 1,
                "maxStringLength": 160,
                "fileLinkFormat": false
            },
            elt = root.getElementsByTagName('A'),
            len = elt.length,
            i = 0,
            s, h, t = [];
        while (i < len) t.push(elt[i++]);
        for (i in x) {
            options[i] = x[i];
        }

        function a(e, f) {
            addEventListener(root, e, function(e) {
                if ('A' == e.target.tagName) {
                    f(e.target, e);
                } else if ('A' == e.target.parentNode.tagName) {
                    f(e.target.parentNode, e);
                } else if (e.target.nextElementSibling && 'A' == e.target.nextElementSibling.tagName) {
                    f(e.target.nextElementSibling, e, true);
                }
            });
        };

        function isCtrlKey(e) {
            return e.ctrlKey || e.metaKey;
        }

        function xpathString(str) {
            var parts = str.match(/[^'"]+|['"]/g).map(function(part) {
                if ("'" == part) {
                    return '"\'"';
                }
                if ('"' == part) {
                    return "'\"'";
                }
                return "'" + part + "'";
            });
            return "concat(" + parts.join(",") + ", '')";
        }

        function xpathHasClass(className) {
            return "contains(concat(' ', normalize-space(@class), ' '), ' " + className + " ')";
        }
        addEventListener(root, 'mouseover', function(e) {
            if ('' != refStyle.innerHTML) {
                refStyle.innerHTML = '';
            }
        });
        a('mouseover', function(a, e, c) {
            if (c) {
                e.target.style.cursor = "pointer";
            } else if (a = idRx.exec(a.className)) {
                try {
                    refStyle.innerHTML = 'pre.sf-dump .' + a[0] + '{background-color: #B729D9; color: #FFF !important; border-radius: 2px}';
                } catch (e) {}
            }
        });
        a('click', function(a, e, c) {
            if (/\bsf-dump-toggle\b/.test(a.className)) {
                e.preventDefault();
                if (!toggle(a, isCtrlKey(e))) {
                    var r = doc.getElementById(a.getAttribute('href').substr(1)),
                        s = r.previousSibling,
                        f = r.parentNode,
                        t = a.parentNode;
                    t.replaceChild(r, a);
                    f.replaceChild(a, s);
                    t.insertBefore(s, r);
                    f = f.firstChild.nodeValue.match(indentRx);
                    t = t.firstChild.nodeValue.match(indentRx);
                    if (f && t && f[0] !== t[0]) {
                        r.innerHTML = r.innerHTML.replace(new RegExp('^' + f[0].replace(rxEsc, '\\$1'), 'mg'), t[0]);
                    }
                    if (/\bsf-dump-compact\b/.test(r.className)) {
                        toggle(s, isCtrlKey(e));
                    }
                }
                if (c) {} else if (doc.getSelection) {
                    try {
                        doc.getSelection().removeAllRanges();
                    } catch (e) {
                        doc.getSelection().empty();
                    }
                } else {
                    doc.selection.empty();
                }
            } else if (/\bsf-dump-str-toggle\b/.test(a.className)) {
                e.preventDefault();
                e = a.parentNode.parentNode;
                e.className = e.className.replace(/\bsf-dump-str-(expand|collapse)\b/, a.parentNode.className);
            }
        });
        elt = root.getElementsByTagName('SAMP');
        len = elt.length;
        i = 0;
        while (i < len) t.push(elt[i++]);
        len = t.length;
        for (i = 0; i < len; ++i) {
            elt = t[i];
            if ('SAMP' == elt.tagName) {
                a = elt.previousSibling || {};
                if ('A' != a.tagName) {
                    a = doc.createElement('A');
                    a.className = 'sf-dump-ref';
                    elt.parentNode.insertBefore(a, elt);
                } else {
                    a.innerHTML += ' ';
                }
                a.title = (a.title ? a.title + '\n[' : '[') + keyHint + '+click] Expand all children';
                a.innerHTML += '<span>&#9660;</span>';
                a.className += ' sf-dump-toggle';
                x = 1;
                if ('sf-dump' != elt.parentNode.className) {
                    x += elt.parentNode.getAttribute('data-depth') / 1;
                }
                elt.setAttribute('data-depth', x);
                var className = elt.className;
                elt.className = 'sf-dump-expanded';
                if (className ? 'sf-dump-expanded' !== className : (x > options.maxDepth)) {
                    toggle(a);
                }
            } else if (/\bsf-dump-ref\b/.test(elt.className) && (a = elt.getAttribute('href'))) {
                a = a.substr(1);
                elt.className += ' ' + a;
                if (/[\[{]$/.test(elt.previousSibling.nodeValue)) {
                    a = a != elt.nextSibling.id && doc.getElementById(a);
                    try {
                        s = a.nextSibling;
                        elt.appendChild(a);
                        s.parentNode.insertBefore(a, s);
                        if (/^[@#]/.test(elt.innerHTML)) {
                            elt.innerHTML += ' <span>&#9654;</span>';
                        } else {
                            elt.innerHTML = '<span>&#9654;</span>';
                            elt.className = 'sf-dump-ref';
                        }
                        elt.className += ' sf-dump-toggle';
                    } catch (e) {
                        if ('&' == elt.innerHTML.charAt(0)) {
                            elt.innerHTML = '&hellip;';
                            elt.className = 'sf-dump-ref';
                        }
                    }
                }
            }
        }
        if (doc.evaluate && Array.from && root.children.length > 1) {
            root.setAttribute('tabindex', 0);
            SearchState = function() {
                this.nodes = [];
                this.idx = 0;
            };
            SearchState.prototype = {
                next: function() {
                    if (this.isEmpty()) {
                        return this.current();
                    }
                    this.idx = this.idx < (this.nodes.length - 1) ? this.idx + 1 : 0;
                    return this.current();
                },
                previous: function() {
                    if (this.isEmpty()) {
                        return this.current();
                    }
                    this.idx = this.idx > 0 ? this.idx - 1 : (this.nodes.length - 1);
                    return this.current();
                },
                isEmpty: function() {
                    return 0 === this.count();
                },
                current: function() {
                    if (this.isEmpty()) {
                        return null;
                    }
                    return this.nodes[this.idx];
                },
                reset: function() {
                    this.nodes = [];
                    this.idx = 0;
                },
                count: function() {
                    return this.nodes.length;
                },
            };

            function showCurrent(state) {
                var currentNode = state.current();
                if (currentNode) {
                    reveal(currentNode);
                    highlight(root, currentNode, state.nodes);
                }
                counter.textContent = (state.isEmpty() ? 0 : state.idx + 1) + ' of ' + state.count();
            }
            var search = doc.createElement('div');
            search.className = 'sf-dump-search-wrapper sf-dump-search-hidden';
            search.innerHTML = ' <input type="text" class="sf-dump-search-input"> <span class="sf-dump-search-count">0 of 0<\/span> <button type="button" class="sf-dump-search-input-previous" tabindex="-1"> <svg viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"> <path d="M1683 1331l-166 165q-19 19-45 19t-45-19l-531-531-531 531q-19 19-45 19t-45-19l-166-165q-19-19-19-45.5t19-45.5l742-741q19-19 45-19t45 19l742 741q19 19 19 45.5t-19 45.5z"\/> <\/svg> <\/button> <button type="button" class="sf-dump-search-input-next" tabindex="-1"> <svg viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"> <path d="M1683 808l-742 741q-19 19-45 19t-45-19l-742-741q-19-19-19-45.5t19-45.5l166-165q19-19 45-19t45 19l531 531 531-531q19-19 45-19t45 19l166 165q19 19 19 45.5t-19 45.5z"\/> <\/svg> <\/button> ';
            root.insertBefore(search, root.firstChild);
            var state = new SearchState();
            var searchInput = search.querySelector('.sf-dump-search-input');
            var counter = search.querySelector('.sf-dump-search-count');
            var searchInputTimer = 0;
            var previousSearchQuery = '';
            addEventListener(searchInput, 'keyup', function(e) {
                var searchQuery = e.target.value; /* Don't perform anything if the pressed key didn't change the query */
                if (searchQuery === previousSearchQuery) {
                    return;
                }
                previousSearchQuery = searchQuery;
                clearTimeout(searchInputTimer);
                searchInputTimer = setTimeout(function() {
                    state.reset();
                    collapseAll(root);
                    resetHighlightedNodes(root);
                    if ('' === searchQuery) {
                        counter.textContent = '0 of 0';
                        return;
                    }
                    var classMatches = ["sf-dump-str", "sf-dump-key", "sf-dump-public", "sf-dump-protected", "sf-dump-private", ].map(xpathHasClass).join(' or ');
                    var xpathResult = doc.evaluate('.//span[' + classMatches + '][contains(translate(child::text(), ' + xpathString(searchQuery.toUpperCase()) + ', ' + xpathString(searchQuery.toLowerCase()) + '), ' + xpathString(searchQuery.toLowerCase()) + ')]', root, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
                    while (node = xpathResult.iterateNext()) state.nodes.push(node);
                    showCurrent(state);
                }, 400);
            });
            Array.from(search.querySelectorAll('.sf-dump-search-input-next, .sf-dump-search-input-previous')).forEach(function(btn) {
                addEventListener(btn, 'click', function(e) {
                    e.preventDefault(); - 1 !== e.target.className.indexOf('next') ? state.next() : state.previous();
                    searchInput.focus();
                    collapseAll(root);
                    showCurrent(state);
                })
            });
            addEventListener(root, 'keydown', function(e) {
                var isSearchActive = !/\bsf-dump-search-hidden\b/.test(search.className);
                if ((114 === e.keyCode && !isSearchActive) || (isCtrlKey(e) && 70 === e.keyCode)) {
                    /* F3 or CMD/CTRL + F */
                    e.preventDefault();
                    search.className = search.className.replace(/\bsf-dump-search-hidden\b/, '');
                    searchInput.focus();
                } else if (isSearchActive) {
                    if (27 === e.keyCode) {
                        /* ESC key */
                        search.className += ' sf-dump-search-hidden';
                        e.preventDefault();
                        resetHighlightedNodes(root);
                        searchInput.value = '';
                    } else if ((isCtrlKey(e) && 71 === e.keyCode) /* CMD/CTRL + G */ || 13 === e.keyCode /* Enter */ || 114 === e.keyCode /* F3 */ ) {
                        e.preventDefault();
                        e.shiftKey ? state.previous() : state.next();
                        collapseAll(root);
                        showCurrent(state);
                    }
                }
            });
        }
        if (0 >= options.maxStringLength) {
            return;
        }
        try {
            elt = root.querySelectorAll('.sf-dump-str');
            len = elt.length;
            i = 0;
            t = [];
            while (i < len) t.push(elt[i++]);
            len = t.length;
            for (i = 0; i < len; ++i) {
                elt = t[i];
                s = elt.innerText || elt.textContent;
                x = s.length - options.maxStringLength;
                if (0 < x) {
                    h = elt.innerHTML;
                    elt[elt.innerText ? 'innerText' : 'textContent'] = s.substring(0, options.maxStringLength);
                    elt.className += ' sf-dump-str-collapse';
                    elt.innerHTML = '<span class=sf-dump-str-collapse>' + h + '<a class="sf-dump-ref sf-dump-str-toggle" title="Collapse"> &#9664;</a></span>' + '<span class=sf-dump-str-expand>' + elt.innerHTML + '<a class="sf-dump-ref sf-dump-str-toggle" title="' + x + ' remaining characters"> &#9654;</a></span>';
                }
            }
        } catch (e) {}
    };
})(document); < /script><style> pre.sf-dump { display: block; white-space: pre; padding: 5px; } pre.sf-dump:after { content: ""; visibility: hidden; display: block; height: 0; clear: both; } pre.sf-dump span { display: inline; } pre.sf-dump .sf-dump-compact { display: none; } pre.sf-dump abbr { text-decoration: none; border: none; cursor: help; } pre.sf-dump a { text-decoration: none; cursor: pointer; border: 0; outline: none; color: inherit; } pre.sf-dump .sf-dump-ellipsis { display: inline-block; overflow: visible; text-overflow: ellipsis; max-width: 5em; white-space: nowrap; overflow: hidden; vertical-align: top; } pre.sf-dump .sf-dump-ellipsis+.sf-dump-ellipsis { max-width: none; } pre.sf-dump code { display:inline; padding:0; background:none; } .sf-dump-str-collapse .sf-dump-str-collapse { display: none; } .sf-dump-str-expand .sf-dump-str-expand { display: none; } .sf-dump-public.sf-dump-highlight, .sf-dump-protected.sf-dump-highlight, .sf-dump-private.sf-dump-highlight, .sf-dump-str.sf-dump-highlight, .sf-dump-key.sf-dump-highlight { background: rgba(111, 172, 204, 0.3); border: 1px solid #7DA0B1; border-radius: 3px; } .sf-dump-public.sf-dump-highlight-active, .sf-dump-protected.sf-dump-highlight-active, .sf-dump-private.sf-dump-highlight-active, .sf-dump-str.sf-dump-highlight-active, .sf-dump-key.sf-dump-highlight-active { background: rgba(253, 175, 0, 0.4); border: 1px solid #ffa500; border-radius: 3px; } pre.sf-dump .sf-dump-search-hidden { display: none; } pre.sf-dump .sf-dump-search-wrapper { float: right; font-size: 0; white-space: nowrap; max-width: 100%; text-align: right; } pre.sf-dump .sf-dump-search-wrapper > * { vertical-align: top; box-sizing: border-box; height: 21px; font-weight: normal; border-radius: 0; background: #FFF; color: #757575; border: 1px solid #BBB; } pre.sf-dump .sf-dump-search-wrapper > input.sf-dump-search-input { padding: 3px; height: 21px; font-size: 12px; border-right: none; width: 140px; border-top-left-radius: 3px; border-bottom-left-radius: 3px; color: #000; } pre.sf-dump .sf-dump-search-wrapper > .sf-dump-search-input-next, pre.sf-dump .sf-dump-search-wrapper > .sf-dump-search-input-previous { background: #F2F2F2; outline: none; border-left: none; font-size: 0; line-height: 0; } pre.sf-dump .sf-dump-search-wrapper > .sf-dump-search-input-next { border-top-right-radius: 3px; border-bottom-right-radius: 3px; } pre.sf-dump .sf-dump-search-wrapper > .sf-dump-search-input-next > svg, pre.sf-dump .sf-dump-search-wrapper > .sf-dump-search-input-previous > svg { pointer-events: none; width: 12px; height: 12px; } pre.sf-dump .sf-dump-search-wrapper > .sf-dump-search-count { display: inline-block; padding: 0 5px; margin: 0; border-left: none; line-height: 21px; font-size: 12px; }pre.sf-dump, pre.sf-dump .sf-dump-default{background-color:#18171B; color:#FF8400; line-height:1.2em; font:12px Menlo, Monaco, Consolas, monospace; word-wrap: break-word; white-space: pre-wrap; position:relative; z-index:99999; word-break: break-all}pre.sf-dump .sf-dump-num{font-weight:bold; color:#1299DA}pre.sf-dump .sf-dump-const{font-weight:bold}pre.sf-dump .sf-dump-str{font-weight:bold; color:#56DB3A}pre.sf-dump .sf-dump-note{color:#1299DA}pre.sf-dump .sf-dump-ref{color:#A0A0A0}pre.sf-dump .sf-dump-public{color:#FFFFFF}pre.sf-dump .sf-dump-protected{color:#FFFFFF}pre.sf-dump .sf-dump-private{color:#FFFFFF}pre.sf-dump .sf-dump-meta{color:#B729D9}pre.sf-dump .sf-dump-key{color:#56DB3A}pre.sf-dump .sf-dump-index{color:#1299DA}pre.sf-dump .sf-dump-ellipsis{color:#FF8400}</style > < pre class = sf - dump id = sf - dump - 930866333 data - indent - pad = "  " > < span class = sf - dump -
    const > null < /span> <
    /pre><script>Sfdump("sf-dump-930866333")</script >
 
vadims, может проблема в том, что в виджете недоступна эта переменная? Уже сколько раз обсуждалось. Как вариант попробовать $__globals.category, возможно прокатит. И да, смотреть не код, а то, что появилось на странице.
 
Последнее редактирование:
Captain, если правильно понял, то так в виджете прописал -
Код:
<xf:if is="{{$category.resource_category_id == 34 }}">
текст
</xf:if>
{{ dump($category) }}

подскажите, куда в этом космосе кода смотреть?
Ну и зачем нам исходный код страницы? Данная функция в человеко-понятном виде выводит информацию о переменной, и именно туда вам и надо смотреть. В частности, существует ли ваша переменная $category. А ей там быть неоткуда, ибо в вашем виджете этой переменной нет
 
Matew,
null - значит нет функции такой. Думал что все эти переменные работают в виджете.

Теперь дошло, что виджетов и не нужно, можно сразу в шаблоне править.
Добавил в xfrm_category_view и все работает.

Есть ли переменная для XFRM чтобы код работал в категории и во всех подкатегориях?
 
Есть ли переменная для XFRM чтобы код работал в категории и во всех подкатегориях?
Какой код? О чем вы?
Чтобы и во всех подкатегориях показывало? Ручками пропишите условие, запаритесь до корня дерева идти, а алгоритм точно не напишите
 
null - значит нет функции такой. Думал что все эти переменные работают в виджете.
Ну и не будет работать условие ответ же дан.
Есть. Просто прячется в Контексте.
Посмотреть вложение 102013
HTML:
{{ dump($context.category) }}
теперь раскрываете values и что оно возвращает. Видите свой идшник на который хотите повесить условие и пишете в условие соответствующую переменную
 
Captain, сделал проще - добавил код в шаблон xfrm_category_view.
Жаль, что нету переменных для вывода в категории и всех подкатегориях.
Так как сейчас руками нужно будет добавлять ID при добавление новой категории.

На данный момент код выглядит так -
Код:
<xf:if is="in_array({$category.resource_category_id}, [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100])">
<div class="block">
        <div class="block-container">
            <h3 class="block-header">Архив</h3>
            <div class="block-body">
                   доп. меню
            </div>
        </div>
</div>
</xf:if>
 
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу