-
Публікації
113 -
З нами
-
Відвідування
Тип публікації
Профілі
Форум
Маркетплейс
Статті
FAQ
Наші новини
Магазин
Блоги
module__dplus_manager
Повідомлення, опубліковані користувачем sssergey
-
-
Модуль отличный! На ocStore 2.1.0.2.1 всё прекрасно стало.
Вот я попробовал его в мультимагазине, причем каждый "филиал" у меня имеет свой шаблон........ и тут фигу....
Когда все "филиалы" имеют 1 шаблон, всё работает, ну это и понятно почему.Вопрос: нельзя ли как-то допилить модуль под мультимагаз, использующий несколько шаблонов, то есть, если вот здесь:
можно бы было выбрать Тему, то кажись, полноценно заработало бы в мультимагазе, а? -
Ага, нешел!
./template/module/featured.tpl
-
On 6/24/2018 at 7:48 PM, markimax said:
Рекомендуемые выводиться штатным контроллером opencart через шаблон темы
Т е модуль не принимает никакого участияНу и где же теперь искать его - шаблон вывода Рекомендуемых к Записи товаров?
-
Ну что, благодаря таким хорошим людям как SAPER1985 и Vetroff задача была решена!
Всё работает так, как и хотелось, мало того, изображения Записей модуля SEO CMS TOP2 тоже теперь кропятся сохраняя свои оригинальные пропорции.
-
Установите что-нибудь типа Supermegamenu (модуль) и все ваши проблемы решатся.
-
Я предполагаю что после правки image.php и вашем модуле SEO CMS TOP2 thumbnails-ы будут такими же (с оригинальным соотношение сторон заливаемых картинок), или ваш модуль не через это режет? В вашем модуле мне тоже надо чтобы так работало. О-о-очень надо!
-
-
Спасибо, но этот модуль не решит моего вопроса, он для другого. Картинки я обрабатываю до заливки на сайт. Речь именно о сохранении оригинальных пропорций.
-
1 minute ago, Vetroff said:
Вопрос не сложный, но с телефона писать не удобно ))
Если никто не подскажет, напишите через часов 4-5 в личку, доберусь до компа...
Ок, спасибо, напишу.
-
4 minutes ago, Vetroff said:
можно не формировать подложку, но чтобы изображения формировались с пропорциями, нужно эти пропорции знать, т.е. считать соотношение сторон исходной картинки и создавать новую с учетом этого соотношения.
Да, именно это и надо сделать. Сам я не смогу.
-
Здравствуйте. У меня ocStore 2.1.0.2.1
Хочу чтобы загружаемые на сайт изображения сохраняли свои оригинальные пропорции, но при этом фукнционал resize для изображений сохранялся.
Например:
- Загружаю на сайт 2 товара, изображение первого 2000x1000px (ландшафтное), второго 1000x1000px (квадратное).
- В настройках магазина в Изображениях для Изображение с списке товаров ставлю, допустим 600х400
Хочу получить в Категории товаров изображение первого товара 600х300, а второго 400х400,
то есть нужно сделать, чтобы размеры изображений, задаваемых в админке означали НЕ БОЛЕЕ 600x400 итд, а не строго 600х400 как в OC по дефолту.
В файле system/library/image.php в 92-й строке:
$scale = min($scale_w, $scale_h);
поменял min на max, но, понимаю, что код ниже формирует белую подложку, на которую потом позиционирует изображение + водяные знаки, что делать дальше не знаю.
На водяные знаки можно забить, мне они ненужны, белую подложку можно вообще не формировать (кажись это и надо сделать).
Готов заплатить за ваши знания.
Вот сам этот файлик image.php:
Spoiler<?php class Image { 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($watermark, $position = 'bottomright') { switch($position) { case 'topleft': $watermark_pos_x = 0; $watermark_pos_y = 0; break; case 'topright': $watermark_pos_x = $this->width - $watermark->getWidth(); $watermark_pos_y = 0; break; case 'bottomleft': $watermark_pos_x = 0; $watermark_pos_y = $this->height - $watermark->getHeight(); break; case 'bottomright': $watermark_pos_x = $this->width - $watermark->getWidth(); $watermark_pos_y = $this->height - $watermark->getHeight(); break; } imagecopy($this->image, $watermark->getImage(), $watermark_pos_x, $watermark_pos_y, 0, 0, $watermark->getWidth(), $watermark->getHeight()); imagedestroy($watermark->getImage()); } 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); } }
-
Здравствуйте!
Друзья подскажите, а чем бы мне сделать Фильтрациию товаров по ценам Связанных опций,
да еще, чтобы при заходе на страницу отфильтрованного товара у него сразу были включены Опции, цена которых в "связке" ближе к нижнему значению диапазона фильтра.......Имеется модуль Mega Filter Pro, может его прикрутиnь как-то или другой-какой?
-
О, Спасибо! Есть такое!
-
On 6/24/2018 at 9:23 AM, markimax said:
Неоднократно подымалась здесь эта тема
phpMyAdmin - м
$tables = array (
'blog',
'blog_description',
'blog_to_layout',
'blog_to_store',
'blog_access',
'comment',
'record',
'record_description',
'record_image',
'record_related',
'record_attribute',
'record_tag',
'record_to_blog',
'record_to_download',
'record_to_layout',
'record_to_store',
'record_product_related',
'record_access',
'fields',
'fields_description',
'url_alias_blog',
'rate_review',
'rate_comment',
'review_fields',
'agoo_signer'
);Эх, что-то вы не договариваете. Не все таблицы. У меня не передались Схемы и Виджеты....
В стандартной таблице настроек setting по ключу blog ничего нет....
-
-
Ага, спасибо! А что такое Рекомендованная Тема? Где почитать?
При включении этой настройки в Записи выводятся Рекомендованные Товары, но только уже не через /module/related/products.tpl а через что-то другое.
-
А как то же самое проделать с тем, когда отсутствует Краткое описание, то в Рекомендуемых а Товару записях не появлялось бы обрезанное Полное описание?
В каком контроллере и что поправить? Подскажите плиз....
-
Переключиться на ckeditor в Настройках магазина на вкладке Сервер.
-
On 6/20/2018 at 1:37 PM, klaos27 said:
record.php (catalog/controller/record)
Попробуйте это
$rdescription = utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $how);
заменить на это
$rdescription = utf8_substr(html_entity_decode($result['sdescription'], ENT_QUOTES, 'UTF-8'), 0, $how);
Да, отлично, подошло, Спасибо!
Надо еще в конце$how
убирать, чтобы подрезание отключить!
Должно получиться вот так:
$rdescription = utf8_substr(html_entity_decode($result['sdescription'], ENT_QUOTES, 'UTF-8'), 0);
Работает.
-
Здравствуйте, а как всё же быть с экспортом-импортом Задач, Категорий, Виджетов, Схем?
Если только через таблицы БД, то где можно узнать какие таблицы ковырять?
-
А как бы сделать, чтобы в Похожих записях выводилось Краткое описание? По-умолчанию там выводится Полное описание, да еще и чисто тесктом...., а мне надо стили и скрипты туда писать...
-
Ок, спасибо, ща, 20 мин.
-
Скажу сразу, вот этот модуль - Обновление цены при выборе опции, без AJAX прекрасно делает то, что мне надо (пост выше), но он не учитывает кол-во дочерних товаров + когда я включаю модуль LIVEOPENCART: Живая цена (динамическое обновление цены) то он вообще перестает работать, А модуль "Живая цена..." мне необходим для динамического отображения цен Связанных Опций.
Можно это как-то решить?
Можно за деньги + к тому же я как-то просил дать отдельный класс дочерним товарам, чтобы делать им display:noneДавайте сделаем, а?
-
Здравтсвуйте!
Подскажите плиз, как подружить ваш модуль с модулем Комплекты серий товаров - наборы товара?
Мне нужно чтобы динамически обновлялась цена Родительского товара при выборе Опций и кол-ва дочерних товаров.
[Поддержка] Персонализованные шаблоны
в Другие дополнения
Опубліковано: · Змінено користувачем sssergey
SEO CMS TOP2 - модуль. Выводите виджетом.