2014-05-19 4 views
0

У меня возникли трудности с этим. То, что я хочу достичь, - это то, что work-left и works-right пустые (имея в виду, что он работает с использованием предварительно обработанного кода drupal) родительский div (last-works-container) исчезнет.Drupal/Jquery: скрыть родительский div, если ребенок пуст

Мне было интересно, если есть проблема с решением проблемы. Мне пришло в голову редактирование кода template.php, который находится в bartik, или какое-то другое возможное решение?

function hybrid_preprocess_html(&$variables) { 
    if (!empty($variables['page']['featured'])) { 
    $variables['classes_array'][] = 'featured'; 
    } 

    if (!empty($variables['page']['services_first']) 
    || !empty($variables['page']['services_second']) 
    || !empty($variables['page']['services_third']) 
    || !empty($variables['page']['services_fourth'])) { 
    $variables['classes_array'][] = 'services'; 
    } 


    <div id="latest-works-container"><!--latest-works-container--> 
     <div id="latest-works"><!--latest-works--> 
     <div class="works-left"> 
      <?php print render($page['portfolio_works_first']); ?> 
     </div> 
     <div class="works-right"> 
      <?php print render($page['portfolio_works_second']); ?> 
     </div> 
     <div class="works-left"> 
      <?php print render($page['portfolio_works_third']); ?> 
     </div> 
     <div class="works-right"> 
      <?php print render($page['portfolio_works_fourth']); ?> 
     </div> 
     </div><!--/latest-works--> 
    </div><!--/latest-works-container--> 
+1

Вы можете проверить их с помощью isset перед div id = "latest-works-container", и если ни один из них не является isset, вы не будете отображать весь div – Zolyboy

ответ

0

Содержимое вашего элемента происходит от PHP, поэтому вам не нужно удалять div с помощью jQuery.

Вместо этого вы должны отредактировать свой файл вида. Так, например, у вас есть метод render(), который дает вам содержимое div.

$contentBlockFirstLeft = render($page['portfolio_works_first']); 
$contentBlockSecondLeft = render($page['portfolio_works_third']); 
$contentBlockFirstRight = render($page['portfolio_works_second']); 
$contentBlockSecondRight = render($page['portfolio_works_fourth']); 

$isLeftBlockEmpty = empty($contentBlockFirstLeft) && empty($contentBlockSecondLeft); 
$isRightBlockEmpty = empty($contentBlockFirstRight) && empty($contentBlockSecondRight); 

$showAllBlocks = true; 
if ($isLeftBlockEmpty && $isRightBlockEmpty) { 
    $showAllBlocks = false; 
} 

Итак, вы уже знаете всю необходимую информацию для вывода вашего elemnt, так, например, вы будете иметь следующий вид. Не стесняйтесь изменять имена переменных в соответствии с необходимой бизнес-логикой, это просто фиктивные имена.

<?php if ($showAllBlocks): ?> 
    <div id="latest-works-container"><!--latest-works-container--> 
    <div id="latest-works"><!--latest-works--> 
     <div class="works-left"> 
     <?php echo $contentBlockFirstLeft; ?> 
     </div> 
     <div class="works-right"> 
     <?php echo $contentBlockFirstRight; ?> 
     </div> 
     <div class="works-left"> 
     <?php echo $contentBlockSecondLeft; ?> 
     </div> 
     <div class="works-right"> 
     <?php echo $contentBlockSecondRight; ?> 
     </div> 
    </div><!--/latest-works--> 
</div><!--/latest-works-container--> 
<?php endif; ?> 
Смежные вопросы