Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

emelkay

Новичок
  
  • Публикаций

    13
  • Зарегистрирован

  • Посещение

1 подписчик

О emelkay

  • День рождения 16.06.1991

Техническая поддержка

  • Рабочие дни
    Пн
    Вт
    Ср
    Чт
    Пт
    Сб
    Вс
  • Выходные дни
    Пн
  • Рабочее время
    11:00-23:00
  • Текущий статус
    Работаю

Информация

  • Пол
    Мужчина
  • Город:
    Київ
  • Интересы
    minimal-techno, php, js, активний відпочинок з друзями та сім'єю

Посетители профиля

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

Достижения emelkay

  1. emelkay

    403 Access denied

    # SEO URL Settings RewriteEngine On # If your opencart installation does not run on the main web folder make sure you folder it does run in ie. / becomes /shop/ RewriteBase / RewriteRule ^admin/(.*)?$ admin/index.php?_route_=$1 [L,QSA] RewriteRule ^sitemap.xml$ index.php?route=extension/feed/google_sitemap [L] RewriteRule ^googlebase.xml$ index.php?route=extension/feed/google_base [L] RewriteRule ^system/download/(.*) index.php?route=error/not_found [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} ^/catalog/?$ RewriteRule ^(.*)$ index.php?_route_=common/home [L]
  2. emelkay

    индексация страниц opencart

    дякую шановний то напевно в мене був кеш
  3. приветствую может кто подскажет, на сайте сканируются все страницы нормально а запрос купить кроссовки, вообще не в какую. https://sport-mood.com/
  4. Приветствую помогите докрутить сортировку: сортировка по умолчанию по цене от меньшей к большей работает. Но при этом не учитывается сортировка заданая в товаре. В контроллере поменял if (isset($this->request->get['sort'])) { $sort = $this->request->get['sort']; } else { $sort = 'p.price'; } if (isset($this->request->get['order'])) { $order = $this->request->get['order']; } else { $order = 'ASC'; } Остальсь в моделе поменять или?
  5. Но при такой сортировке не работает сортировка которая задается в товаре. Тоесть если сортировка по умолчанию = то если в товаре задаем сортировку для товара. У всем товарам 9999 А некоторым товарам 1, 2, 3 ,4 и тд.. чтобы были первыми. При сортировке по цене как выше написано = сортировка указаня в товаре не учитывается. Может кто поделится решением..
  6. Добрый день может кто знает как в этом модуле полностью отклюяить прозранчоть картинки? Если в настройках модуля ставим прозрачность 1.0 то применятся фильтр и цвета становятся индексированными.. https://www.opencart.com/index.php?route=marketplace/extension/info&extension_id=24779&filter_search=Watermark&filter_license=0 <?php /* Files /module/featured.php + /module/bestseller.php + /module/ebay_listing.php + /module/carousel.php + /module/latest.php + /module/special.php + /module/slideshow.php + /module/banner.php + /feed/google_sitemap.php + /feed/google_base.php + /product/product.php + /product/special.php + /product/manufacturer.php + /product/search.php + /product/compare.php + /product/category.php + /common/cart.php + /account/wishlist.php + /payment/pp_express.php + /checkout/cart.php + Type for images category_image product_thumb product_popup product_list product_additional product_related product_in_compare product_in_wish_list product_in_cart */ class ImageWatermark { private $file; private $image; private $width; private $height; private $bits; private $mime; public function __construct($file) { if (file_exists($file)) { $this->file = $file; $info = getimagesize($file); $this->width = $info[0]; $this->height = $info[1]; $this->bits = isset($info['bits']) ? $info['bits'] : ''; $this->mime = isset($info['mime']) ? $info['mime'] : ''; if ($this->mime == 'image/gif') { $this->image = imagecreatefromgif($file); } elseif ($this->mime == 'image/png') { $this->image = imagecreatefrompng($file); } elseif ($this->mime == 'image/jpeg') { $this->image = imagecreatefromjpeg($file); } } else { exit('Error: Could not load image ' . $file . '!'); } } public function getFile() { return $this->file; } public function getImage() { return $this->image; } public function getWidth() { return $this->width; } public function getHeight() { return $this->height; } public function getBits() { return $this->bits; } public function getMime() { return $this->mime; } 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); } elseif ($extension == 'png') { imagepng($this->image, $file); } elseif ($extension == 'gif') { imagegif($this->image, $file); } imagedestroy($this->image); } } public function resize($width = 0, $height = 0, $default = '') { if (!$this->width || !$this->height) { return; } $xpos = 0; $ypos = 0; $scale = 1; $scale_w = $width / $this->width; $scale_h = $height / $this->height; if ($default == 'w') { $scale = $scale_w; } elseif ($default == 'h') { $scale = $scale_h; } else { $scale = min($scale_w, $scale_h); } if ($scale == 1 && $scale_h == $scale_w && $this->mime != 'image/png') { return; } $new_width = (int)($this->width * $scale); $new_height = (int)($this->height * $scale); $xpos = (int)(($width - $new_width) / 2); $ypos = (int)(($height - $new_height) / 2); $image_old = $this->image; $this->image = imagecreatetruecolor($width, $height); if ($this->mime == 'image/png') { imagealphablending($this->image, false); imagesavealpha($this->image, true); $background = imagecolorallocatealpha($this->image, 255, 255, 255, 127); imagecolortransparent($this->image, $background); } else { $background = imagecolorallocate($this->image, 255, 255, 255); } imagefilledrectangle($this->image, 0, 0, $width, $height, $background); imagecopyresampled($this->image, $image_old, $xpos, $ypos, 0, 0, $new_width, $new_height, $this->width, $this->height); imagedestroy($image_old); $this->width = $width; $this->height = $height; } public function watermark($config) { $file = DIR_IMAGE . $config['image']; $info = getimagesize($file); $width = $info[0]; $height = $info[1]; $bits = isset($info['bits']) ? $info['bits'] : ''; $mime = isset($info['mime']) ? $info['mime'] : ''; if ($mime == 'image/gif') { $watermark = imagecreatefromgif($file); } elseif ($mime == 'image/png') { $watermark = imagecreatefrompng($file); } elseif ($mime == 'image/jpeg') { $watermark = imagecreatefromjpeg($file); } if((float)$config['zoom'] != 1) { $new_width = (int)($width * (float)$config['zoom']); $new_height = (int)($height * (float)$config['zoom']); $image_old = $watermark; $watermark = imagecreatetruecolor($new_width, $new_height); if ($mime == 'image/png') { imagealphablending($watermark, false); imagesavealpha($watermark, true); $background = imagecolorallocatealpha($watermark, 255, 255, 255, 0); imagecolortransparent($watermark, $background); } else { $background = imagecolorallocate($this->image, 255, 255, 255); } imagefilledrectangle($watermark, 0, 0, $width, $height, $background); imagecopyresampled($watermark, $image_old, 0, 0, 0, 0, $new_width, $new_height, $width, $height); imagedestroy($image_old); $width = $new_width; $height = $new_height; } $watermark_pos_x = 10; $watermark_pos_y = 10; if((int)$config['pos_x_center'] == 1) { $watermark_pos_x = (int)($this->width/2 - $width/2); } elseif((int)$config['pos_x'] < 0) { $watermark_pos_x = $this->width - $width + (int)$config['pos_x']; } else { $watermark_pos_x = (int)$config['pos_x']; } if((int)$config['pos_y_center'] == 1) { $watermark_pos_y = (int)($this->height/2 - $height/2); } elseif((int)$config['pos_y'] < 0) { $watermark_pos_y = $this->height - $height + (int)$config['pos_y']; } else { $watermark_pos_x = (int)$config['pos_y']; } $watermark_width = $width; $watermark_height = $height; $opacity = (int)((float)$config['opacity'] * 127); $this->imagecopymergealpha($this->image, $watermark, $watermark_pos_x, $watermark_pos_y, 0, 0, $watermark_width, $watermark_height,$opacity); imagedestroy($watermark); } public static function imagecopymergealpha(&$destImg, &$srcImg, $destX, $destY, $srcX, $srcY, $srcW, $srcH, $pct = 0) { $destX = (int) $destX; $destY = (int) $destY; $srcX = (int) $srcX; $srcY = (int) $srcY; $srcW = (int) $srcW; $srcH = (int) $srcH; $pct = (int) $pct; $destW = imageSX($destImg); $destH = imageSY($destImg); for ($y = 0; $y < $srcH + $srcY; $y++) { for ($x = 0; $x < $srcW + $srcX; $x++) { if ($x + $destX >= 0 && $x + $destX < $destW && $x + $srcX >= 0 && $x + $srcX < $srcW && $y + $destY >= 0 && $y + $destY < $destH && $y + $srcY >= 0 && $y + $srcY < $srcH) { $destPixel = imageColorsForIndex($destImg, imageColorat($destImg, $x + $destX, $y + $destY)); $srcImgColorat = imageColorat($srcImg, $x + $srcX, $y + $srcY); if ($srcImgColorat >= 0) { $srcPixel = imageColorsForIndex($srcImg, $srcImgColorat); $srcAlpha = 1 - ($srcPixel['alpha'] / 127); $destAlpha = 1 - ($destPixel['alpha'] / 127); $opacity = $srcAlpha * $pct / 100; if ($destAlpha >= $opacity) { $alpha = $destAlpha; } if ($destAlpha < $opacity) { $alpha = $opacity; } if ($alpha > 1) { $alpha = 1; } if ($opacity > 0) { $destRed = round((($destPixel['red'] * $destAlpha * (1 - $opacity)))); $destGreen = round((($destPixel['green'] * $destAlpha * (1 - $opacity)))); $destBlue = round((($destPixel['blue'] * $destAlpha * (1 - $opacity)))); $srcRed = round((($srcPixel['red'] * $opacity))); $srcGreen = round((($srcPixel['green'] * $opacity))); $srcBlue = round((($srcPixel['blue'] * $opacity))); $red = round(($destRed + $srcRed ) / ($destAlpha * (1 - $opacity) + $opacity)); $green = round(($destGreen + $srcGreen) / ($destAlpha * (1 - $opacity) + $opacity)); $blue = round(($destBlue + $srcBlue ) / ($destAlpha * (1 - $opacity) + $opacity)); if ($red > 255) { $red = 255; } if ($green > 255) { $green = 255; } if ($blue > 255) { $blue = 255; } $alpha = round((1 - $alpha) * 127); $color = imageColorAllocateAlpha($destImg, $red, $green, $blue, $alpha); imageSetPixel($destImg, $x + $destX, $y + $destY, $color); } } } } } } public function crop($top_x, $top_y, $bottom_x, $bottom_y) { $image_old = $this->image; $this->image = imagecreatetruecolor($bottom_x - $top_x, $bottom_y - $top_y); imagecopy($this->image, $image_old, 0, 0, $top_x, $top_y, $this->width, $this->height); imagedestroy($image_old); $this->width = $bottom_x - $top_x; $this->height = $bottom_y - $top_y; } public function rotate($degree, $color = 'FFFFFF') { $rgb = $this->html2rgb($color); $this->image = imagerotate($this->image, $degree, imagecolorallocate($this->image, $rgb[0], $rgb[1], $rgb[2])); $this->width = imagesx($this->image); $this->height = imagesy($this->image); } private function filter() { $args = func_get_args(); call_user_func_array('imagefilter', $args); } private function text($text, $x = 0, $y = 0, $size = 5, $color = '000000') { $rgb = $this->html2rgb($color); imagestring($this->image, $size, $x, $y, $text, imagecolorallocate($this->image, $rgb[0], $rgb[1], $rgb[2])); } private function merge($merge, $x = 0, $y = 0, $opacity = 100) { imagecopymerge($this->image, $merge->getImage(), $x, $y, 0, 0, $merge->getWidth(), $merge->getHeight(), $opacity); } private function html2rgb($color) { if ($color[0] == '#') { $color = substr($color, 1); } if (strlen($color) == 6) { list($r, $g, $b) = array($color[0] . $color[1], $color[2] . $color[3], $color[4] . $color[5]); } elseif (strlen($color) == 3) { list($r, $g, $b) = array($color[0] . $color[0], $color[1] . $color[1], $color[2] . $color[2]); } else { return false; } $r = hexdec($r); $g = hexdec($g); $b = hexdec($b); return array($r, $g, $b); } } class ModelToolImage extends Model { public $conf = false; public function resize($filename, $width, $height, $type = false) { if (!is_file(DIR_IMAGE . $filename)) { return; } $types = array( 'category_image' => 'category_image', 'product_thumb' => 'product_thumb', 'product_popup' => 'product_popup', 'product_list' => 'product_list', 'product_additional' => 'product_additional', 'product_related' => 'product_related', 'product_in_compare' => 'product_in_compare', 'product_in_wish_list' => 'product_in_wish_list', 'product_in_cart' => 'product_in_cart', ); // Load options if(!$this->conf) { $this->conf = $this->getOptions(); } if(in_array($type, $types) && $this->conf[$type] == 1 && $this->conf['active'] == 1) { $extension = pathinfo($filename, PATHINFO_EXTENSION); $old_image = $filename; $new_image = 'cache/' . utf8_substr($filename, 0, utf8_strrpos($filename, '.')) . '-' . $width . 'x' . $height . '-' . $type . '.' . $extension; if (!is_file(DIR_IMAGE . $new_image) || (filectime(DIR_IMAGE . $old_image) > filectime(DIR_IMAGE . $new_image))) { $path = ''; $directories = explode('/', dirname(str_replace('../', '', $new_image))); foreach ($directories as $directory) { $path = $path . '/' . $directory; if (!is_dir(DIR_IMAGE . $path)) { @mkdir(DIR_IMAGE . $path, 0777); } } list($width_orig, $height_orig) = getimagesize(DIR_IMAGE . $old_image); $image = new ImageWatermark(DIR_IMAGE . $old_image); $image->resize($width, $height); $image->watermark($this->conf); $image->save(DIR_IMAGE . $new_image); } if ($this->request->server['HTTPS']) { return $this->config->get('config_ssl') . 'image/' . $new_image; } else { return $this->config->get('config_url') . 'image/' . $new_image; } } else { $extension = pathinfo($filename, PATHINFO_EXTENSION); $old_image = $filename; $new_image = 'cache/' . utf8_substr($filename, 0, utf8_strrpos($filename, '.')) . '-' . $width . 'x' . $height . '.' . $extension; if (!is_file(DIR_IMAGE . $new_image) || (filectime(DIR_IMAGE . $old_image) > filectime(DIR_IMAGE . $new_image))) { $path = ''; $directories = explode('/', dirname(str_replace('../', '', $new_image))); foreach ($directories as $directory) { $path = $path . '/' . $directory; if (!is_dir(DIR_IMAGE . $path)) { @mkdir(DIR_IMAGE . $path, 0777); } } list($width_orig, $height_orig) = getimagesize(DIR_IMAGE . $old_image); if ($width_orig != $width || $height_orig != $height) { $image = new Image(DIR_IMAGE . $old_image); $image->resize($width, $height); $image->save(DIR_IMAGE . $new_image); } else { copy(DIR_IMAGE . $old_image, DIR_IMAGE . $new_image); } } if ($this->request->server['HTTPS']) { return $this->config->get('config_ssl') . 'image/' . $new_image; } else { return $this->config->get('config_url') . 'image/' . $new_image; } } } public function getOptions() { $rows = $this->db->query(" SELECT `key`, `value` FROM `" . DB_PREFIX . "watermark_settings` WHERE 1 ")->rows; $options = array(); foreach ($rows as $key => $value) { $options[$value['key']] = $value['value']; } return $options; } }
  7. emelkay

    SimplePars - Універсальний парсер для ІМ

    1. Лучший из модулей что я встеречал за последнее время. 2. Продумано всё до мелочей. 3. Поддержка мгновенная. 4. Функционал, скорость и качество работы 100% Автору: 1. Здоровья! 2. Денег побольше! 3. Удачи 4. Терпения 😄 😉
  8. emelkay

    Автоматична обробка прайс-листів.

    Спасибо автору за такой прекрастный модуль. Терпение и за поддержку Здоровья!, Удачи и побольше бабосов. 😁🤗🤗🤗
    всем привет, модуль своё дело нормально вопросов нету. в демке что угодно будет работать. купил лицензию поставил всё толково. вопросы: Поставил его на очень загруженный магазин где куча js + react бла бла. минификация и кеширует он классно моментально включается выключается классно сделано ! 1. Как быть не со стандартными шрифтами? мои действия: 1. я подгружаю их через preload 2. в css @ import подключаю шрифт. 3. назначаю его например для body. если это делать для обычного html лендинга варриант рабочий. тут же плагин кешурет preload проблему не решат. ковырнуть плагин возможности нету.( ЧТО ДЕЛАТЬ АВТОР, ребята помогите.. продавать модуль за 100$ можно роскошелится и написать сраный мануал или для всех чтобы не дёргали..!!! а то как скидку не прописите так написал. а как помочь так идите лесом! ВОПРОС 2: На страницу товара поставил плагин галереи работает чисто на js. когда включаю оптимальный режим минификации галлерея перестаёт работать. 1. как исключи определённые файлы чтобы модуль их вообще не трогал ? 2. или как отключить например его работу на всех товарах? Спасибо!
Гость
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.