Ссылки в заголовках виджетов

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО
#1 7 июля 2016 в 09:18
Всем привет.

Возникла небольшая проблема при создании шаблона. Это мой первый блин, который комом scratch, поэтому за не имением опыта обращаюсь ко всем, кто что-то в этом понимает.

Что я сделал? В заголовках виджетов ссылки отображаются в виде блока, при наведении на который подъезжают ссылки. Блок этот имеет фиксированные размеры, а поверх него добавлен псевдоэлемент :before с иконкой fontawesome.



И всё бы ничего, если бы не одно досадное недоразумение. Если таким образом вывести ссылки во вкладках, когда виджеты объединены, то даже если у виджета нет ссылок, "кнопка" все равно видна. По-умолчанию блок .links-wrap не имеет ни цвета, ни размера. Поэтому, если его никак не оформлять, его и не видно при отсутствии ссылок. Но у меня немного иная ситуация.

И, собственно, сам вопрос к профессионалам: как сделать проверку на наличие ссылок в заголовке виджета и при их отсутствии скрыть блок .links-wrap?

Здесь есть ссылки в заголовке виджета:


А здесь нет ссылок:


Спасибо.
#2 7 июля 2016 в 09:44
После 12 строки добавьте строку
  1. if(empty($widget['links']){continue;}
#3 7 июля 2016 в 09:46
Либо поменяйте там местами 13 и 14 строки и 19 и 20.
#4 7 июля 2016 в 10:42

После 12 строки добавьте строку

Loadырь
Вставил вот так после 12 строки:

  1. <?php if(empty($widget['links']){continue;}?>
Но теперь вообще ничего нет. Если просто поменять строки местами, то в том виджете, где есть ссылки, показывает пустую кнопку, а где нет — показывает ссылки из первого виджета.

Если поменять строки местами:

Здесь должны быть ссылки:



А здесь нет ссылок, но показываются ссылки того виджета, где они есть:


А вот так, если вставить после 12 строки предложенный код:

#5 7 июля 2016 в 10:47
Упс, скобочку пропустил. Но по сути это должно выглядеть также как и смена строк местами.
  1. <?php if(empty($widget['links'])){continue;}?>
#6 7 июля 2016 в 10:53
Убирать этот блок совсем нельзя. Но можно изменить у него класс или совсем удалить класс.
#7 7 июля 2016 в 11:16
Loadырь
Не срабатывает этот код. Все равно кнопка видна.

можно изменить у него класс

Loadырь
Вот этот вариант сработал бы наверное. Добавить класс с display:none, и тогда бы всё отображалось правильно. Но как это сделать?
#8 7 июля 2016 в 11:21
Приводим строку 13 к виду
  1. <div class="links-wrap" id="widget-links-<?php echo $widget['id']; ?>" <?php if ($index>0 || empty($widget['links'])) { ?>style="display: none"<?php } ?>>
#9 7 июля 2016 в 11:27
Но лучше так
  1. <div class="<?php if (empty($widget['links'])) { ?>novisible<?php } else {?>links-wrap<?php } ?>" id="widget-links-<?php echo $widget['id']; ?>" <?php if ($index>0) { ?>style="display: none"<?php } ?>>
и добавить стили для класса novisible.
#10 7 июля 2016 в 11:46

Приводим строку 13 к виду

Loadырь
Спасибо большое, работает!

Правда, я немного не правильно изначально классы указал, нужно было скрыть не .links-wrap, а .links. Но Ваш способ мне все равно очень помог))
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.