Как заставить стандартный фильтр делать описанное ниже в теме?

Тема в разделе "Общие вопросы", создана пользователем REV, 29 дек 2015.

  1. REV

    REV Новичок

    Сообщения:
    17
    Симпатии:
    0
    Я использую сейчас MegaFilterPro, но у него есть один просак в плане ссылок: когда включаешь сео, то ссылки типа desktops/mfp,width[1] нет возможности скопировать/открыть в новом окне. (пишет, что страница не найдена). В то время как если не включать поддержку сео в данном модуле, то все работает при ссылках вида desktops?mfp=width[1].
    Все вышеописанное вполне логично, и нет, я не упал в край! Но, есть особенно отдаленные люди/конторы/ситуации.

    Что приходится делать эти чертовы сео-фильтры, или как хотите так и обзывайте их.
    Вот я и решил сделать это со стандартным фильтром из этой сборки. Хочется, чтобы ссылка при выборе позиции фильтра (velosipedi&filter=80) была след.: velosipedi/dorozhniye. И т.д. при выборе одного или двух(если два то разделитель запятая).

    Я уже пытался, делать так: в файле seo_url.php после строк
    Код:
    foreach ($parts as $part) {
                   
                    $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE keyword = '" . $this->db->escape($part) . "'");
    Вставляю наброску раз:

    Код:
    //begin filter
                    if ( ! $query->num_rows) {
                        if (substr_count($part, ',')>0 ) {
                            $filters = explode(',', $part);
                            foreach ($filters as $filter) {
                                $mfilter_query = $this->db->query( "SELECT * FROM " . DB_PREFIX . "mfilter_url_alias WHERE alias = '" . $this->db->escape($filter) . "'");                
                                if( $mfilter_query->num_rows ) {
                                    if (!isset($this->request->get['filter'])) {
                                        $this->request->get['filter'] = $mfilter_query->row['mfilter_url_alias_id'];
                                    } else {
                                        $this->request->get['filter'] .= ',' . $mfilter_query->row['mfilter_url_alias_id'];
                                    }
                                }
                            }
                        } else {
                            $mfilter_query = $this->db->query( "SELECT * FROM " . DB_PREFIX . "mfilter_url_alias WHERE alias = '" . $this->db->escape($part) . "'");
                            if( $mfilter_query->num_rows ) {
                                $this->request->get['filter'] = $mfilter_query->row['mfilter_url_alias_id'];
                            }
                        }
                    }
                    //end filter

    И уже после строк:

    Код:
        if (isset($this->request->get['route'])) {
                    return new Action($this->request->get['route']);
                }             
            }
    Вставляю наброску два:
    Код:
    //begin filter
                    if (isset($this->request->get['filter'])) {
                        $filters_id = explode(',', $this->request->get['filter']);
                        $filter_path = '';
                        foreach ($filters_id as $id) {
                            $mfilter_query = $this->db->query( "SELECT * FROM " . DB_PREFIX . "mfilter_url_alias WHERE mfilter_url_alias_id = '" . (int)$id . "'");
                            if ($mfilter_query->num_rows) {                       
                                if (!next($filters_id)) {
                                    $filter_path .= $mfilter_query->row['alias'];
                                } else
                                    $filter_path .= $mfilter_query->row['alias'] . ',';
                            }
                        }
                        $cat_path .= '/' . $filter_path;
                    }
                    //end filter
    И завершающий код, после:
    Код:
        $url .= '/' . $query->row['keyword'];
                            } else {
                                $url = '';
                                break;
                            }
                        }
                        unset($data[$key]);
    Наброска три:
    Код:
        //begin filter   
                    } elseif ($key == 'filter') {
                        $filters = explode(',', $value);                   
                        $text_route = '';
                        foreach ($filters as $filter)
                        {
                            $mfilter_query = $this->db->query( "SELECT * FROM " . DB_PREFIX . "mfilter_url_alias WHERE mfilter_url_alias_id = '" . (int)$filter . "'");
                            if($mfilter_query->num_rows && $mfilter_query->row['alias']) {           
                                if (!next($filters)) {
                                    $text_route .= $mfilter_query->row['alias'];
                                } else
                                    $text_route .= $mfilter_query->row['alias'] . ',';                               
                            }                                                
                        }
                        $url .= '/' . $text_route;
                        unset($data[$key]);
                    //end filter    

    В итоге голова моя кругом...уже не первый день. Я понимаю бредовость затеи, но: "Такое возможно ведь?"
    Если вы уже сталкивались с таким, или Ваш скилл понятное дело выше, и Вы можете подсказать, куда копать/что читать еще кроме форумов про разного рода Pro/Cooll и пр. фильтры ил иже как выйти из этой ситуации - пожалуйста не пройдите мимо, подскажите.
    Заранее Вам благодарен. Я не прошу сделать за меня, я просто прошу взглянуть на этот вопрос "свежей головой". Т.к. опыта пока, что у меня мало.
     
  2. Ален

    Ален Эксперт

    Сообщения:
    2.052
    Симпатии:
    630
    Ну какая она свежая, когда новый год на носу )) После нг, что нибудь придумаем..

    И про этот сео в стандартном фильтре, вроде была тема.. надо было там продолжить..
     
  3. REV

    REV Новичок

    Сообщения:
    17
    Симпатии:
    0
    Там все снова ушло в создание кучи категорий под позиции фильтра, с последующим тосованием ими. Это ж не то(
    :)