Jump to content

snagovskiy

Пользователь
  • Content Count

    48
  • Joined

  • Last visited

Posts posted by snagovskiy

  1. Как вариант переделать немного скрипт поиска, убрать событие onselect и переделать вывод результатов в виде ссылок на товары.

    Завтра если будет время распишу (00.40 на часах).

     

    Noxter найди время пожалуйста

  2. Пробуйте вместо

                serviceUrl:'ajax/search_products.php',

                minChars:1,

                noCache: false,

    вставить

                serviceUrl:'ajax/search_products.php',

                minChars:1,

                triggerSelectOnValidInput: false,

                noCache: false,

     

    Попробовал, спасибо за совет, но не работает  :(

  3. У меня получилось решить вопрос так: в index.tpl

    после

                onSelect:

                    function(suggestion){

                         $(".input_search").closest('form').submit();

                    },

    добавил               

                transformResult: function(result, query) {

                    var data = JSON.parse(result);

                    $(".input_search").autocomplete('setOptions', {triggerSelectOnValidInput: data.suggestions.length == 1});

                    return data;

                },

     

    P.S.  Придумал не сам, нашел это в OKAY CMS.

     

    У меня это не заработало, тестил на своем шаблоне и на дефолтном,...

     

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

     

    Например есть товар Apple iPhone 6 16Gb Silver и Apple iPhone 6s 16Gb Silver

    если я пишу в поиске apple iphone 6 16gb, точного соответствия не будет, автозамена не сработает и при нажатии на строку поиска обновления страницы не произойдет.

     

    А если я напишу apple iphone 6 16gb silver, то произойдет автозамена, текст в поисковой строке изменится на Apple iPhone 6 16Gb Silver (приобретет регистр) и проявится собственно проблема - при нажатии на поисковую строку будет перезагружаться страница.

  4. Действительно айфоны которые я добавлял, испарились, но остались четверки

     

    вот линк http://demo.simplacms.ru/products?keyword=Apple+iPhone+4S+16Gb

     

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

     

    Попробуйте на любом своем сайте на симпле, добавьте два товара iphone 6 16gb и iphone 6s 16gb, что бы увидеть эту проблему.

  5. Уважаемые господа,

     

    Подскажите пожалуйста как можно решить данную проблему

     

    Есть два товара

     

    iphone 6 16gb http://demo.simplacms.ru/products/iphone-6-16gb

    и

    iphone 6s 16gb http://demo.simplacms.ru/products/iphone-6s-16gb

     

    Пишу в строке поиска: iphone 6 16gb

    и попадаю на страницу результатов поиска http://demo.simplacms.ru/products?keyword=iphone+6+16gb

     

    а дальше если я нажимаю снова на строку поиска происходит обновление страницы и в поиск я больше ничего написать не могу...

  6. берешь с этой версии /simpla/GroupAdmin.php  и меняешь в том где не открывает

     

    а так

     

    http://i.share.pho.to/b993d105_o.png

     

    Спасибо, заменил содержимое GroupAdmin.php на 

     

    <?PHP
    require_once('api/Simpla.php');
    
    class GroupAdmin extends Simpla
    {	
    	public function fetch()
    	{
    		$group = new stdClass;
    		if($this->request->method('post'))
    		{
    			$group->id = $this->request->post('id', 'integer');
    			$group->name = $this->request->post('name');
    			$group->discount = $this->request->post('discount');
    	
    			if(empty($group->id))
    			{
      				$group->id = $this->users->add_group($group);
      				$this->design->assign('message_success', 'added');
      			}
    	    	else
    	    	{
    	    		$group->id = $this->users->update_group($group->id, $group);
      				$this->design->assign('message_success', 'updated');
      			}
    	    	$group = $this->users->get_group(intval($group->id));
    		}
    		else
    		{
    			$id = $this->request->get('id', 'integer');
    			if(!empty($id))
    				$group = $this->users->get_group(intval($id));			
    		}	
    
    		if(!empty($group))
    		{
    			$this->design->assign('group', $group);			
    		}
    		
     	  	return $this->design->fetch('group.tpl');
    	}
    	
    }
    

    и все заработало

  7. Всем большое спасибо. Наконец-то разобрался, что там у Яшки меняется )))

    Актуальный Парсер на данный момент:

     

    Актуальный парсер работает до сих пор....

     

    Но парсит лишнее... В Цвет вставляет html код

     

    Смотрите скриншот https://prnt.sc/hdkp1n

     

    Господа подскажите пожалуйста как исправить это дело

  8. Уважаемые господа, подскажите пожалуйста как исправить эту ошибку?

     

    http://demo.simplacms.ru/simpla/index.php?module=GroupAdmin

     

    Страница недоступна

    Сайт demo.simplacms.ru пока не может обработать этот запрос.

    HTTP ERROR 500
     
     
  9. Вышеописанные способы у меня не работают.
    Вот мой рабочий вариант для simpla 2.3.6
     
    В api/Products.php
     
    public function get_products($filter = array())
    	{		
    		// По умолчанию
    		$page = 1;
    		$category_id_filter = '';
    		$brand_id_filter = '';
    		$product_id_filter = '';
    		$features_filter = '';
    		$keyword_filter = '';
    		$visible_filter = '';
    		$is_featured_filter = '';
    		$yandex_filter = '';
    		$discounted_filter = '';
    		$in_stock_filter = '';
    		$group_by = '';
    		$order = 'p.position DESC';
    
    		if(isset($filter['limit']))
    			$limit = max(1, intval($filter['limit']));
    
    		if(isset($filter['page']))
    			$page = max(1, intval($filter['page']));
    
    		if(isset($limit) && isset($page))
    			$sql_limit = $this->db->placehold(' LIMIT ?, ? ', ($page-1)*$limit, $limit);
    
    		if(!empty($filter['id']))
    			$product_id_filter = $this->db->placehold('AND p.id in(?@)', (array)$filter['id']);
    
    		if(!empty($filter['category_id']))
    		{
    			$category_id_filter = $this->db->placehold('INNER JOIN __products_categories pc ON pc.product_id = p.id AND pc.category_id in(?@)', (array)$filter['category_id']);
    			$group_by = "GROUP BY p.id";
    		}
    
    		if(!empty($filter['brand_id']))
    			$brand_id_filter = $this->db->placehold('AND p.brand_id in(?@)', (array)$filter['brand_id']);
    
    		if(isset($filter['featured']))
    			$is_featured_filter = $this->db->placehold('AND p.featured=?', intval($filter['featured']));
    		
    		if(isset($filter['yandex']))
    			$yandex_filter = $this->db->placehold('AND p.to_yandex=?', intval($filter['yandex']));
    
    		if(isset($filter['discounted']))
    			$discounted_filter = $this->db->placehold('AND (SELECT 1 FROM __variants pv WHERE pv.product_id=p.id AND pv.compare_price>0 LIMIT 1) = ?', intval($filter['discounted']));
    
    		if(isset($filter['in_stock']))
    			$in_stock_filter = $this->db->placehold('AND (SELECT count(*)>0 FROM __variants pv WHERE pv.product_id=p.id AND pv.price>0 AND (pv.stock IS NULL OR pv.stock>0) LIMIT 1) = ?', intval($filter['in_stock']));
    
    		if(isset($filter['visible']))
    			$visible_filter = $this->db->placehold('AND p.visible=?', intval($filter['visible']));
    
     		if(!empty($filter['sort']))
    			switch ($filter['sort'])
    			{
    				case 'position':
    				$order = 'p.position DESC';
    				break;
    				case 'name':
    				$order = 'p.name';
    				break;
    				case 'created':
    				$order = 'p.created DESC';
    				break;
    				case 'price':
    				//$order = 'pv.price IS NULL, pv.price=0, pv.price';
    				$order = '(SELECT -pv.price FROM __variants pv WHERE (pv.stock IS NULL OR pv.stock>0) AND p.id = pv.product_id AND pv.position=(SELECT MIN(position) FROM __variants WHERE (stock>0 OR stock IS NULL) AND product_id=p.id LIMIT 1) LIMIT 1) DESC';
    				break;
    			}
    
    		if(!empty($filter['keyword']))
    		{
    			$keywords = explode(' ', $filter['keyword']);
    			foreach($keywords as $keyword)
    			{
    				$kw = $this->db->escape(trim($keyword));
    				$keyword_filter .= $this->db->placehold("AND (p.name LIKE '%$kw%' OR p.meta_keywords LIKE '%$kw%' OR p.id in (SELECT product_id FROM __variants WHERE sku LIKE '%$kw%'))");
    			}
    		}
    
    		if(!empty($filter['features']) && !empty($filter['features']))
    			foreach($filter['features'] as $feature=>$value)
    				$features_filter .= $this->db->placehold('AND p.id in (SELECT product_id FROM __options WHERE feature_id=? AND value=? ) ', $feature, $value);
    
    		if(!empty($filter['min_price']) && !empty($filter['max_price']))
    			$prices = $this->db->placehold('AND p.id in(SELECT v.product_id FROM __variants v WHERE v.price >= ? AND v.price <= ? AND v.product_id = p.id)', intval($filter['min_price']), intval($filter['max_price']));
    			
    		$query = "SELECT  
    					p.id,
    					p.url,
    					p.brand_id,
    					p.name,
    					p.featured,
                        p.rating,
                        p.votes,
    					p.annotation,
    					p.body,
    					p.position,
    					p.created as created,
    					p.visible,
    					p.to_yandex,					
    					p.featured, 
    					p.meta_title, 
    					p.meta_keywords, 
    					p.meta_description,
    					p.garanty,
    					b.name as brand,
    					b.url as brand_url
    				FROM __products p		
    				$category_id_filter 
    				LEFT JOIN __brands b ON p.brand_id = b.id
    				WHERE 
    					1
    					$product_id_filter
    					$brand_id_filter
    					$features_filter
    					$keyword_filter
    					$is_featured_filter
    					$yandex_filter
    					$discounted_filter
    					$in_stock_filter
    					$visible_filter
    					$prices
    				$group_by
    				ORDER BY $order
    					$sql_limit";
    
    		$this->db->query($query);
    
    		return $this->db->results();
    	}
    
    	/**
    	* Функция возвращает количество товаров
    	* Возможные значения фильтра:
    	* category_id - id категории или их массив
    	* brand_id - id бренда или их массив
    	* keyword - ключевое слово для поиска
    	* features - фильтр по свойствам товара, массив (id свойства => значение свойства)
    	*/
    	public function count_products($filter = array())
    	{		
    		$category_id_filter = '';
    		$brand_id_filter = '';
    		$product_id_filter = '';
    		$keyword_filter = '';
    		$visible_filter = '';
    		$is_featured_filter = '';
    		$yandex_filter = '';
    		$in_stock_filter = '';
    		$discounted_filter = '';
    		$features_filter = '';
    		
    		if(!empty($filter['category_id']))
    			$category_id_filter = $this->db->placehold('INNER JOIN __products_categories pc ON pc.product_id = p.id AND pc.category_id in(?@)', (array)$filter['category_id']);
    
    		if(!empty($filter['brand_id']))
    			$brand_id_filter = $this->db->placehold('AND p.brand_id in(?@)', (array)$filter['brand_id']);
    
    		if(!empty($filter['id']))
    			$product_id_filter = $this->db->placehold('AND p.id in(?@)', (array)$filter['id']);
    		
    		if(isset($filter['keyword']))
    		{
    			$keywords = explode(' ', $filter['keyword']);
    			foreach($keywords as $keyword)
    				$keyword_filter .= $this->db->placehold('AND (p.name LIKE "%'.$this->db->escape(trim($keyword)).'%" OR p.meta_keywords LIKE "%'.$this->db->escape(trim($keyword)).'%") ');
    		}
    
    		if(isset($filter['featured']))
    			$is_featured_filter = $this->db->placehold('AND p.featured=?', intval($filter['featured']));
    		
    		if(isset($filter['yandex']))
    			$yandex_filter = $this->db->placehold('AND p.to_yandex=?', intval($filter['yandex']));
    
    		if(isset($filter['in_stock']))
    			$in_stock_filter = $this->db->placehold('AND (SELECT count(*)>0 FROM __variants pv WHERE pv.product_id=p.id AND pv.price>0 AND (pv.stock IS NULL OR pv.stock>0) LIMIT 1) = ?', intval($filter['in_stock']));
    
    		if(isset($filter['discounted']))
    			$discounted_filter = $this->db->placehold('AND (SELECT 1 FROM __variants pv WHERE pv.product_id=p.id AND pv.compare_price>0 LIMIT 1) = ?', intval($filter['discounted']));
    
    		if(isset($filter['visible']))
    			$visible_filter = $this->db->placehold('AND p.visible=?', intval($filter['visible']));
    		
    		
    		if(!empty($filter['features']) && !empty($filter['features']))
    			foreach($filter['features'] as $feature=>$value)
    				$features_filter .= $this->db->placehold('AND p.id in (SELECT product_id FROM __options WHERE feature_id=? AND value=? ) ', $feature, $value);
    		
    		if(!empty($filter['min_price']) && !empty($filter['max_price']))
    			$prices = $this->db->placehold('AND p.id in(SELECT v.product_id FROM __variants v WHERE v.price >= ? AND v.price <= ? AND v.product_id = p.id)', intval($filter['min_price']), intval($filter['max_price']));
    			
    		$query = "SELECT count(distinct p.id) as count
    				FROM __products AS p
    				$category_id_filter
    				WHERE 1
    					$brand_id_filter
    					$product_id_filter
    					$keyword_filter
    					$is_featured_filter
    					$yandex_filter
    					$in_stock_filter
    					$discounted_filter
    					$visible_filter
    					$prices
    					$features_filter ";
    
    		$this->db->query($query);	
    		return $this->db->result('count');
    	}
    

     

  10. Это должно работать спасибо))))

     

    Я вчера так и не дождался,  сам догадался как сделать, только я поставил по аналогии с другим редиректом

     

    RewriteCond %{QUERY_STRING} ^id=([^/]+)
    RewriteRule ^shop_item.html$ /products/%1/? [L,R=301] 
     
    в чем разница между ([\w\d-]+) и ([^/]+)
  11. У товаров бренда Найк (хотя бы частично) в админке указать дополнительную категорию Адидас.

    У товаров бренда Адидас (хотя бы частично) в админке указать дополнительную категорию Найк.

    ahmed 

    спасибо, это помогло, но теперь в подкатегории Адидас появились товары Найк, а в подкатегории Найк - Адидас =)

    Этого быть не должно, может быть есть еще какие то варианты решения вопроса?

  12. Есть категория и у нее две подкатегории:

     

    Кроссовки

     - Адидас

     - Найк

     

    и соответственно есть два бренда Адидас и Найк.

     

    В категории Кроссовки оба бренда отображаются.

     

    В подкатегории Адидас отображается только бренд Адидас,  а в подкатегории Найк соответственно только Найк.

     

    Вопрос: как сделать так, что бы в подкатегории Адидас отображался еще и бренд Найк, а в подкатегории Найк - бренд Адидас?

     

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

  13. Пробуйте в другом порядке

     

    {if $smarty.request.page == 'all'}

    ...

    {elseif $current_page_num == 1}

    ...

    {elseif $current_page_num > 1}

    ...

    {else}

    ...

    {/if}

     

    ahmed спасибо! Это сработало!
    {if $smarty.request.page == 'all'}
    <title>{$meta_title|escape}, все страницы</title>
    <meta name="description" content="{$meta_description|escape}, все страницы" />
    {elseif $current_page_num == 1}
    <title>{$meta_title|escape}</title>
    <meta name="description" content="{$meta_description|escape}" />
    {elseif $current_page_num > 1}
    <title>{$meta_title|escape}, страница {$current_page_num}</title>
    <meta name="description" content="{$meta_description|escape}, страница {$current_page_num}" />
    {else}
    <title>{$meta_title|escape}</title>
    <meta name="description" content="{$meta_description|escape}" />
    {/if}
    
×
×
  • Create New...