Вывожу картинки через php функцию, как вывести 2 фотки сразу?

Всем привет, в php не соображаю, еще так сказать учусь.

Вообщем есть функция, через которую я в товаре вывожу 1 фотку, как мне сделать чтобы можно было вывести 2 фотки?

public function getImage()
    {
        $imageORM = ORM::factory('Image', $this->image_id);
        if (empty($imageORM->image))
        {
            return false;
        }

        return $imageORM->image;
    }


В шаблоне вывожу так:
<?php if ($product_1->getImage()) : ?>
  <img src="/media/uploads/small/small-<?php echo ($product_1->getImage()) ?>" alt="<?= $product_1->prname ?>" title="Перейти в товар - <?= $product_1->prname ?>" />
<?php else : ?>
  <img src="/media/uploads/nofoto.jpg" alt="Нет фото на товаре" title="Нет фото" />
<?php endif; ?>
  • Вопрос задан
  • 188 просмотров
Решения вопроса 1
ws17
@ws17 Автор вопроса
Вопрос решил чуть по другому, не через модельку и функцию вывода фото, а сам способ вывода товаров + фото к ним на главной странице из раздела хиты продаж.

Может кому надо будет.

$subQuerySelect = [
      DB::select(DB::expr('substring_index(GROUP_CONCAT(ZZ.image SEPARATOR ","), ",", 2)'))
      ->from(['images', 'ZZ'])
      ->where('ZZ.product_id', '=', DB::expr('products.id'))
          ->group_by('ZZ.product_id')
          ->limit(1),
      'productImages'
    ];
    //подгружаем товары из подкатегории по id
    $subQueryWhere = DB::select('product_id')
    ->from('categoriesmultis')
    ->where('category_id', '=', 20538);
    //выводим в шаблон товары и фото
    $this->template->block_1 = DB::select($subQuerySelect, DB::expr('products.*'))
      ->from('products')
      ->where('status', '=', 1)
      ->order_by('sorts', 'DESC')
      ->where('id', 'IN', $subQueryWhere)
      ->limit(8)
      ->as_object('Model_ProductsTable')
      ->execute();


В шаблоне вывод товара и фото с заглушкой если нет фото.

<?php foreach ($block_1 as $product_1) : ?>
<h2><?= $product_1->prname ?></h2>

<?php if ($product_1->productImages) : ?>
<?php $productImages = explode(',', $product_1->productImages); ?>
<?php foreach ($productImages as $imageName) : ?>
<img src="/media/uploads/small/small-<?= $imageName ?>" />
<?php endforeach ?>
<?php else : ?>
<img src="/media/uploads/nofoto.jpg" alt="Нет фото на товаре" title="Нет фото" />
<?php endif; ?>

<?php endforeach ?>


А делал я это для того, чтобы при наведении на фотку у товара, фотка менялась, для этого я и выводил две фотки, чтобы одна пряталась за другую, ну и при наведении на фото, она скрывалась, а вторая показывалась.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
Надо добавить метод getImages($num=2) чтобы она принимала аргументом количество картинок и возвращала массив.
И в шаблоне можно будет сделать foreach(). Только дергать базу два раза некрасиво, лучше сначала получить в переменную, а потом ее использовать

<?php if ($images = $product_1->getImages()) : ?>
<?php foreach ($images as $img): ?>
    <img src="/media/uploads/small/small-<?= $img ?>" alt="<?= $product_1->prname ?>" title="Перейти в товар - <?= $product_1->prname ?>" />
<?php endforeach ?>
<?php else : ?>
  <img src="/media/uploads/nofoto.jpg" alt="Нет фото на товаре" title="Нет фото" />
<?php endif; ?>
Ответ написан
Ваш ответ на вопрос

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

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