Перейти к содержанию
Официальный форум поддержки Simpla

alexivchenko

Пользователь
  • Публикаций

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

Сообщения, опубликованные alexivchenko

  1. 3 минуты назад, Alex000 сказал:

    RewriteCond %{HTTP_HOST} ^www.tbiliso.by [NC] RewriteRule ^(.*)$ http://tbiliso.by/$1 [R=301,L]

    Вот этот кусок замените на 

    # Redirect to HTTPS:
    RewriteCond %{HTTPS} =off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

    # Redirect from www to without www:
    RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
    RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

  2. 5 часов назад, yulio сказал:

    Добрый день! Помогите плз, хоть советом хоть платной помощью.

    После смены хостинга перестали создаваться заказы на сайте интернет-магазина.

    на 2х интернет магазинах.

    Что может быть? хостинг смотрит и ничего не видит...

     

    В 12.11.2021 в 18:00, alexivchenko сказал:

    В файле config/config.php

    заменить 

    
    ;Режим SQL
    db_sql_mode =;

    на

    
    ;Режим SQL
    db_sql_mode = "NO_ZERO_DATE,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";

     

     

  3. 1 час назад, phukortsin сказал:

    Оригинально - смотреть несуществующий файл...

    Ошибки, видимо, из-за перехода на новую версию PHP.

    В simpla/ProductAdmin.php надо сделать так:

    
    class ProductAdmin extends Simpla
    {
    	public function fetch()
    	{
    		$product = new stdclass();

    И во многих соседних файлах надо провести подобные изменения, так как весьма вероятно, что другие сущности аналогично могли стать не редактируемыми.

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

    Прочие ошибки носят более частный характер, но причины примерно те же...

    Ой, ну поспешил и вместо simpla/ProductAdmin.php написал api/ProductAdmin.php прям надо было акцентировать. Одновременно писал инструкцию к модулю и ошибся. 

  4. [Sun Nov 19 17:47:51.458115 2023] [php7:notice] [pid 20733] [client 188.43.194.125:56570] PHP Notice:  Undefined variable: groop_products in /var/www/ikar/data/www/astra-omsk.ru/simpla/ProductAdmin.php on line 308, referer: https://astra-omsk.ru/simpla/index.php?module=ProductAdmin&return=%2Fsimpla%2Findex.php%3Fmodule%3DProductsAdmin
    
    [Sun Nov 19 17:47:51.465958 2023] [php7:notice] [pid 20733] [client 188.43.194.125:56570] PHP Notice:  Undefined variable: groop_products in /var/www/ikar/data/www/astra-omsk.ru/simpla/ProductAdmin.php on line 453, referer: https://astra-omsk.ru/simpla/index.php?module=ProductAdmin&return=%2Fsimpla%2Findex.php%3Fmodule%3DProductsAdmin

    Надо смотреть api/ProductAdmin.php 308, 453 строку что за переменная groop_products

  5. 7 часов назад, xikarx сказал:

    И снова всем здравствуйте. Давно не обновлял сайт, тутвзялся добавить товар и выяснил, что товары оказывается добавляться не желают или добаляются с ошибкой. 

    Снова прошу помощи. Основную ошибку, не дававшую создатьновый товар вроде пофиксил (было 

    
    
    
    PHP Warning:  Column 'action' cannot be null [INSERT INTO s_products SET id='0', ........  new=NULL, action=NULL, ned='0', bez='0'] in /var/www/ikar/data/www/astra-omsk.ru/api/Database.php on line 100, referer: https://astra-omsk.ru/simpla/index.php?module=ProductAdmin&return=%2Fsimpla%2Findex.php%3Fmodule%3DProductsAdmin

     Присвоил полю action значение null по умолчанию. Кстати, подскажите, второй вариант как сделать - где в коде сайта разрешить null значение в данном поле?

    И второе - имею кучу ошибок (в логах), влияние которых, вроде на работу сайта пока не увидел, но которые раздражают:

    
    
    
    https://astra-omsk.ru/simpla/index.php?module=ProductAdmin&return=%2Fsimpla%2Findex.php%3Fmodule%3DProductsAdmin
    [Sun Nov 19 17:47:51.411838 2023] [php7:warn] [pid 20733] [client 188.43.194.125:56570] PHP Warning:  Creating default object from empty value in /var/www/ikar/data/www/astra-omsk.ru/simpla/ProductAdmin.php on line 72, referer: https://astra-omsk.ru/simpla/index.php?module=ProductAdmin&return=%2Fsimpla%2Findex.php%3Fmodule%3DProductsAdmin

     собственно указанная сторока (с 67 по 76)

    
    
    
    // Свойства товара
       	    	$options = $this->request->post('options');
    			if(is_array($options))
    			{
    				foreach($options as $f_id=>$val)
    				{
    					$po[$f_id]->feature_id = $f_id;
    					$po[$f_id]->value = $val;
    				}
    				$options = $po;
    			}

     

     

    и еще не понятные мне ошибки:

     

    
    
    
    [Sun Nov 19 17:47:51.458115 2023] [php7:notice] [pid 20733] [client 188.43.194.125:56570] PHP Notice:  Undefined variable: groop_products in /var/www/ikar/data/www/astra-omsk.ru/simpla/ProductAdmin.php on line 308, referer: https://astra-omsk.ru/simpla/index.php?module=ProductAdmin&return=%2Fsimpla%2Findex.php%3Fmodule%3DProductsAdmin
    
    [Sun Nov 19 17:47:51.465958 2023] [php7:notice] [pid 20733] [client 188.43.194.125:56570] PHP Notice:  Undefined variable: groop_products in /var/www/ikar/data/www/astra-omsk.ru/simpla/ProductAdmin.php on line 453, referer: https://astra-omsk.ru/simpla/index.php?module=ProductAdmin&return=%2Fsimpla%2Findex.php%3Fmodule%3DProductsAdmin
    
    [Sun Nov 19 17:47:56.216594 2023] [php7:warn] [pid 20737] [client 188.43.194.125:57132] PHP Warning:  A non-numeric value encountered in /var/www/ikar/data/www/astra-omsk.ru/compiled/trizzy/f926a1426a3c03df5714da5ede71d26e0e28a930_0.file.product.tpl.php on line 212, referer: https://astra-omsk.ru/simpla/index.php?module=ProductAdmin&return=%2Fsimpla%2Findex.php%3Fmodule%3DProductsAdmin
    
    [Sun Nov 19 17:47:56.217139 2023] [php7:warn] [pid 20737] [client 188.43.194.125:57132] PHP Warning:  Parameter 2 to View::get_object_articles_plugin() expected to be a reference, value given in /var/www/ikar/data/www/astra-omsk.ru/compiled/trizzy/f926a1426a3c03df5714da5ede71d26e0e28a930_0.file.product.tpl.php on line 561, referer: https://astra-omsk.ru/simpla/index.php?module=ProductAdmin&return=%2Fsimpla%2Findex.php%3Fmodule%3DProductsAdmin

    Кто чем пособит буду очень признателен. 

    Могу помочь, пишите в ЛС

  6. 4 часа назад, Chudo сказал:

    Благодарю тебя ? несколько дней копался в поисках проблемы, всё перепробовал - и вот только твой вариант помог. 

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

    Делюсь инструкцией:

    Strict mode в MySQL включен по умолчанию. Проверить можно следующей командой:

      

    
    mysql> SHOW VARIABLES LIKE 'sql_mode';

     

    «STRICT_TRANS_TABLES» — это и есть строгий режим.

    Отключить его можно в конфигурационном файле my.cnf ( Для Ubuntu — /etc/mysql/my.cnf):

    
    cd /etc/mysql/my.cnf

     

    Добавляем строчку:

     

    
    sql_mode=IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

     

    Перезагрузить демона mysql :

     

    
    systemctl restart mysql

     

    Эта возможность потребуется вам для конфигурирования VDS или VPS машины под ваш проект

    Еще проще 

    В 12.11.2021 в 18:00, alexivchenko сказал:

    В файле config/config.php

    заменить 

    
    ;Режим SQL
    db_sql_mode =;

    на

    
    ;Режим SQL
    db_sql_mode = "NO_ZERO_DATE,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";

     

     

  7. 1 час назад, Kami сказал:

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

    Как вы выходили из ситуации? пилить фид?

    Сделайте выгрузку товаров экспорт в csv, так же долго формирует файл?

  8. В 30.08.2023 в 07:08, Alex000 сказал:

    Всем привет, подскажите пожалуйста, а как сделать, чтобы от определённого количества начинала применяться оптовая цена? Например если покупатель указал количество 9 то цена будет 100, если 10 и больше то 80.

    Заранее благодарю.

     

    В 03.10.2013 в 09:54, Чудилла сказал:

    Добавьте в файл Cart.php

    После 

    
    foreach($items as $variant_id=>$item)
    				{	
    					$purchase = null;
    					if(!empty($products[$item->variant->product_id]))
    					{
    						$purchase = new stdClass();
    						$purchase->product = $products[$item->variant->product_id];						
    						$purchase->variant = $item->variant;
    						$purchase->amount = $item->amount;
    
    						$cart->purchases[] = $purchase;
    						$cart->total_price += $item->variant->price*$item->amount;
    						$cart->total_products += $item->amount;
    					}
    				}

    Функцию

    
    f($cart->total_products >= 10){ /// Скидка если товаров больше 10
    					$cart->product_discont = 10; /// 10%
    				}
    				if($cart->total_products >= 20){ /// Скидка если товаров больше 10
    					$cart->product_discont = 15; /// 15%
    				}
    				if($cart->total_products >= 50){ /// Скидка если товаров больше 10
    					$cart->product_discont = 20; /// 20%
    				}
    				if($cart->product_discont){
    					$cart->non_discount_total_price = $cart->total_price;
    					$cart->total_price = $cart->total_price-($cart->total_price*($cart->product_discont/100)); //Общая сумма со скидкой
    					$cart->economy = $cart->total_price*($cart->product_discont/100);
    				}

    Получаем 

     

    [total_price] => 246330 // Цена со скидкой
    [total_products] => 20 //Кол-во товаров
    [coupon] =>
    [discount] => 0
    [coupon_discount] => 0
    [product_discount] => 15  // Скидка
    [non_discount_total_price] => 289800  // Цена без скидки
    [economy] => 36949.5 // Экономия

     

  9. 14 минут назад, founder сказал:

    Не пойму откуда берется category_brand_id, в коде его вообще нет

    в CategoryAdmin.php добавлено:

    
    
    		$category_brands = $this->categories->get_category_brands($category->id);
    		$this->design->assign('category_brands', $category_brands);
    		foreach($category_brands as $brand) {
    			$brand_ids[$brand->brand_id] = $brand->brand_id;
    		}
    		$all_brands = $this->brands->get_brands();
    		foreach($all_brands as $brand) {
    			if(!isset($brand_ids[$brand->id])) {
    				$brands[] = $brand;
    			}
    		}
    		$this->design->assign('brands', $brands);

     

    напишите в личные сообщения, разберемся. гадать на гуще нет желания.

  10. 2 часа назад, founder сказал:

    Добрый день.

    Установлена мультиязычная Simpla, хочу поставить описание брендов в категории

    в api/Categories.php

    
    	// Страницы описания брендов 
    	public function get_category_brand($category_id, $brand_id)
    	{
    		$query = "SELECT * 
    				  FROM __category_brands 
    				  WHERE category_id = $category_id AND brand_id = $brand_id";
    		$this->db->query($query);
    		return $this->db->result();		
    	}
    	
    	public function get_category_brands($id)
    	{
    		$query = "SELECT cb.*, 
    						 b.name 
    				  FROM __category_brands cb 
    				  INNER JOIN __brands b ON (cb.brand_id = b.id) 
    				  WHERE cb.category_id = $id";
    		$this->db->query($query);
    		return $this->db->results();
    	}

    Меняю на:

    
    	// Страницы описания брендов в категории
    	public function get_category_brand($category_id, $brand_id)
    	{
    		
            $lang_sql = $this->languages->get_query(array('object'=>'category_brand'));
    
    		$query = "SELECT  cb.id, cb.brand_id, cb.category_id, ".$lang_sql->fields." 
    				  FROM __category_brands cb ".$lang_sql->join."
    				  WHERE category_id = $category_id AND brand_id = $brand_id";
    		$this->db->query($query);
    		return $this->db->result();
    	}
    	public function get_category_brands($id)
    	{
    		
            $lang_sql = $this->languages->get_query(array('object'=>'category_brand'));
    
    		$query = "SELECT  cb.id, cb.brand_id, cb.category_id, ".$lang_sql->fields.", 
    						b.name 
    				  FROM __category_brands cb ".$lang_sql->join."
    				  INNER JOIN __brands b ON (cb.brand_id = b.id) 
    				  WHERE cb.category_id = $id";
    		$this->db->query($query);
    		return $this->db->results();
    	}

    В админке отображает ошибку что не найдено в БД c.id

    Подскажите, пожалуйста, где ошибка?

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

    	// Страницы описания брендов в категории
    	public function get_category_brand($category_id, $brand_id) {
    		
            $lang_sql = $this->languages->get_query(array('object'=>'category_brand'));
    
    		$query = $this->db->placehold("SELECT
    				cb.id, cb.brand_id, cb.category_id, $lang_sql->fields 
    				FROM __category_brands cb
    				$lang_sql->join
    				WHERE 
    					category_id = $category_id 
    				AND brand_id = $brand_id
    		");
    		$this->db->query($query);
    		return $this->db->result();
    	}
    
    	public function get_category_brands($id) {
    		
            $lang_sql = $this->languages->get_query(array('object'=>'category_brand'));
    
    		$query = $this->db->placehold("SELECT
    				cb.id, cb.brand_id, cb.category_id, b.name, $lang_sql->fields
    				  FROM __category_brands cb
    				  $lang_sql->join
    				  INNER JOIN __brands b ON (cb.brand_id = b.id) 
    				  WHERE cb.category_id = $id
    		");
    		$this->db->query($query);
    		return $this->db->results();
    	}

     

  11. 1 час назад, Alex000 сказал:

    Спасибо большое. А как добавить вам количество решений, вы уже не первый раз мне помогаете, а количество решений у вас 1 ))

    спасибо, думаю что указание решений отключено на этом форуме или в ветке.

  12. в main.tpl или index.tpl
     

    {* Список брендов *}
    {get_brands var=all_brands}
    {if $all_brands}
    
    {* Заголовок блока *}
    <h1>Все бренды</h1>
    
    {foreach $all_brands as $b}
    {* Если у бренда есть изображение *}
    {if $b->image}
    {* Изображение бренда *}
    <a href="brands/{$b->url}" data-brand="{$b->id}">
    	<img src="{$config->brands_images_dir}{$b->image}" alt="{$b->name|escape}" title="{$b->name|escape}">
    </a>
    {else}
    {* Название бренда *}
    <a href="brands/{$b->url}" data-brand="{$b->id}">{$b->name}</a>
    {/if}
    {/foreach}
    
    {/if}

     

  13. 4 часа назад, phukortsin сказал:

    Можно сделать, если СБИС предоставляет средства для такого.

    Для начала попробуйте это выяснить. Я не нашел упоминаний о том, что СБИС хранит товары и заказы. По описанию, это в основном система для ДОКУМЕНТООБОРОТА.

    На стр https://onlainkassy.ru/edo/sbis.html  описаны основные возможности СБИС так:  

    Функциональные возможности СБИС
    На замену бумажным носителям пришел электронный документооборот. Через СБИС можно работать:

    Штатным сотрудникам организации.
    Организовать внутренний обмен письмами, заявлениями. Проводить совещания, видео конференции. Загружать со сканера, жесткого диска, из 1С или SAP акты, ТОРГ-12, счет-фактуры и выдавать их не распечатывая на принтере.
    Руководящим работникам.
    Начальникам отделов, директорам, менеджерам доступна функция планирования: календарь задач. Участвовать в торгах, организованных на основании закона № 325-ФЗ от 21.11.2011 года, имея специальный цифровой ключ подписи. Финансистам и главным бухгалтерам: передавать в соответствующие структуры отчетность, отвечать на требования ИФНС, направлять документы для камеральной проверки.

     

    Видимо имелось ввиду автоматизация интернет-магазина https://sbis.ru/retail/online_store

  14. 3 часа назад, Dmitry86 сказал:

    Ребят, помогите найти ошибку. На сайте изображения ресайзятся через ImageMagick. Ссылки на изображения без токенов.

    Если удалить изображение из товара, и обратиться к нему по той ссылке, по которой оно раньше было доступно, то сервер сваливается с ошибкой 500, а по идее должен либо 404 либо 403 отдавать (?)

    В логах у меня следующее:

    
    [cgi:error] [pid 16335] [client 188.225.72.35:34894] AH01215:   thrown in /home/username/web/sitename.ru/public_html/api/Image.php on line 338: /home/username/web/sitename.ru/cgi-bin/php, referer: https://webmaster.yandex.ru/...

     

    Строка 338 это:

    
    if(!$thumb->readImage($src_file))

    в функции:

    
    private function image_constrain_imagick($src_file, $dst_file, $max_w, $max_h, $watermark=null, $watermark_offet_x=0, $watermark_offet_y=0, $watermark_opacity=1, $sharpen=0.2, $strict=null)
    	{
    		$thumb = new Imagick();
    		
    		// Читаем изображение
    		if(!$thumb->readImage($src_file))
    			return false;
    		
    		// Размеры исходного изображения
    		$src_w = $thumb->getImageWidth();
    		$src_h = $thumb->getImageHeight();
    		
    		// Нужно ли обрезать?
    		if (!$watermark && !$strict && ($src_w <= $max_w) && ($src_h <= $max_h))
    	    { 
    			// Нет - просто скопируем файл
    			if (!copy($src_file, $dst_file))
    				return false;
    			return true;
    	    }	
    			
    		if ($strict) {
    			$thumb->thumbnailImage($max_w, $max_h, true, true);
    		} else {
    			// Размеры превью при пропорциональном уменьшении
    			list($dst_w, $dst_h) = $this->calc_contrain_size($src_w, $src_h, $max_w, $max_h);
    		
    			// Уменьшаем
    			$thumb->thumbnailImage($dst_w, $dst_h);
    		}
    		
    		// Устанавливаем водяной знак
    		if($watermark && is_readable($watermark))
    		{
    			$overlay = new Imagick($watermark);
    			
    			$overlay->evaluateImage(Imagick::EVALUATE_MULTIPLY, $watermark_opacity, Imagick::CHANNEL_ALPHA);
    			
    			// Get the size of overlay 
    			$owidth = $overlay->getImageWidth(); 
    			$oheight = $overlay->getImageHeight();
    			
    			if ($strict) {
    				$watermark_x = min(($max_w-$owidth)*$watermark_offet_x/100, $max_w); 
    				$watermark_y = min(($max_h-$oheight)*$watermark_offet_y/100, $max_h); 
    			} else {
    				$watermark_x = min(($dst_w-$owidth)*$watermark_offet_x/100, $dst_w); 
    				$watermark_y = min(($dst_h-$oheight)*$watermark_offet_y/100, $dst_h); 
    			}
    			
    		}
    		
    		// Убираем комменты и т.п. из картинки
    		$thumb->stripImage();
    
    		// Записываем картинку
    		if(!$thumb->writeImages($dst_file, true))
    			return false;
    		
    		// Уборка
    		$thumb->destroy();
    		if(isset($overlay) && is_object($overlay))
    			$overlay->destroy();
    		
    		return true;
    	}

    Куда копать? Спасибо.

    Киньте сюда ваши фалы api/Image.php, api/Design.php и resize/resize.php

  15. 21 час назад, Rimmel сказал:

    Всем привет! После перехода на протокол HTTPS перестал работать выбор по объему внутри одного товара (т.е. выбираешь, а цена не меняется) и не меняются фото товара, т.е. при клике на фото оно не меняется и не увеличивается, так же перестал работать слайдер с баннерами.

    Подскажите, пожалуйста, куда смотреть?

    Сам редирект работает корректно, ошибок нет, Яндекс главное зеркало выбрал.

    смотрите в index.tpl вашего шаблона.

    чтобы ссылки на js файлы имели вид design/{$settings->theme|escape}/js/? а не http://site.ru/design/шаблон/js/

  16. 41 минуту назад, Dmitry86 сказал:

    У меня были кое-какие доработки, сейчас в index.php кусок кода с 404 выглядит так:

    
    // Если все хорошо
    if(($res = $view->fetch()) !== false)
    {
    	// Выводим результат
    	header("Content-type: text/html; charset=UTF-8");	
        
        if($view->last_modified) {
            $LastModified_unix = strtotime($view->last_modified); // время последнего изменения страницы
    		$LastModified = gmdate("D, d M Y H:i:s \G\M\T", $LastModified_unix);
    		$IfModifiedSince = false;
    		if (isset($_ENV['HTTP_IF_MODIFIED_SINCE']))
    			$IfModifiedSince = strtotime(substr($_ENV['HTTP_IF_MODIFIED_SINCE'], 5));  
    		if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']))
    			$IfModifiedSince = strtotime(substr($_SERVER['HTTP_IF_MODIFIED_SINCE'], 5));
    		if ($IfModifiedSince && $IfModifiedSince >= $LastModified_unix) {
    			header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified');
    			exit;
    		}
    		header('Last-Modified: '. $LastModified);
        }
        
    	print $res;
    
    	// Сохраняем последнюю просмотренную страницу в переменной $_SESSION['last_visited_page']
    	if(empty($_SESSION['last_visited_page']) || empty($_SESSION['current_page']) || $_SERVER['REQUEST_URI'] !== $_SESSION['current_page'])
    	{
    		if(!empty($_SESSION['current_page']) && !empty($_SESSION['last_visited_page']) && $_SESSION['last_visited_page'] !== $_SESSION['current_page'])
    			$_SESSION['last_visited_page'] = $_SESSION['current_page'];
    		$_SESSION['current_page'] = $_SERVER['REQUEST_URI'];
    	}		
    }
    else 
    { 
    	// Иначе страница об ошибке
    	header("http/1.0 404 not found");
    	
    	// Подменим переменную GET, чтобы вывести страницу 404
    	$_GET['page_url'] = '404';
    	$_GET['module'] = 'PageView';
    	print $view->fetch();   
    }

    Видимо, косяк где-то здесь?

    На пальцах не понять, может и проблема в Last-Modified, а может и в еще в другом. 
    я могу вам скинуть кусок кода, который работает через composer, поймете в чем ошибка?

    Надо смотреть на месте  

  17. 7 часов назад, Dmitry86 сказал:

    Тогда такой вопрос: поиск ведь понимает, что тире в запросе  AB012 1 нет, но выдает конкретный товар с тире. обратную ситуацию можно сделать? Когда в запросе есть тире, а в названии товара нет тире? Но поиск выдаст нужный резльтат.

    При запросе АВ012, поиск нашел первый схожий товар АВ012-1 https://github.com/pikusov/Simpla/blob/master/view/ProductsView.php#L143

    Поиск который хотите вы, можно реализовать через API ЯндексПоиск - поиск для сайта или же с помощью Sphinx.

     

  18. 6 часов назад, phukortsin сказал:

    Много ли у Вас клиентов?

    У меня в последний год-два новенькие заказчик почти не появляются, в отличие от того, что было ранее. Я так понимаю, Simpla продолжает хиреть. Да и Okay, по моим представлениям, позиции понемногу теряет...

    Постоянных клиентов 4, новые иногда пишут. Больше просят перенести магазин с Simpla на OpenCart. С Okay пишут многие, в частности кто еще сидит на версии до тройки. 

×
×
  • Создать...