Как я могу скрыть CSS div, используя php, если в div нет информации?

Я уже спрашивал об этом, но я не думаю, что я был достаточно конкретным!

Я ищу очень простой способ скрыть div, когда в нем нет никакой информации. - Это должно быть просто для клиента, чтобы он не беспокоился об этом.

У Div есть информация, помещенная в это с joomla в определенных категориях.

Например, в моем основном шаблоне у меня может быть div ниже моей навигации слева, я могу выбрать, на каких страницах он отображает модули, но когда он не используется, он все равно отображает свои границы.

Я также не хочу использовать много разных шаблонов для сайта, просто имею возможность использовать много позиций модулей, но когда они не используются, они скрыты.

http://msc-media.co.uk/

Посмотрите, под моей навигацией слева.

Если это поможет, вот код, который я пытался бы скрыть, если joomla не выводит никаких данных на этой странице:

    <div id="lnav2">
    <jdoc:include type="modules" name="left2" />
    </div>

заранее спасибо

5 ответов

Решение

В Joomla! шаблоны вы можете использовать countModules определить, действительно ли модуль установлен на эту позицию. Таким образом, ваш код может быть упакован так:

<?php if ($this->countModules('left2')): ?>
    <div id="lnav2">
        <jdoc:include type="modules" name="left2" />
    </div>
<?php endif; ?>

Таким образом, <div id="lnav2"> отображается только в том случае, если для позиции есть активный модуль.

Проверьте jquery: пустой селектор

http://api.jquery.com/empty-selector/

<script>$("div:empty").css('display', 'none');</script>

Загрузите последнюю библиотеку jquery в свой

<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
</head>

и поместите код выше <script>$("div:empty").css('display', 'none');</script> в голову или перед закрывающим тегом вашего HTML. Это обнаружит все случаи пустых тегов. Измените div соответственно, в зависимости от того, что вы пытаетесь обнаружить.

Вы можете разместить код JQuery на странице. Что-то вроде:

$(function() {
    $('div').each(function() {
        if($(this).html() == '') {
            $(this).css('display','none');
        }
    }
});

Внутри тегов вы можете сделать следующее, которое вы не хотите отображать, если оно пустое:

<div id="rnav1a" <?php if(empty($variable)||!isset($variable)) echo 'style="display: none;"'; ?>>   <jdoc:include type="modules"
 name="right1" />
</div>

Просто добавьте css style="display:none;" избавиться от этого блока.

Несмотря на то, что скрывать div при загрузке страницы - это хорошо, лучше установить div в display: none по умолчанию, и покажите его, если у него есть контент. Кроме того, все равно следует обернуть это в .ready чтобы убедиться, что весь контент загружен.

jQuery( function( ) {
    jQuery( '#divid:not(:empty)' ).css( 'display', 'block' );
});
Другие вопросы по тегам