Перейти к содержимому


Фото
- - - - -

Сортировка списка товаров в админке


  • Чтобы отвечать, сперва войдите на форум
10 ответов в теме

#1 star

star
  • Пользователь
  • 29 сообщений
  • Заказчик
  • Версия CMS:2.x

Опубликовано 10.01.2017 - 15:56

Если сортировать рекомендуемые или акционные в админке то сортировка работает, а как сделать сортировку новинок?

Например в демо версии, телефон BlackBerry Bold 9900

надо сделать последней загруженной новинкой, т. е. первый в списке товаров админки и первый в новинках на http://demo.simplacms.ru/

 



#2 mishanya

mishanya
  • Фрилансер
  • 2 286 сообщений
  • Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Ukraine

Опубликовано 10.01.2017 - 20:09

новинки в симпла берутся по дате добавления товара.

 

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

 

плохо вы ищите http://forum.simplac...дуемых/?p=26651



#3 star

star
  • Пользователь
  • 29 сообщений
  • Заказчик
  • Версия CMS:2.x

Опубликовано 18.01.2017 - 13:41

для версии 2.3.6 сделал так

1. в файле view/View.php добавляем:

			// Настраиваем плагины для смарти

                        $this->design->smarty->registerPlugin("function", "get_news",                   array($this, 'get_news_plugin'));

и ниже

	/**
	 *
	 * Плагины для смарти
	 *
	 */	

		
    public function get_news_plugin($params, &$smarty)
    {
        if(!isset($params['visible']))
            $params['visible'] = 1;
            $params['news'] = 1;
		if(!empty($params['var']))
		{
			foreach($this->products->get_products($params) as $p)
				$products[$p->id] = $p;

			if(!empty($products))
			{
				// id выбраных товаров
				$products_ids = array_keys($products);
		
				// Выбираем варианты товаров
				$variants = $this->variants->get_variants(array('product_id'=>$products_ids, 'in_stock'=>true));
				
				// Для каждого варианта
				foreach($variants as &$variant)
				{
					// добавляем вариант в соответствующий товар
					$products[$variant->product_id]->variants[] = $variant;
				}
				
				// Выбираем изображения товаров
				$images = $this->products->get_images(array('product_id'=>$products_ids));
				foreach($images as $image)
					$products[$image->product_id]->images[] = $image;
	
				foreach($products as &$product)
				{
					if(isset($product->variants[0]))
						$product->variant = $product->variants[0];
					if(isset($product->images[0]))
						$product->image = $product->images[0];
				}				
			}

			$smarty->assign($params['var'], $products);
			
		}
	}

2. в файле main.tpl делаем вывод:

{* Новинки *}
{get_new_products var=new_products limit=3}
{if $new_products}

меняем на

{* Новинки *}
{get_news var=new_products limit=3}
{if $new_products}

После станет возможным сортировка с сохранением позиций в админке http://demo.simplacm...e=ProductsAdmin



#4 star

star
  • Пользователь
  • 29 сообщений
  • Заказчик
  • Версия CMS:2.x

Опубликовано 18.01.2017 - 13:43

и не надо никаких полей добавлять в базу



#5 mishanya

mishanya
  • Фрилансер
  • 2 286 сообщений
  • Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Ukraine

Опубликовано 18.01.2017 - 15:59

и не надо никаких полей добавлять в базу

 

ваша инструкция не завершенная. в api/Products.php как-то нужно еще обрабатывать ваш $params['news'] = 1;



#6 star

star
  • Пользователь
  • 29 сообщений
  • Заказчик
  • Версия CMS:2.x

Опубликовано 18.01.2017 - 16:13

ваша инструкция не завершенная. в api/Products.php как-то нужно еще обрабатывать ваш $params['news'] = 1;

Согласен.  тогда так

	/**
	 *
	 * Плагины для смарти
	 *
	 */	

		
    public function get_news_plugin($params, &$smarty)
    {
        if(!isset($params['visible']))
            $params['visible'] = 1;
		if(!empty($params['var']))
		{
			foreach($this->products->get_products($params) as $p)
				$products[$p->id] = $p;

			if(!empty($products))
			{
				// id выбраных товаров
				$products_ids = array_keys($products);
		
				// Выбираем варианты товаров
				$variants = $this->variants->get_variants(array('product_id'=>$products_ids, 'in_stock'=>true));
				
				// Для каждого варианта
				foreach($variants as &$variant)
				{
					// добавляем вариант в соответствующий товар
					$products[$variant->product_id]->variants[] = $variant;
				}
				
				// Выбираем изображения товаров
				$images = $this->products->get_images(array('product_id'=>$products_ids));
				foreach($images as $image)
					$products[$image->product_id]->images[] = $image;
	
				foreach($products as &$product)
				{
					if(isset($product->variants[0]))
						$product->variant = $product->variants[0];
					if(isset($product->images[0]))
						$product->image = $product->images[0];
				}				
			}

			$smarty->assign($params['var'], $products);
			
		}
	}

строка $params['news'] = 1; не нужна



#7 mishanya

mishanya
  • Фрилансер
  • 2 286 сообщений
  • Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Ukraine

Опубликовано 18.01.2017 - 22:28

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

 

{get_new_products var=new_products limit=3 sort='position'}

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



#8 star

star
  • Пользователь
  • 29 сообщений
  • Заказчик
  • Версия CMS:2.x

Опубликовано 18.01.2017 - 22:45

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

 

{get_new_products var=new_products limit=3 sort='position'}

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

прикол в том что это и есть ответ на вопрос по сортировке в админке



#9 star

star
  • Пользователь
  • 29 сообщений
  • Заказчик
  • Версия CMS:2.x

Опубликовано 18.01.2017 - 22:46

новинки в симпла берутся по дате добавления товара.

 

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

 

плохо вы ищите http://forum.simplac...дуемых/?p=26651

получается что новинки от даты не зависят



#10 Noxter

Noxter

    Simpla Developer

  • Фрилансер
  • 5 569 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 18.01.2017 - 22:48

получается что новинки от даты не зависят

Стандартно они как раз такие от даты и зависят.

#11 mishanya

mishanya
  • Фрилансер
  • 2 286 сообщений
  • Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Ukraine

Опубликовано 18.01.2017 - 22:48

получается что новинки от даты не зависят

 

зависят. просто если добавить sort='position' сортировка изменится. вместо сортировки по дате, станет сортировка по позициям. по это не до конца удобное решение






0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых