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

Пропадают свойства. Есть половина решения


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

Здравствуйте. Пропадают свойства. Постараюсь назвать причину.

1. Товар перемещается из категории "смартфоны" в "мобильные телефоны", в которой отсутствует свойство "версия Android"

2. Редактируется заголовок товара

3. Товар перемещается обратно в "смартфоны"

В этом случае значение "версия Android" станет пустой, свойство удалится. Такое происходит редко, но всё же бывает и найти удалённое свойство среди всего многообразия товаров оказывается не таким простым занятием.

Устранить эту проблему можно так:

Найти запрос SELECT feature_id FROM categories_features where category_id = номеркатегории

и изменить его на SELECT feature_id FROM categories_features where 1

Понятно, что запрос не один в один такой, но что-то на это похожее.

Результат: чуть больше нагрузка на БД (а она и так незначительная) и у каждого товара будут ВСЕ СВОЙСТВА, что будет гарантией сохранения имеющихся свойств товара при неумелом редактировании.

Вопрос - в каком файле менять одну строку на другую.

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

Пробуйте в simpla/ProductAdmin.php  фрагмент

 

                    // Свойства текущей категории
                    $category_features = array();
                    foreach($this->features->get_features(array('category_id'=>$product_categories[0])) as $f)
                        $category_features[] = $f->id;
 

заменить на

 

                    // Свойства текущей категории
                    $category_features = array();
                    foreach($this->features->get_features() as $f)
                        $category_features[] = $f->id;

 

А вообще способ не самый лучший.

 

 

 

Известно множество ошибок работы Simpla со свойствами. Некоторые из них замечены много лет назад. Одна из  ошибок описана здесь еще в 2012 году:

http://forum.simplacms.ru/topic/2916-%D0%B8%D1%81%D1%87%D0%B5%D0%B7%D0%B0%D1%8E%D1%82-%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F-%D1%81%D0%B2%D0%BE%D0%B9%D1%81%D1%82%D0%B2/

 

Последние известия по теме таковы. Тут

http://forum.simplacms.ru/topic/13358-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8-simpla-cms/

три месяца назад один спец написал

 

 

1. Решена проблема с пропажей свойств

 

Правда, сам способ решения не предоставил. Попробуйте попросить его дать решение. Он товарищ своеобразный и своенравный, но если найдете подход (как в басне  Ворона и Лисица или как в мультике про почтальона Печкина), то Вам может улыбнуться удача...

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

Пробуйте в simpla/ProductAdmin.php  фрагмент

 

                    // Свойства текущей категории

                    $category_features = array();

                    foreach($this->features->get_features(array('category_id'=>$product_categories[0])) as $f)

                        $category_features[] = $f->id;

 

заменить на

 

                    // Свойства текущей категории

                    $category_features = array();

                    foreach($this->features->get_features() as $f)

                        $category_features[] = $f->id;

 

А вообще способ не самый лучший.

Попробовал.

Исходные: категория 1 имеет свойства высота, ширина, глубина, категория 2 - не имеет.

При переносе товара из категории 1 в категорию 2 и последующем редактировании, в админке у товара свойства пропадают.

При переносе обратно, свойство восстанавливается. Не совсем то, что нужно, но всё же.

P.S. Нужно, чтобы в категории 2 свойство тоже отображалось.

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

Пробуйте в simpla/ProductAdmin.php  заменить

            $features = $this->features->get_features(array('category_id'=>$category->id));
на

            $features = $this->features->get_features();

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

Пробуйте в simpla/ProductAdmin.php  заменить

            $features = $this->features->get_features(array('category_id'=>$category->id));

на

            $features = $this->features->get_features();

Нет у меня такой строчки.

Есть

$options = $this->features->get_options(array('product_id'=>$product->id));

Может, вы об этом? Если нет, то на какой строчке искать?

 

В районе почти 400 строки у меня это:

 

        $features = $this->features->get_features();
        $this->design->assign('features', $features);
Ссылка на сообщение
Поделиться на другие сайты

В стандартной Simpla 2.3.8 такая строка есть, близко к концу. 

 

		// Все свойства товара
		$category = reset($product_categories);
		if(!is_object($category))
			$category = reset($categories);		
		if(is_object($category))
		{
			$features = $this->features->get_features(array('category_id'=>$category->id));
			$this->design->assign('features', $features);
		}
		
 	  	return $this->design->fetch('product.tpl');
	}
}

 

А у Вас, видимо, менялось...

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

В стандартной Simpla 2.3.8 такая строка есть, близко к концу. 

 

		// Все свойства товара
		$category = reset($product_categories);
		if(!is_object($category))
			$category = reset($categories);		
		if(is_object($category))
		{
			$features = $this->features->get_features(array('category_id'=>$category->id));
			$this->design->assign('features', $features);
		}
		
 	  	return $this->design->fetch('product.tpl');
	}
}

 

А у Вас, видимо, менялось...

А у меня вот так

        // Все свойства
        $features = $this->features->get_features();
        $this->design->assign('features', $features);
Ссылка на сообщение
Поделиться на другие сайты

А у меня вот так

        // Все свойства

        $features = $this->features->get_features();

        $this->design->assign('features', $features);

 

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

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

Видимо, версия движка другая.

Нет, доплачивать за исправление ошибок платного сырого движка, поддержка которого уже прекращена и обновления не предвидятся, не собираюсь. Дешевле пользоваться другой cms.

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

Видимо, версия движка другая.

Нет, доплачивать за исправление ошибок платного сырого движка, поддержка которого уже прекращена и обновления не предвидятся, не собираюсь. Дешевле пользоваться другой cms.

В другой CMS возможны свои ошибки, а также редкие обновления.
Ссылка на сообщение
Поделиться на другие сайты

За что ж сердишься, дяденька?

Это ж похвала твоим незаурядным мыслительным способностям...

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

Может, решение кто подскажет.

Оно простое, я даже пример запроса к mysql привёл,вот только не знаю, где искать.

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

Может, решение кто подскажет.

Оно простое, я даже пример запроса к mysql привёл,вот только не знаю, где искать.

Я решил этот вопрос, проект на работе.

Завтра дам решение если успею.

Напомните о себе в скайп simplacms.

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

Я решил этот вопрос, проект на работе.

Завтра дам решение если успею.

Напомните о себе в скайп simplacms.

Скайпа нету. Попытаюсь напомнить здесь в надежде, что вы форум читаете

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

Скайпа нету. Попытаюсь напомнить здесь в надежде, что вы форум читаете

Я тут постоянно.

Какая у вас версия симплы?

У меня есть решение для 2.3.8

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

Файл simpla/ProductsAdmin.php, попробуйте после:

case 'move_to_category':
                {
                    $category_id = $this->request->post('target_category', 'integer');
                    $filter['page'] = 1;
                    $category = $this->categories->get_category($category_id);
                    $filter['category_id'] = $category->children;

добавить:

// fix features
if(isset($ids))
{
	$pc = array();
	foreach($this->categories->get_product_categories($ids) as $c)
	{
		$pc[$c->category_id] = $c;
	}
	
	if(!empty($pc))
	{
		foreach($this->features->get_features(array('category_id'=>array_keys($pc))) as $f)
		{
			$this->features->add_feature_category($f->id, $category_id);
		}
	}
}

Предварительно создайте бекап сайта и БД.

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

Я понял ваше решение, спасибо.

Но я хотел бы подойти с другой стороны: как новой категории автоматом назначить все свойства?

Я могу это сделать через запрос к mysql, но хотелось бы, чтобы все свойства уже были назначены каждой категории изначально.



То есть, всего лишь при запросе к БД игнорировать это:

where category_id = номеркатегории.

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

Я понял ваше решение, спасибо.

Но я хотел бы подойти с другой стороны: как новой категории автоматом назначить все свойства?

Я могу это сделать через запрос к mysql, но хотелось бы, чтобы все свойства уже были назначены каждой категории изначально.

 

 

То есть, всего лишь при запросе к БД игнорировать это:

where category_id = номеркатегории.

Моё решение решает ваш вопрос, теперь вам нужно что-то другое...

Простите но мне перехотелось вам помогать.

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

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

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

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

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

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

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

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

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

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