Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

halfhope

Користувачі
  
  • Публікації

    1 750
  • З нами

  • Відвідування

Повідомлення, опубліковані користувачем halfhope

  1. В 21.02.2017 в 19:56, florapraktik сказал:

    Если бы не оптимизированные изображения были самой большой экологической проблемой человечества в целом и моей Страны в частности...

    я бы уже познал дзен...

    мы бы все познали дзен.

     

    Если бы у меня была возможность заменить все ТЭЦ на атомные или возобновляемые источники энергии я бы сразу решил этот вопрос, но такой возможности у меня нет. Поэтому лучше не думать о бесполезном и делать то, что можешь сам. Все начинается с малого. Не смотри на других, начни с себя.

  2. В 21.02.2017 в 13:07, florapraktik сказал:

    или просто забить и заняться чем-то по-настоящему полезным.

     

    Не соглашусь, это как минимум энергоэффективно. Оптимизируя изображения и удаляя другие ненужные изгороди вы делаете мир экологичней т.к. тратится меньше энергии на передачу данных. С каждого по капле. 

    • +1 3
  3. Так уж вышло, что серверные библиотеки imagick и GD, которые обрабатывают изображения, не могут сделать их такими, какие они нужны PageSpeed (оптимизированными). Для оптимизации изображений без потери качества нужен сторонний пакет, а точнее пакеты для оптимизации png и jpeg изображений. Ими могут быть:

    JPEG

    • jpegoptim
    • JPEGmini
    • Jpegtran

    PNG

    • optipng
    • pngcrush
    • pptiPng
    • tinyPng
    • pngout

    Рекомендую ставить optipng и jpegoptim, потому что они проверены и другие я не пробовал) Для установки на сервер необходимы права на установку пакетов, которых нет на обычном shared хостинге, но обычно есть на VPS/VDS. Если у вас shared хостинг, то спросите у тех. поддержки о наличии одного из этих пакетов и возможности их установить, при их отсутствии.
     

    Либо установите сами, через терминал:

    apt-get install jpegoptim optipng

    или 

    yum install jpegoptim optipng

    Затем нужно найти все jpg и png изображения и оптимизировать их. Ищем jpg изображения и оптимизируем их (не забывайте про аналогичное расширение jpeg):

    find /путь/к/сайту -name "*.jpg" -exec jpegoptim {} --strip-all \;

    Будьте внимательны, при использовании --strip-all удаляются метаданные изображений, такие как название фотоаппарата, геоданные и т.д. Если это критично, то уберите --strip-all из команды. 

     

    Для PNG:

    find /путь/к/сайту -name "*.png" -exec optipng {} \;

    Если у вас все получилось и вы все еще читаете, значит можно добавить автоматическую обработку изображений в класс обработки изображений OpenCart, который находится по адресу system/library/image.php. Для этого необходимы права на вызов функции exec. В файл нужно добавить закомментированные строки. 

        public function save($file, $quality = 90) {
    		$info = pathinfo($file);
           
    		$extension = strtolower($info['extension']);
       		
    		if (is_resource($this->image)) {
    			if ($extension == 'jpeg' || $extension == 'jpg') {
    				imagejpeg($this->image, $file, $quality);
    				// exec('jpegoptim "' . $file . '"', $output, $result);
    			} elseif($extension == 'png') {
    				imagepng($this->image, $file);
    				// exec('optipng "' . $file . '"', $output, $result);
    			} elseif($extension == 'gif') {
    				imagegif($this->image, $file);
    			}
    			   
    			imagedestroy($this->image);
    		}
        }

     

    • +1 2
  4. 1 час назад, krluch сказал:

    Да вот теперь и понял в чем конкретно проблема.
    Есть какой-нибудь костыль, чтоб не разбирать модуль и заставить его не работать в нужной схеме (макете)???? 

     

    По-хорошему бы избавиться вообще от такого модуля. Могу только порекомендовать посмотреть файл catalog/controller/common/позиция_на_которой_выводится_модуль.php, там код, который отвечает за подгрузку модулей, там можно все решить костылем.

  5. Загрузка и проверка происходит в контроллере common/filemanager, который находится в файле admin/controller/common/filemanager.php, а именно в функции upload. Там же можно добавить проверку или переименование файла, если такой уже существует. Для примера приведу отрезки кода из этой функции с проверкой и переименованием:

    if (!$this->user->hasPermission('modify', 'common/filemanager')) {
    		$json['error'] = $this->language->get('error_permission');  
    }
    
    ##############
    
    // Вариант 1. Проверка
    if(file_exists($directory . '/' . $filename)){
    		$json['error'] = $this->language->get('error_file_exists'); // не забудьте добавить error_file_exists в языковой файл common/filemanager  
    }
    
    // Вариант 2. Переименование
    if(file_exists($directory . '/' . $filename)){
    	$counter = 1; //объявляем счетчик
    	$info = pathinfo($filename); //разбираем название файла и расширение
    	$new_filename = $info['filename'] . $counter . $info['extension']; //генерируем новое имя файла
    	while(file_exists($directory . '/' . $new_filename)){ 
    		$new_filename = $info['filename'] . $counter . $info['extension'];
    		$counter++;
    	}
    	$filename = $new_filename;
    }
    
    ##############
    
    if (!isset($json['error'])) {	
    	if (@move_uploaded_file($this->request->files['image']['tmp_name'], $directory . '/' . $filename)) {		
    		$json['success'] = $this->language->get('text_uploaded');
    	} else {
    		$json['error'] = $this->language->get('error_uploaded');
    	}
    }

    Код не проверял, но должен работать. И второй вариант будет работать на PHP 5.2 и старше т.к. filename pathinfo начала возвращать именно с этой версии.

    • +1 1
  6. Нет такой схемы. Фреймворк очень простой, даже в документации нет необходимости) Какой именно момент работы механизма корзины интересует?

    Вот тема, там немножко другое, но сейчас кратко опишу и все поймете.

    1. При добавлении товара массив данных с ID, количеством и опциями передается контроллеру checkout/cart/add (catalog/controller/checkout/cart.php). add в данном случае название функции контроллера. 

    2. Далее функция add контроллера checkout/cart передает данные в класс cart (system/library/cart.php), который и является интерфейсом корзины и доступен по адресу $this->cart

    $this->cart->add($this->request->post['product_id'], $quantity, $option, $profile_id);

    3. В зависимости от версии, данные корзины cart сохраняются в сессию пользователя, либо в БД.

    Вот статьи в помощь:

     

    • +1 3
  7. Для Apache, для nginx нету, только в голове сидит. Пользуйтесь поиском, в интернете очень много информации. Вы не можете управлять заголовками на внешние ресурсы ими управляет отдающий их сервер, т.е. не ваш.

    • +1 1
  8. Вариант 1. Используется в OpenCart

    $('#product input[type=\'text\'], #product input[type=\'hidden\'], #product input[type=\'radio\']:checked, #product input[type=\'checkbox\']:checked, #product select, #product textarea');

    Так можно собрать содержимое полей всех опций. Еще в приведенном коде используется обертка в #product, чтобы выборка не пересекалась с другими полями, которые могут использоваться на странице.

    Приведу полный код из дефолтного шаблона OpenCart версии 2.1.0.1, в нем quantity передается вместе с опциями:

    HTML:

    <button type="button" id="button-cart" class="btn btn-primary btn-lg btn-block">Купить</button>

    JS:

    $('#button-cart').on('click', function() {
    	$.ajax({
    		url: 'index.php?route=checkout/cart/add',
    		type: 'post',
    		data: $('#product input[type=\'text\'], #product input[type=\'hidden\'], #product input[type=\'radio\']:checked, #product input[type=\'checkbox\']:checked, #product select, #product textarea'),
    		dataType: 'json',
    		beforeSend: function() {
    			//
    		},
    		complete: function() {
    			//
    		},
    		success: function(json) {
    			//
    		},
            error: function(xhr, ajaxOptions, thrownError) {
    			//
            }
    	});
    });

    Вариант 2. Сериализация формы.

    Вместо громоздкой конструкции по выборке всех полей формы можно выбрать все сразу:

     $(this).serialize();

     

     

    Порядок опций определяется их сортировкой.

  9. Готов взяться. Но за journal2 придется доплатить. Пишите в ЛС.

    UPD: Не возьмусь, если Вы будете ориентироваться на показатели PageSpeed и GTMetrix, смотрите реальную скорость загрузки страниц. Эти сервисы лишь проверяют наличие шаблонов клиентской оптимизации.

  10. 20 часов назад, SiteMix сказал:

    halfhope занимается лечением. Попробуй ему в личку стукнуть

    Спасибо! 

    Могу помочь, с гарантией. Пишите в ЛС. Рекомендую ничего не удалять самому, это испортит картину заражения и не получится красивый отчет.

  11. // Cart Корзина
    $this->cart->getProducts(); //Получает все товары находящиеся в корзине учитывая опции, акции.
    $this->cart->add( $product_id, $qty = 1, $options = array()); // Добавление товара в корзину
    $this->cart->remove( $key ); // Удаление товара из корзины
    $this->cart->clear(); // Очистка корзины
    $this->cart->getWeight(); // Получение веса всей корзины
    $this->cart->getSubTotal(); // Получение суммы цен элементов корзины без вычета налогов
    $this->cart->getTotal(); // Получение суммы цен элементов корзины с вычетом налогов
    $this->cart->countProducts(); // Получение количества товаров в корзине 
    $this->cart->hasProducts(); // Проверяет пуста корзина или нет
    $this->cart->hasStock(); // Возвращает false, если хотя бы один элемент корзины отсутствует на складе(в продаже)
    $this->cart->hasShipping(); // Возвращает true, если хотя бы один элемент корзины требует доставку
    $this->cart->hasDownload(); // Возвращает true, если хотя бы один элемент корзины связан с какой-либо загрузкой 

    Описание основных классов можно посмотреть тут. К сожалению, на данный момент, посмотреть сайт можно только в кэше.

    • +1 1
  12. Добрый вечер) В консоли браузера (Ctrl+Shift+i) видна ошибка, которая говорит от том, что функции colorbox не существует. Вы не подключили стили и скрипты colorbox-а в шапке сайта. Лучше делать это через контроллер, чтобы стили и скрипты colorbox загружались только тогда когда они нужны, а не подгружались на каждой странице сайта. Найдите файл catalog/controller/information/information.php и добавьте в начало функции index() строки:

    $this->document->addStyle('catalog/view/javascript/jquery/colorbox/colorbox.css');
    $this->document->addScript('catalog/view/javascript/jquery/colorbox/jquery.colorbox-min.js');

     

    • +1 1
  13. 10 часов назад, Russiannov сказал:

    сайт на опенкарт 1.5.6.1, антивир хостинга переименовывает файлы на suspected, витрина не работает, какие-то непонятные скрипты разбросаны по сайту...... Цена вопроса(проверка/очистка)?

    подробности на http://ockb.ru/. Пользователям форума скидка)

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.