Как я могу скрыть CSS div, используя php, если в div нет информации?
Я уже спрашивал об этом, но я не думаю, что я был достаточно конкретным!
Я ищу очень простой способ скрыть div, когда в нем нет никакой информации. - Это должно быть просто для клиента, чтобы он не беспокоился об этом.
У Div есть информация, помещенная в это с joomla в определенных категориях.
Например, в моем основном шаблоне у меня может быть div ниже моей навигации слева, я могу выбрать, на каких страницах он отображает модули, но когда он не используется, он все равно отображает свои границы.
Я также не хочу использовать много разных шаблонов для сайта, просто имею возможность использовать много позиций модулей, но когда они не используются, они скрыты.
Посмотрите, под моей навигацией слева.
Если это поможет, вот код, который я пытался бы скрыть, если 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' );
});