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

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


Рекомендуемые сообщения

Доброго всем дня. Так сложились обстоятельства что мне временно приходится править баги и модернизировать проект который работает на движке Simpla CMS . А теперь по порядку:

  1. на сайте был поиск я модернизировал а то он выводил не очень корректные результаты например ты вводишь в строку поиска mi 9 -> результат -> redmi note 9/64 (что-то такое), то есть ищет по вхождениям разделяя сначала фразу в цикле, я его чуть переделал и сделал сначала отображение по строгому вхождению   а затем если это строгое пустое то разделю по словам. После этого результат выводит те товары которые нужны, НО игнорируется условие видимости товаров почему то, т.е. даже если товар в админке отключен то его в результате поиска видно, не смотря на :
     $visible_filter = $this->db->placehold('AND p.visible=?', intval($filter['visible']));
    

    Я уже этот запрос менял и делал вида : 

     $visible_filter = $this->db->placehold('AND p.visible=1');
    

    но это не меняло ситуация. После я решил развернуть этот проект у себя на локалке дабы не боясь что что то сломаю на проде учитывая что там сейчас даже Git не стоит. Отсюда вытекает 2 проблема.

  2. Я гуглил способы развертывания проекта ссылке на этом форуме. После чего я понял что моя версия PHP не подходит я даунгрейд сделал и теперь у меня как и на сервере стоит 5.6. Фронт еще кое как работает, к некоторых местах выбивает ошибку вида :
    Notice: Trying to get property of non-object in /var/www/html/api/Products.php on line 226

    Warning: Invalid argument supplied for foreach() in /var/www/html/simpla/ProductsAdmin.php on line 230
    А так же эта же самая ошибка вылезает в админке когда пытаюсь просмотреть список продуктов то все что я вижу это . И если от ошибки в 226 я могу ее закоментировать на время и она ни на что не повлияет так как там доп условие поиска, то ошибка на 230 строке остается, и если я пытаюсь в файле /api/Products.php в функции get_products() сделать :

var_dump($this->db->query($query));

То результатом будет : bool(false);

Итого: Самая главная сейчас для меня проблема понять почему на локалке у меня такие проблемы с проектом при том что код и база одинаковая что на проде что на локалке. Может у меня что то недоустановлено я уже не знаю я запутался. Если кто встречался или имеет представление как это починить буду рад услышать.

 

PS: давно что то на форумы не писал, прошу прощения может что то не так, но я честно старался что то нагуглить и не нашел рабочего для меня решения. Пока этот пост будет висеть я тоже не оставлю попыток искать способы решения и может где-то еще рыть форумы. 

  • Чуть не забыл : объясните кто нибудь почему таблицы в базе все с префиксом s_ а в запросе в файле  /api/Products.php в функции get_products()  там пишут с двумя нижними подчеркиваниями ?
    FROM __products p
    

     

 

Изменено пользователем vlad004
Ссылка на сообщение
Поделиться на другие сайты

так первый прогресс который я объяснить не могу, НО : товары в админке я получил без ошибок с помощью того что в функции  get_products(), я убрал строку с: 

$group_by = "GROUP BY p.id";
   $query = "SELECT  
					p.id,
					p.url,
					p.sku,
					p.brand_id,
					p.name,
					c.name as `category_name`,
					p.stock,
					p.price,
					p.old_price,
					p.annotation,
					p.body,
					p.shops,
					p.position,
					p.created as created,
					p.visible, 
					p.featured, 
					p.meta_title, 
					p.meta_keywords, 
					p.meta_description, 
					b.name as brand,
					b.url as brand_url
				FROM __products p
				$category_id_filter
				$memory_filter
				$screen_filter
				$os_filter
				$colors_filter
				$gsm_filter
				$cards_filter
				$VoLTE_filter
				LEFT JOIN __brands b ON p.brand_id = b.id
				WHERE 
					1
					$price_filter
					$product_id_filter
					$brand_id_filter
					$features_filter
					$keyword_filter
					$is_featured_filter
					$discounted_filter
					$in_stock_filter
					$visible_filter
//				$group_by ------ Вот эту вот строку я удалил
				ORDER BY $order
					$sql_limit";

Вот узнать бы причину этой проблемы

Изменено пользователем vlad004
Ссылка на сообщение
Поделиться на другие сайты

Чуть не забыл : объясните кто нибудь почему таблицы в базе все с префиксом s_ а в запросе в файле  /api/Products.php в функции get_products()  там пишут с двумя нижними подчеркиваниями ?

 

 

файл api/Database.php

 

	/**
	 * Плейсхолдер для запросов. Пример работы: $query = $db->placehold('SELECT name FROM products WHERE id=?', $id);
	 */
	public function placehold()
	{
		$args = func_get_args();	
		$tmpl = array_shift($args);
		// Заменяем все __ на префикс, но только необрамленные кавычками
		$tmpl = preg_replace('/([^"\'0-9a-z_])__([a-z_]+[^"\'])/ui', "\$1".$this->config->db_prefix."\$2", $tmpl);
		if(!empty($args))
		{
			$result = $this->sql_placeholder_ex($tmpl, $args, $error); 
			if ($result === false)
			{ 
				$error = "Placeholder substitution error. Diagnostics: \"$error\""; 
				trigger_error($error, E_USER_WARNING); 
				return false; 
			} 
			return $result;
		}
		else
			return $tmpl;
	}
	
Ссылка на сообщение
Поделиться на другие сайты

 

файл api/Database.php

 

	/**
	 * Плейсхолдер для запросов. Пример работы: $query = $db->placehold('SELECT name FROM products WHERE id=?', $id);
	 */
	public function placehold()
	{
		$args = func_get_args();	
		$tmpl = array_shift($args);
		// Заменяем все __ на префикс, но только необрамленные кавычками
		$tmpl = preg_replace('/([^"\'0-9a-z_])__([a-z_]+[^"\'])/ui', "\$1".$this->config->db_prefix."\$2", $tmpl);
		if(!empty($args))
		{
			$result = $this->sql_placeholder_ex($tmpl, $args, $error); 
			if ($result === false)
			{ 
				$error = "Placeholder substitution error. Diagnostics: \"$error\""; 
				trigger_error($error, E_USER_WARNING); 
				return false; 
			} 
			return $result;
		}
		else
			return $tmpl;
	}
	

ага ну тут теперь попонятнее немного, спасибо)

Ссылка на сообщение
Поделиться на другие сайты

так первый прогресс который я объяснить не могу, НО : товары в админке я получил без ошибок с помощью того что в функции  get_products(), я убрал строку с: 

$group_by = "GROUP BY p.id";
   $query = "SELECT  
					p.id,
					p.url,
					p.sku,
					p.brand_id,
					p.name,
					c.name as `category_name`,
					p.stock,
					p.price,
					p.old_price,
					p.annotation,
					p.body,
					p.shops,
					p.position,
					p.created as created,
					p.visible, 
					p.featured, 
					p.meta_title, 
					p.meta_keywords, 
					p.meta_description, 
					b.name as brand,
					b.url as brand_url
				FROM __products p
				$category_id_filter
				$memory_filter
				$screen_filter
				$os_filter
				$colors_filter
				$gsm_filter
				$cards_filter
				$VoLTE_filter
				LEFT JOIN __brands b ON p.brand_id = b.id
				WHERE 
					1
					$price_filter
					$product_id_filter
					$brand_id_filter
					$features_filter
					$keyword_filter
					$is_featured_filter
					$discounted_filter
					$in_stock_filter
					$visible_filter
//				$group_by ------ Вот эту вот строку я удалил
				ORDER BY $order
					$sql_limit";

Вот узнать бы причину этой проблемы

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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...