Размер картинок?

Тема в разделе "OpenCart", создана пользователем arber, 31 мар 2015.

  1. arber

    arber

    Регистрация:
    9 фев 2014
    Сообщения:
    21
    Симпатии:
    1
    Господа подскажите, как автоматом добавить в код, к изображениям, их размеры?
    Версия движка 1.5.6.4
    Вот нашел код
    Откройте следующий файл в текстовом редакторе:

    • System/Library/Response.php
    Найдите следующую строку кода в файле:

    if ($this->level) {
    Затем добавьте следующий код просто прежде чем выше линии:

    //Q: Add width/height tags to all images for Google Page Speed tip:
    //http://code.google.com/speed/page-speed/docs/rendering.html#SpecifyImageDimensions
    preg_match_all('/<img[^>]+>/i', $this->output, $result);

    $img = array();
    foreach($result[0] as $img_tag) {
    preg_match_all('/(width|height|src)=("[^"]*")/i',$img_tag, $img[$img_tag]);
    }

    foreach ($img as $k => $info) {
    if (count($info) == 3 && $info[1][0] == 'src') {
    //if (curl_init(str_replace('"', '', $info[2][0]))) {
    $imgfile = str_replace('"', '', $info[2][0]);
    $imgfile = str_replace(HTTP_SERVER, DIR_IMAGE . '../', $imgfile);
    $imgfile = str_replace(HTTPS_SERVER, DIR_IMAGE . '../', $imgfile);
    if (file_exists($imgfile)) {
    $image_info = getImageSize(str_replace('"', '', $imgfile));
    $k = trim($k, '/>');
    $k = trim($k, '>');
    $this->output = str_replace($k, ($k . ' ' . $image_info[3]), $this->output);
    }
    }
    }
    //

    Но он не работает, : ???
    ache/vq2-system_library_response.php on line 97� �}k��ƕ���s�?�i�HF >��~��+K��X����Y��j"0�-��9~�N�8'�����I���/sV�%K�����K��[ ��$�f�䳂�&Y����u����νq���<Ϛ^��]<��n8;�s2�ԭ�N��f� ������jM�q���y����F�����;�}�tl�˰�my܂�
     
    Последнее редактирование: 31 мар 2015
  2. halfhope

    halfhope

    Регистрация:
    31 дек 2012
    Сообщения:
    285
    Симпатии:
    312
    Нельзя так делать.
    Во первых, getImageSize ооооооооооооочень долгая, чтобы получить размер одного изображения иногда уходит 0.5 секунд. Сайт будет грузиться долго.
    Во вторых, замена всех image реплейсом из класса response - очень плохая идея, которая никак не сходится с архитектурой OpenCart, получается говнокод. Хотите сделать из магазина помойку, пожалуйста.

    Самый правильный способ - указать размеры только для тех изображений, которым это необходимо. Как узнать каким изображениям это необходимо?
    Во первых, это все изображения в шапке сайта т.е. чаще всего это только логотип. для этого необходимо открыть логотип, узнать его размер. Открыть файл catalog/view/theme/название-темы/common/header.tpl найти вывод логотипа и вручную указать высоту и ширину. Так же с остальными изображениями в шапке сайта.
    Во вторых, изображения категорий и модулей, которые стоят в начале страницы, т.е. модулей, которые показаны при загрузке сайта без прокрутки страницы.
    В обоих случаях необходимо получить настройки (ширина/высота) изображений в контроллере и передать их в шаблон. Но чтобы ускорить процесс, можно получить и вставить ширину и высоту прямо в файле шаблона.
    Открываем файл шаблона категории, находим вывод изображения товара и добавляем ширину и высоту:
    PHP:
    <div class="image">
      <a href="<?php echo $product['href']; ?>">
        <img src="<?php echo $product['thumb']; ?>" title="<?php echo $product['name']; ?>" width="<?php echo $this->config->get('config_image_product_width'?>" height="<?php echo $this->config->get('config_image_product_height'?>" alt="<?php echo $product['name']; ?>" />
      </a>
    </div>
    Аналогично с файлами шаблонов модулей.
     
    Pelmen2 и HPlus нравится это.
  3. elois

    elois

    Регистрация:
    1 апр 2015
    Сообщения:
    7
    Симпатии:
    0
    а у всех сборок при загрузке изображений через админку они ужимаются под стандарт?
     
  4. halfhope

    halfhope

    Регистрация:
    31 дек 2012
    Сообщения:
    285
    Симпатии:
    312
    Нет. Загружаются и хранятся оригиналы. Только когда изображение необходимо на странице витрины - создается копия изображения с заданными размерми(кэш картинок).
     
    HPlus нравится это.
  5. arber

    arber

    Регистрация:
    9 фев 2014
    Сообщения:
    21
    Симпатии:
    1
    Спасибо большое, в основном все работает, но на некоторых картинках, размер стоит, а http://gtmetrix.com говорит что нужно поставить. Непонятно???7
     
  6. halfhope

    halfhope

    Регистрация:
    31 дек 2012
    Сообщения:
    285
    Симпатии:
    312
    Вы неправильно указываете размеры!!! В формате HTML!!! Откуда Вы взяли "width: 500px; height: 60px;" и style= "width: 500px; height: 60px;" ?????
    Нужно вот так:
    PHP:
    <img src="<?php echo $logo;?>" title=" <?php echo $name;?>" width="500" height="60" alt=" <?php echo $name;?>" />
     
  7. arber

    arber

    Регистрация:
    9 фев 2014
    Сообщения:
    21
    Симпатии:
    1
    Эфект такой же же. Главное что, в исходнике страницы есть размеры, а http://gtmetrix.com по прежнему говорит что нет.
     
  8. halfhope

    halfhope

    Регистрация:
    31 дек 2012
    Сообщения:
    285
    Симпатии:
    312
    Все сделали правильно. Если в коде есть, а GtMetrix игнорит, то шлите этот GtMetrix
     
  9. elois

    elois

    Регистрация:
    1 апр 2015
    Сообщения:
    7
    Симпатии:
    0
    Может Вы случайно знаете как влиять на эти заданные размеры... а то грузит мелкие какие-то, хотя залиты крупные. v 2.0.1.1
     
  10. cherkas

    cherkas

    Регистрация:
    25 фев 2013
    Сообщения:
    336
    Симпатии:
    44
    в админке СИСТЕМА-НАСТРОЙКИ-(изменить)-Вкладка ИЗОБРАЖЕНИЯ

    почему то мне кажется, что Вас именно это интересует.
     
  11. halfhope

    halfhope

    Регистрация:
    31 дек 2012
    Сообщения:
    285
    Симпатии:
    312
    catalog/controller/product/product.php замените
    Код:
    $this->data['thumb'] = $this->model_tool_image->resize($image, $this->config->get('config_image_thumb_width'), $this->config->get('config_image_thumb_height'));
    на:
    Код:
    $this->data['thumb'] = 'image/' . $image;
     
  12. mr.Elias

    mr.Elias

    Регистрация:
    15 июн 2013
    Сообщения:
    269
    Симпатии:
    41
    отличная тема! а как же насчет переноса картинок на внешний / домен второго уровня? это ведь также приведет к увеличению скорости загрузки?