Jump to content

Recommended Posts

использовать куки

 

что-то типа такого(в ProductsView.php сразу после $filter['visible'] = 1;):

 

 

        $path = '/products/';
        if(!empty($category_url))
            $path = '/catalog/'.$category_url;
        if(!empty($brand_url)
            $path = '/brands/'


        if(!isset($current_min_price) && empty($current_min_price)){
            if(isset($_COOKIE['min_price']))
                $current_min_price = $_COOKIE['min_price'];
            else
                unset($current_min_price);
        }
        else{
            setcookie("min_price", $current_min_price, time()+60*60*24*30, $path);
        }


        if(!isset($current_max_price) && empty($current_max_price)){
            if(isset($_COOKIE['max_price']))
                $current_max_price = $_COOKIE['max_price'];
            else
                unset($current_max_price);
        }
        else{
            setcookie("max_price", $current_max_price, time()+60*60*24*30, $path);
        }
 

 

сохраняет значения для каждой категории отдельно
Link to post
Share on other sites
  • 2 weeks later...
  • Replies 124
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Posted Images

А как быть, если в категории более 5000 товаров? Страница попросту не открывается. Я пока так и не нашёл почему так сильно возрастает нагрузка на сервер. С отключённой фильтрацией категории открываются нормально. Помогает, если восстановить строку $limit = 100; в api/Products.php но лишь отчасти. Страницы открываются, но стоит зайти насколько раз и сервак ложится.
 

Link to post
Share on other sites

Код надо стараться писать не копированием чужого, а с пониманием, чтоб работал не только правильно, но и РАЦИОНАЛЬНО. Например, использовать код от artbe для MainView.php, приведенный несколькими постами выше - это примерно как носить сметану ложками из погреба. Если надо 2-3 ложки, неудобство терпимое. А дальше, как показывает предыдущий пост, уже идет причинение сайту ущерба (непреднамеренное).

Я не понял что тут вообще написано?!

Я пытаюсь узнать в чём причина и каково решение.

Link to post
Share on other sites

Сделал в моем решении (2 поста ранее) отдельную функцию для выбора минимальной и максимальной цены без дополнительных подзапросов - в итоге нагрузки ноль. И нет смысла гонять весь "набор" параметров для выборки цены.

Link to post
Share on other sites
  • 2 months later...

VladP, спасибо за слайдер. 

Есть небольшая проблема, после нажатия кнопки "применить" исчезает листалка страниц. Как можно исправить? И как сделать так что бы после сортировки не сбрасывались установленные цены? 

Link to post
Share on other sites
  • 5 months later...
  • 5 weeks later...
  • 1 month later...

Если кому надо 

стили для ползунка

/* ползунок */
ui-slider                        +    
ui-slider-horizontal       +
ui-widget                      +
ui-widget-content        +
ui-corner-all                  +
 
/* линия */
ui-slider-range              +
ui-widget-header 
ui-corner-all                    +
 
/* кнопка */
ui-slider-handle               +    
ui-state-default 
ui-corner-all                     +
 
ui-state-hover
 ui-state-active
 ui-state-focus
 
 

мой пример для магазина

.ui-slider 
    {
        width: 70%;
        margin: 0 7%;
        float: left;
        position: relative;
        text-align: left;
    }
.ui-slider .ui-slider-handle 
    {
        position: absolute;
        z-index: 2;
        width: 20px;
        height: 20px;
        cursor: default;
    }
.ui-slider .ui-slider-range 
    {
        position: absolute;
        z-index: 1;
        font-size: .7em;
        display: block;
        border: 0;
        background-position: 0 0;
    }


/* Corner radius */
.ui-corner-all
    {
        border-top-left-radius: 4px;
        border-top-right-radius: 4px;
        border-bottom-left-radius: 4px;
        border-bottom-right-radius: 4px;
    }
.ui-slider-horizontal {
    height: .3em;
    top:.5em;
}
.ui-slider-horizontal .ui-slider-handle {
    top: -.55em;
    margin-left: -.6em;
    cursor: pointer;
}
.ui-slider-horizontal .ui-slider-range {
    top: 0;
    height: 100%;
}
.ui-slider-horizontal .ui-slider-range-min {
    left: 0;
}
.ui-slider-horizontal .ui-slider-range-max {
    right: 0;
}


.ui-widget {
    font-family: Verdana,Arial,sans-serif;
    font-size: 1.1em;
}
.ui-widget .ui-widget {
    font-size: 1em;
}
.ui-widget-content {
    border: 1px solid #aaaaaa;
    background: #E4E8BC;
    color: #222222;
}
.ui-widget-content a {
    color: #222222;
}
.ui-widget-header {
    background: #AFB383;
    box-shadow:inset 0 3px 3px 0 rgba(100,100,100,0.5);
    color: #222222;
    height:10px;
    font-weight: bold;
}
.ui-widget-header a {
    color: #222222;
}
/*
 ---------------------------------------------------
                кнопка слайда
 ---------------------------------------------------
*/
.ui-state-default,
.ui-widget-content .ui-state-default,
.ui-widget-header .ui-state-default {
    background: url(../images/bg__slide_.png), url(../images/bg___slide_bottom.png);
    background-size: 70% 70%, 100% 100%;
    background-position: 50% 50%, 0% 0%;
    background-repeat: no-repeat, no-repeat;
    font-weight: normal;
    color: #555555;
}
.ui-state-default a,
.ui-state-default a:link,
.ui-state-default a:visited {
    color: #555555;
    text-decoration: none;
}
.ui-state-hover,
.ui-widget-content .ui-state-hover,
.ui-widget-header .ui-state-hover,
.ui-state-focus,
.ui-widget-content .ui-state-focus,
.ui-widget-header .ui-state-focus {
    border: 1px solid #94995A;
    font-weight: normal;
    color: #212121;
    box-shadow: 0px 0px 2px #94995A;
    transition: all 00ms ease-in-out;
}
.ui-state-hover a,
.ui-state-hover a:hover,
.ui-state-hover a:link,
.ui-state-hover a:visited {
    color: #212121;
    text-decoration: none;
}
.ui-state-active,
.ui-widget-content .ui-state-active,
.ui-widget-header .ui-state-active {
    border: 1px solid #aaaaaa;
    font-weight: normal;
    color: #212121;
}
.ui-state-active a,
.ui-state-active a:link,
.ui-state-active a:visited {
    color: #212121;
    text-decoration: none;
}

 

 

Link to post
Share on other sites
  • 1 month later...
  • 2 months later...

подскажите включили кэширование сайта, поменяли в конфиге "config.php" на true и перестал работать ползунок, кто может подсказать как поправить?

Link to post
Share on other sites
  • 4 months later...

Подскажите как сделать фильтр на главной странице?

Пробовал сделать вывод категории на главной - максы определяет сам фильтр не работает.

mainview.tpl

<?PHP

/**
 * Simpla CMS
 * Storefront class: Каталог товаров
 *
 * Этот класс использует шаблоны hits.tpl
 *
 * @copyright 	2010 Denis Pikusov
 * @link 		http://simplacms.ru
 * @author 		Denis Pikusov
 *
 * 
 *
 */


require_once('View.php');


class MainView extends View
{

	function fetch()
	{
	$current_min_price = $this->request->post('min_price');
		$current_max_price = $this->request->post('max_price');
		
		$filter = array();
		$filter['visible'] = 1;	

		$filter['min_price'] = $current_min_price;
		$filter['max_price'] = $current_max_price;
		
		
	
	
	
	
		if($this->page)
		{
			$this->design->assign('meta_title', $this->page->meta_title);
			$this->design->assign('meta_keywords', $this->page->meta_keywords);
			$this->design->assign('meta_description', $this->page->meta_description);
		}
		
		unset($filter['min_price']);
unset($filter['max_price']);
unset($filter['limit']);
foreach($this->products->get_products($filter) as $p)
	$products_prices[$p->id] = $p;

if(!empty($products_prices))
{
	$prices_products_ids = array_keys($products_prices);
	$prices_variants = $this->variants->get_variants(array('product_id'=>$prices_products_ids));
	foreach($prices_variants as &$prices_variant)
		$prices[] = $prices_variant->price;
}

$min_price = 0;
$max_price = 0;
$min_price = min($prices);
$max_price = max($prices);

if(!isset($current_min_price) && empty($current_min_price))
	$current_min_price = $min_price;
if(!isset($current_max_price) && empty($current_max_price))
	$current_max_price = $max_price;
	
$this->design->assign('minprice', $min_price);
$this->design->assign('maxprice', $max_price);
$this->design->assign('current_minprice', $current_min_price);
$this->design->assign('current_maxprice', $current_max_price);


		return $this->design->fetch('main.tpl');
	}
}

Link to post
Share on other sites
  • 2 months later...
  • 4 months later...
  • 3 weeks later...

Мёртвый форум

 

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

Link to post
Share on other sites

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

А вы пробовали сделать хотя бы по одной инструкции? В интернете их 3, то не работают, то я сам должен придумать куда засунуть код. Я, конечно, всё понимаю, но можно нормально объяснять (я не гуру PHP и тем более Симплы, хоть в принципе и не так тяжело всё тут). Тут же я попросил помочь того, кто сделал или было подобное, а ответа, увы, нет.

Link to post
Share on other sites

А вы пробовали сделать хотя бы по одной инструкции? В интернете их 3, то не работают, то я сам должен придумать куда засунуть код. Я, конечно, всё понимаю, но можно нормально объяснять (я не гуру PHP и тем более Симплы, хоть в принципе и не так тяжело всё тут). Тут же я попросил помочь того, кто сделал или было подобное, а ответа, увы, нет.

 

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

Link to post
Share on other sites

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

Был бы очень благодарен

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...