Сортировка товаров в поиске

Добрый день!

Может кто-то уже реализовывал у себя сортировку товаров в поиске таким образом, чтобы товары с нулевой ценой были в конце поиска, по аналогии сортировки товаров которых нет в наличии, в стандартных настройках можно сделать чтобы товары которых нет в наличии были в конце списка. Таким же образом интересует сортировка товаров с нулевой ценой

Функция былабы очень полезна, так как есть новые товары у которых еще нет цены, а также, товары, которые уже в архиве

2 ответа

  • 1
    Николай Webasyst 18 сентября 2018 12:17 #

    Если задача до сих пор не решена, вы можете разместить описание своего задания в разделе «Поиск проектов и экспертов». Вам также может быть полезна документация разработчика Webasyst. Для получения расширенной платной помощи воспользуйтесь услугами наших партнёров.

  • 1
    Петр 15 ноября 2018 12:56 #

    вариант сделать хелпер

    <?php
    
    class shopHelperSearch
    {
    	public static function viewType() /* вывод типов характеристик */
        {
    		$types = array();
    		$model = new shopTypeModel();
    		$types = $model->getAll('id');
    		return $types;
    	}
    	
    	public static function array_msort($array, $cols) { /* функция сортировки */
    		
    		$colarr = array();
    		foreach ($cols as $col => $order) {
    			$colarr[$col] = array();
    			foreach ($array as $k => $row) { $colarr[$col]['_'.$k] = strtolower($row[$col]); }
    		}
    		$eval = 'array_multisort(';
    		foreach ($cols as $col => $order) {
    			$eval .= '$colarr[\''.$col.'\'],'.$order.',';
    		}
    		$eval = substr($eval,0,-1).');';
    		eval($eval);
    		$ret = array();
    		foreach ($colarr as $col => $arr) {
    			foreach ($arr as $k => $v) {
    				$k = substr($k,1);
    				if (!isset($ret[$k])) $ret[$k] = $array[$k];
    				$ret[$k][$col] = $array[$k][$col];
    			}
    		}
    		
    		return $ret;
    
    	}
    
        public static function searchSort($products, $sort = array('in_stock'=>SORT_DESC, 'type_id'=>SORT_ASC, 'price'=>SORT_ASC)) /* сортировка товаров */
        {
    		$types = self::viewType();
    		
    		/* подмена ид типов товара на ид отсортированных в настройках Типы и характеристики товаров */
    		foreach ($products as $key => &$p) {			
    				$p['type_id'] = $types[$p['type_id']]['sort'];
    		}
    		if ($sort) {
    			$products = self::array_msort($products, $sort);
    		}
    		return $products;
    	}
    	
    	
    	
    }

    в шаблоне вот так {$products = shopHelperSearch::searchSort($products)}

    сортирует по наличию, типам товаров, цене

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите