Sviatoy
@Sviatoy
beginner

Как проверить, содержит ли переменная какой-то текст?

Есть изображение и видео:

<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; почему-то перечеркнут. Что делаю не так?
  • Вопрос задан
  • 196 просмотров
Решения вопроса 1
XandrKhv
@XandrKhv
Веб Разработчик
вывод дополнительных стилей через php условия, это лишнее
сделайте что-то наподобие

<?php if (!empty($catalogProd['prod-img'])): ?>
    <img src="<?php echo $catalogProd['prod-img']; ?>" alt="<?php echo $catalogProd['prod-descr']; ?>">
<?php endif; ?>
<?php if (!empty($catalogProd['prod-video'])): ?>
    <video class="video" playsinline="" autoplay="" loop="" muted="">
        <source src="<?php echo $catalogProd['prod-video']; ?>" type="video/mp4">
    </video>
<?php endif; ?>
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Stalker_RED
@Stalker_RED
<?php if (!empty($prodImg)):?>   <!-- если переменная $prodImg НЕ пустая -->
  <img src="<?=$prodImg?>">      <!-- показываем картинку -->
<?php endif;?>                   <!--  else не нужен, при пустой и так ничего не выведется -->
Ответ написан
Sviatoy
@Sviatoy Автор вопроса
beginner
Вот ещё проще решение подсказали...
<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>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы