Как скрыть блок на странице Joomla по URL: пошаговое руководство

    В Joomla часто возникает необходимость скрыть определённые элементы интерфейса на конкретных страницах. Например, убрать вкладки «Песни» и «Альбомы» на странице исполнителя. В этой статье разберём, как удалить или не исполнять часть кода на странице https://test.ru/test.html, используя PHP-условия, CSS и JavaScript.

    Почему нужно скрывать блоки по URL?

    Управление контентом по URL позволяет:

    • Улучшить юзабилити - убрать лишние элементы на целевых страницах
    • Повысить скорость загрузки - исключить выполнение тяжёлых скриптов
    • Настроить уникальный дизайн для разных разделов
    • Оптимизировать SEO - убрать дублирующийся или ненужный контент

    Метод 1: PHP-условие в макете

    Самый надёжный способ - проверить URL в PHP и обернуть нужный блок в условие. В файле макета (например, default.php) добавьте:

    $current_url = JUri::getInstance()->toString();
    if (strpos($current_url, 'test.html') === false) {
        // ваш блок
    }

    Этот код проверяет, содержит ли URL строку test.html. Если нет - блок отображается. Если да - пропускается.

    Пример для вашего кода

    В вашем макете нужно обернуть вкладки и содержимое табов:

    $current_url = JUri::getInstance()->toString();
    if (strpos($current_url, 'test.html') === false) { ?>
        <ul class="nav nav-tabs" role="tablist">...</ul>
        <?php } ?>

    Аналогично для блока плеера и контейнера .tab-content.

    Метод 2: CSS-скрытие с классом на body

    Если нужно только визуально скрыть блок, добавьте класс к <body> через параметры страницы. Затем в CSS:

    .page-test .nav-tabs,
    .page-test .tab-content {
        display: none;
    }

    Этот метод не удаляет HTML, но скрывает элемент. Подходит для простых случаев, когда код не должен влиять на производительность.

    Метод 3: JavaScript-проверка

    Если доступ к PHP-файлам ограничен, используйте JS:

    if (window.location.href.indexOf('test.html') !== -1) {
        var tabs = document.querySelector('.nav-tabs');
        if (tabs) tabs.remove();
    }

    Скрипт удаляет блок после загрузки DOM. Минус - элемент сначала отрисуется, что может вызвать кратковременное мерцание.

    Сравнение методов

    МетодПлюсыМинусы
    PHPПолное исключение блока, быстрыйТребует правки макета
    CSSПростота, не требует правки PHPБлок остаётся в HTML
    JavaScriptНе требует доступа к серверуМерцание, зависимость от JS

    Рекомендации

    Для Joomla используйте PHP-метод, так как он гарантирует, что блок не будет загружен. Если нужно скрыть блок на нескольких страницах, создайте массив URL и проверяйте вхождение. Не забудьте очистить кеш Joomla после изменений.

    Часто задаваемые вопросы