Как проверить содержит ли переменная какой-то текст PHP?
Задача такая, есть изображение и видео:
<img src="<?php echo $catalogProd['prod-img']; ?>" alt="<?php echo $catalogProd['prod-descr']; ?>">
<video class="video" playsinline="" autoplay="" loop="" muted="">
<source src="<?php echo $catalogProd['prod-video']; ?>" type="video/mp4">
</video>
Ссылки на них берутся из аминки WordPress с помощью плагина Custom Field Suite. Заказчик хочет вставлять либо изображение, либо видео. Если изображение не вставить в админке, то img src="здесь пусто", но отображается иконка незагруженного изображения, то же самое с видео, только там пустой блок высотой 125px. Я пытаюсь через условие скрыть изображение либо видео следующим образом:
<div class="catalog">
<?php
$catalog = CFS()->get('catalog-prod');
foreach ($catalog as $catalogProd) {
?>
<a href="<?php echo $catalogProd['prod-link']; ?>" class="prod">
<img src="<?php echo $catalogProd['prod-img']; ?>" alt="<?php echo $catalogProd['prod-descr']; ?>">
<video class="video" playsinline="" autoplay="" loop="" muted="">
<source src="<?php echo $catalogProd['prod-video']; ?>" type="video/mp4">
</video>
<p class="slug-ali">Aliexpress</p>
<p class="prod-descr"><?php echo $catalogProd['prod-descr']; ?></p>
<p class="prod-price"><?php echo $catalogProd['prod-price']; ?></p>
<button class="prod-btn"><?php echo $catalogProd['prod-btn']; ?></button>
</a>
<?php
$prodImg = $catalogProd['prod-img'];
$prodVideo = $catalogProd['prod-video'];
echo $prodImg; //если изображение загружено, то выводит ссылку, если нет, то пусто
echo $prodVideo; // тоже самое
if ($prodImg == "") { ?>
<style>
.prod img{
display:none;
}
</style>
<?php } else { ?>
<style>
.prod video{
display:none;
}
</style>
<?php }
}
?>
</div>
Но не скрывает, в инспекторе кода display:none; почему-то перечеркнут. Подскажите, что делаю не так?
Ответы (1 шт):
Воспользуйтесь PHP просто для того чтобы не рендерить лишние элементы, если переменные пустые. И не нужно писать никаких костылей с CSS. По-умолчанию в if проверка на пустоту и так сработает. Если по каким-то другим причинам Вам нужно знать, пуста ли строка, то используйте функцию empty(). Убрал Ваше условие с style, и просто обернул элементы в проверки.
<div class="catalog">
<?php
$catalog = CFS()->get('catalog-prod');
foreach ($catalog as $catalogProd) : ?>
<a href="<?php echo $catalogProd['prod-link']; ?>" class="prod">
<?php if ($catalogProd['prod-img']) : ?>
<img src="<?php echo $catalogProd['prod-img']; ?>" alt="<?php echo $catalogProd['prod-descr']; ?>">
<?php endif; ?>
<?php if ($catalogProd['prod-video']) : ?>
<video class="video" playsinline="" autoplay="" loop="" muted="">
<source src="<?php echo $catalogProd['prod-video']; ?>" type="video/mp4">
</video>
<?php endif; ?>
<p class="slug-ali">Aliexpress</p>
<p class="prod-descr"><?php echo $catalogProd['prod-descr']; ?></p>
<p class="prod-price"><?php echo $catalogProd['prod-price']; ?></p>
<button class="prod-btn"><?php echo $catalogProd['prod-btn']; ?></button>
</a>
<?php endforeach; ?>
</div>