Помощь Страница товара. Вывод изображений

Вы бы сначала посмотрели на то, о чем я говорю, а потом высказали свое мнение. В данном случае картинка в карточке товара отображается с размерами товара, а в категории без них. В остальном картинки идентичны
Т.е я читать не умею? В первом сообщении ясно поставлена задача, я дал на нее ответ что это глупо если картинки будут разными
 
Т.е я читать не умею? В первом сообщении ясно поставлена задача, я дал на нее ответ что это глупо если картинки будут разными
О разных картинках речи не было, вот я к чему
 
О разных картинках речи не было, вот я к чему
Т.е главное изображение загруженное во вкладке "Данные" отображаться должно только в списке всех товаров, а на странице информации о самом товаре должны быть только прикрепленные изображения, без основного.
Серьезно?
 
Вам надо удалить код, отвечающий за вывод картинки из закладки Данные:
<?php if ($thumb1) { ?>
<div class="image">
<img id="zoom_01" data-zoom-image="<?php echo $thumb1; ?>" src="<?php echo $thumb1; ?>" title="<?php echo $heading_title; ?>" alt="<?php echo $heading_title; ?>" />
</div>
<?php } ?>

и вместо него вставить:
<div class="image">
<img id="zoom_01" data-zoom-image="<?php echo $image['thumb']; ?>" src="<?php echo $image['thumb']; ?>" title="<?php echo $heading_title; ?>" alt="<?php echo $heading_title; ?>" />
</div>
 
Не буду спорить, видимо мы не понимаем друг друга

Вам надо удалить код, отвечающий за вывод картинки из закладки Данные:
<?php if ($thumb1) { ?>
<div class="image">
<img id="zoom_01" data-zoom-image="<?php echo $thumb1; ?>" src="<?php echo $thumb1; ?>" title="<?php echo $heading_title; ?>" alt="<?php echo $heading_title; ?>" />
</div>
<?php } ?>

и вместо него вставить:
<div class="image">
<img id="zoom_01" data-zoom-image="<?php echo $image['thumb']; ?>" src="<?php echo $image['thumb']; ?>" title="<?php echo $heading_title; ?>" alt="<?php echo $heading_title; ?>" />
</div>
Если вы про product.tpl, то код там выглядит так:

<?php if ($thumb) { ?>
<div class="image"><a href="<?php echo $popup; ?>" title="<?php echo $heading_title; ?>" class="colorbox" rel="colorbox"><img src="<?php echo $thumb; ?>" title="<?php echo $heading_title; ?>" alt="<?php echo $heading_title; ?>" id="image" /></a></div>
<?php } ?>

И заменив на ваш ничего не меняется

Вам надо удалить код, отвечающий за вывод картинки из закладки Данные:
<?php if ($thumb1) { ?>
<div class="image">
<img id="zoom_01" data-zoom-image="<?php echo $thumb1; ?>" src="<?php echo $thumb1; ?>" title="<?php echo $heading_title; ?>" alt="<?php echo $heading_title; ?>" />
</div>
<?php } ?>

и вместо него вставить:
<div class="image">
<img id="zoom_01" data-zoom-image="<?php echo $image['thumb']; ?>" src="<?php echo $image['thumb']; ?>" title="<?php echo $heading_title; ?>" alt="<?php echo $heading_title; ?>" />
</div>

Хотя нет, ошибаюсь. Основное изображение не отображается после этих поправок

Для начала решения этой задачки в шаблоне карточки товара попробуйте заменить этот кусок
Код:
      <?php if ($thumb) { ?>
      <div class="image"><a href="<?php echo $popup; ?>" title="<?php echo $heading_title; ?>" class="colorbox"><img src="<?php echo $thumb; ?>" title="<?php echo $heading_title; ?>" alt="<?php echo $heading_title; ?>" id="image" /></a></div>
      <?php } ?>
      <?php if ($images) { ?>
      <div class="image-additional">
        <?php foreach ($images as $image) { ?>
        <a href="<?php echo $image['popup']; ?>" title="<?php echo $heading_title; ?>" class="colorbox"><img src="<?php echo $image['thumb']; ?>" title="<?php echo $heading_title; ?>" alt="<?php echo $heading_title; ?>" /></a>
        <?php } ?>
      </div>
      <?php } ?>
на такое:
Код:
      <?php if ($images) { ?>
        <?php if ($images[0]) { ?>
         <div class="image"><a href="<?php echo $images[0]['popup']; ?>" title="<?php echo $heading_title; ?>" class="colorbox"><img src="<?php echo $images[0]['thumb']; ?>" title="<?php echo $heading_title; ?>" alt="<?php echo $heading_title; ?>" id="image" /></a></div>
        <?php } ?>
      <div class="image-additional">
        <?php foreach ($images as $image) { ?>
          <?php if ($image!=$images[0]) { ?>
            <a href="<?php echo $image['popup']; ?>" title="<?php echo $heading_title; ?>" class="colorbox"><img src="<?php echo $image['thumb']; ?>" title="<?php echo $heading_title; ?>" alt="<?php echo $heading_title; ?>" /></a>
          <?php } ?>
       <?php } ?>
      </div>
      <?php } ?>
А дальше для нормального вывода изображений правки проще сделать в контроллере.

Близко к тому что нужно. Вместо основного отображается первое прикрепленное но маленького размера. Так понимаю нужно размеры в css просто задать?

Для начала решения этой задачки в шаблоне карточки товара попробуйте заменить этот кусок
Код:
      <?php if ($thumb) { ?>
      <div class="image"><a href="<?php echo $popup; ?>" title="<?php echo $heading_title; ?>" class="colorbox"><img src="<?php echo $thumb; ?>" title="<?php echo $heading_title; ?>" alt="<?php echo $heading_title; ?>" id="image" /></a></div>
      <?php } ?>
      <?php if ($images) { ?>
      <div class="image-additional">
        <?php foreach ($images as $image) { ?>
        <a href="<?php echo $image['popup']; ?>" title="<?php echo $heading_title; ?>" class="colorbox"><img src="<?php echo $image['thumb']; ?>" title="<?php echo $heading_title; ?>" alt="<?php echo $heading_title; ?>" /></a>
        <?php } ?>
      </div>
      <?php } ?>
на такое:
Код:
      <?php if ($images) { ?>
        <?php if ($images[0]) { ?>
         <div class="image"><a href="<?php echo $images[0]['popup']; ?>" title="<?php echo $heading_title; ?>" class="colorbox"><img src="<?php echo $images[0]['thumb']; ?>" title="<?php echo $heading_title; ?>" alt="<?php echo $heading_title; ?>" id="image" /></a></div>
        <?php } ?>
      <div class="image-additional">
        <?php foreach ($images as $image) { ?>
          <?php if ($image!=$images[0]) { ?>
            <a href="<?php echo $image['popup']; ?>" title="<?php echo $heading_title; ?>" class="colorbox"><img src="<?php echo $image['thumb']; ?>" title="<?php echo $heading_title; ?>" alt="<?php echo $heading_title; ?>" /></a>
          <?php } ?>
       <?php } ?>
      </div>
      <?php } ?>
А дальше для нормального вывода изображений правки проще сделать в контроллере.

Cтранно. В блоке image (css) любые изменения кроме width, heigth применяются, т.е отступы и т.д , а размер не меняется

Проверьте: маленькое изображение выводится, потому что к нему стили применены такие или фотка сама по себе маленькая?
Воспользуйтесь firebug, чтобы посмотреть какие именно стили задаются, возможно отыщите, где задаются ширина и высота, но для начала проверьте, то что я описал в первом своем предложении.

Для просмотра ссылки Войди или Зарегистрируйся

Про близкий результат я писал другому пользователю, предоставившему решение на 1 странице. Результат вашего решения на скрине выше, а вот результат решения от пользователя с 1 страницы: Для просмотра ссылки Войди или Зарегистрируйся
В данном случае делая изменения в css (.product-info .image) к примеру border: 1px solid #E7E7E7; обводит изображения, но если указываю размеры в пикселях то это не срабатывает

Попробуйте задать эти свойства с использованием !important:
width: 300px !important;
height: 300px !important;
Увеличился только отступ Для просмотра ссылки Войди или Зарегистрируйся

Выяснил что размер картинок изменяется совместно с добавленными изображениями. В админке сменил размер добавленных изображения и получил оба увеличенных изображения

Ну значит класс .image относится не к изображению, а к боксу, в котором оно находится. Задайте эти свойства для .product-info .image img
Если возможно, скиньте ссылку на Ваш магазин, так будет быстрее и проще решить проблему
Да, вы правы. В css вообще не было такого св-ва. Но сейчас такая картинка, когда в .product-info .image img увеличил размеры. Для просмотра ссылки Войди или Зарегистрируйся
 
Последнее редактирование модератором:
Хотя нет, ошибаюсь. Основное изображение не отображается после этих поправок
Все верно, я забыл указать путь (catalog/view/theme/тема/product/product.tpl) Я тестил на версии OpenCart 1.5.6.4. У меня там такой код, и за вывод основного изображения товара отвечает переменная $thumb1, а за вывод дополнительных фоток - $image['thumb']

Близко к тому что нужно. Вместо основного отображается первое прикрепленное но маленького размера. Так понимаю нужно размеры в css просто задать?
Проверьте: маленькое изображение выводится, потому что к нему стили применены такие или фотка сама по себе маленькая?
Воспользуйтесь firebug, чтобы посмотреть какие именно стили задаются, возможно отыщите, где задаются ширина и высота, но для начала проверьте, то что я описал в первом своем предложении.

Попробуйте задать эти свойства с использованием !important:
width: 300px !important;
height: 300px !important;

Увеличился только отступ Для просмотра ссылки Войди или Зарегистрируйся
Ну значит класс .image относится не к изображению, а к боксу, в котором оно находится. Задайте эти свойства для .product-info .image img
Если возможно, скиньте ссылку на Ваш магазин, так будет быстрее и проще решить проблему
 
Последнее редактирование модератором:
rnz, по размеру картинок в моем наброске я предупреждал, что проще подправить в контроллере. Позже набросаю приблизительное решение.
 
Для выше изложенных моих набросков в шабе нужны измения в контроллере /catalog/controller/product/product.php
Этот кусок:
Код:
            $results = $this->model_catalog_product->getProductImages($this->request->get['product_id']);

            foreach ($results as $result) {
                $this->data['images'][] = array(
                    'popup' => $this->model_tool_image->resize($result['image'], $this->config->get('config_image_popup_width'), $this->config->get('config_image_popup_height')),
                    'thumb' => $this->model_tool_image->resize($result['image'], $this->config->get('config_image_additional_width'), $this->config->get('config_image_additional_height'))
                );
            }
заменить на это:
Код:
            $results = $this->model_catalog_product->getProductImages($this->request->get['product_id']);

            foreach ($results as $result) {
              if ($result==$results[0]) {
                $this->data['images'][] = array(
                    'popup' => $this->model_tool_image->resize($result['image'], $this->config->get('config_image_popup_width'), $this->config->get('config_image_popup_height')),
                    'thumb' => $this->model_tool_image->resize($result['image'], $this->config->get('config_image_thumb_width'), $this->config->get('config_image_thumb_height'))
                );
              } else {
                $this->data['images'][] = array(
                    'popup' => $this->model_tool_image->resize($result['image'], $this->config->get('config_image_popup_width'), $this->config->get('config_image_popup_height')),
                    'thumb' => $this->model_tool_image->resize($result['image'], $this->config->get('config_image_additional_width'), $this->config->get('config_image_additional_height'))
                );
              }
            }
Изменения рассматривал на основе опенкарта 1.5.6.4 и дефолтном шабе.
Это упрощенное "по быстрому сделанное" решение задачки.
 
Не забудьте проверить существует ли $result['image'] когда выводите первую картинку
Не вижу необходимости в подобной проверке, т.к. нет изменений логики исходного кода контроллера. Если ошибаюсь - поясните.
 
Назад
Сверху