Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Не работает пагинация, выдает 404 ошибку


Recommended Posts

Добрый день. Сайт опенкарт 2 https://silvex925.com.ua/search?&search=кольцо в поиске при переключении на страницы пагинации выдает 404 ошибку. Хелп плз)

product/search.php

Spoiler

<?php
class ControllerProductSearch extends Controller {
    public function index() {
        $this->load->language('product/search');

        $this->load->model('catalog/category');

        $this->load->model('catalog/product');

        $this->load->model('tool/image');

        if (isset($this->request->get['search'])) {
            $search = $this->request->get['search'];
        } else {
            $search = '';
        }

        if (isset($this->request->get['tag'])) {
            $tag = $this->request->get['tag'];
        } elseif (isset($this->request->get['search'])) {
            $tag = $this->request->get['search'];
        } else {
            $tag = '';
        }

        if (isset($this->request->get['description'])) {
            $description = $this->request->get['description'];
        } else {
            $description = '';
        }

        if (isset($this->request->get['category_id'])) {
            $category_id = $this->request->get['category_id'];
        } else {
            $category_id = 0;
        }

        if (isset($this->request->get['sub_category'])) {
            $sub_category = $this->request->get['sub_category'];
        } else {
            $sub_category = '';
        }

        if (isset($this->request->get['sort'])) {
            $sort = $this->request->get['sort'];
        } else {
            $sort = 'p.sort_order';
        }

        if (isset($this->request->get['order'])) {
            $order = $this->request->get['order'];
        } else {
            $order = 'ASC';
        }

        if (isset($this->request->get['page'])) {
            $page = $this->request->get['page'];
        } else {
            $page = 1;
        }

        if (isset($this->request->get['limit'])) {
            $limit = $this->request->get['limit'];
        } else {
            $limit = $this->config->get('config_product_limit');
        }

        if (isset($this->request->get['search'])) {
            $this->document->setTitle($this->language->get('heading_title') .  ' - ' . $this->request->get['search']);
        } elseif (isset($this->request->get['tag'])) {
            $this->document->setTitle($this->language->get('heading_title') .  ' - ' . $this->language->get('heading_tag') . $this->request->get['tag']);
        } else {
            $this->document->setTitle($this->language->get('heading_title'));
        }

        $data['breadcrumbs'] = array();

        $data['breadcrumbs'][] = array(
            'text' => $this->language->get('text_home'),
            'href' => $this->url->link('common/home')
        );

        $url = ''; if( ! empty( $this->request->get['mfp'] ) ) {$url .= '&mfp=' . $this->request->get['mfp']; }

        if (isset($this->request->get['search'])) {
            $url .= '&search=' . urlencode(html_entity_decode($this->request->get['search'], ENT_QUOTES, 'UTF-8'));
        }

        if (isset($this->request->get['tag'])) {
            $url .= '&tag=' . urlencode(html_entity_decode($this->request->get['tag'], ENT_QUOTES, 'UTF-8'));
        }

        if (isset($this->request->get['description'])) {
            $url .= '&description=' . $this->request->get['description'];
        }

        if (isset($this->request->get['category_id'])) {
            $url .= '&category_id=' . $this->request->get['category_id'];
        }

        if (isset($this->request->get['sub_category'])) {
            $url .= '&sub_category=' . $this->request->get['sub_category'];
        }

        if (isset($this->request->get['sort'])) {
            $url .= '&sort=' . $this->request->get['sort'];
        }

        if (isset($this->request->get['order'])) {
            $url .= '&order=' . $this->request->get['order'];
        }

        if (isset($this->request->get['page'])) {
            $url .= '&page=' . $this->request->get['page'];
        }

        if (isset($this->request->get['limit'])) {
            $url .= '&limit=' . $this->request->get['limit'];
        }

        $data['breadcrumbs'][] = array(
            'text' => $this->language->get('heading_title'),
            'href' => $this->url->link('product/search', $url)
        );

        if (isset($this->request->get['search'])) {
            $data['heading_title'] = $this->language->get('heading_title') .  ' - ' . $this->request->get['search'];
        } else {
            $data['heading_title'] = $this->language->get('heading_title');
        }

        $data['text_empty'] = $this->language->get('text_empty');
        $data['text_search'] = $this->language->get('text_search');
        $data['text_keyword'] = $this->language->get('text_keyword');
        $data['text_category'] = $this->language->get('text_category');
        $data['text_sub_category'] = $this->language->get('text_sub_category');
        $data['text_quantity'] = $this->language->get('text_quantity');
        $data['text_manufacturer'] = $this->language->get('text_manufacturer');
        $data['text_model'] = $this->language->get('text_model');
        $data['text_price'] = $this->language->get('text_price');
        $data['text_tax'] = $this->language->get('text_tax');
        $data['text_points'] = $this->language->get('text_points');
        $data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0));
        $data['text_sort'] = $this->language->get('text_sort');
        $data['text_limit'] = $this->language->get('text_limit');

        $data['entry_search'] = $this->language->get('entry_search');
        $data['entry_description'] = $this->language->get('entry_description');

        $data['button_search'] = $this->language->get('button_search');
        $data['button_cart'] = $this->language->get('button_cart');
        $data['read_more'] = $this->language->get('read_more');
        $data['button_wishlist'] = $this->language->get('button_wishlist');
        $data['button_compare'] = $this->language->get('button_compare');
        $data['button_list'] = $this->language->get('button_list');
        $data['button_grid'] = $this->language->get('button_grid');
        $data['text_vid'] = $this->language->get('text_vid');


        $data['text_1'] = $this->language->get('text_1');
        $data['text_2'] = $this->language->get('text_2');
        $data['text_3'] = $this->language->get('text_3');
        $data['text_4'] = $this->language->get('text_4');

        $data['compare'] = $this->url->link('product/compare');

        $this->load->model('catalog/category');

        // 3 Level Category Search
        $data['categories'] = array();

        $categories_1 = $this->model_catalog_category->getCategories(0);

        foreach ($categories_1 as $category_1) {
            if ( $this->config->get('config_customer_group_id') == $category_1['customer_group_id'] || $category_1['customer_group_id'] == '1' ) {
                $level_2_data = array();

                $categories_2 = $this->model_catalog_category->getCategories($category_1['category_id']);

                foreach ($categories_2 as $category_2) {
                    $level_3_data = array();

                    $categories_3 = $this->model_catalog_category->getCategories($category_2['category_id']);

                    foreach ($categories_3 as $category_3) {
                        $level_3_data[] = array(
                            'category_id' => $category_3['category_id'],
                            'name' => $category_3['name'],
                        );
                    }

                    $level_2_data[] = array(
                        'category_id' => $category_2['category_id'],
                        'name' => $category_2['name'],
                        'children' => $level_3_data
                    );
                }

                $data['categories'][] = array(
                    'category_id' => $category_1['category_id'],
                    'name' => $category_1['name'],
                    'children' => $level_2_data
                );
            }
        }

        $data['products'] = array();

        if (isset($this->request->get['search']) || isset($this->request->get['tag'])) {
            $filter_data = array(
                'filter_name'         => $search,
                'filter_attrs'        => $search,
                'filter_tag'          => $tag,
                'filter_description'  => $description,
                'filter_category_id'  => $category_id,
                'filter_sub_category' => $sub_category,
                'sort'                => $sort,
                'order'               => $order,
                'start'               => ($page - 1) * $limit,
                'limit'               => $limit
            );

            $product_total = $this->model_catalog_product->getTotalProducts($filter_data);

            $results = $this->model_catalog_product->getProductsNew($filter_data);

            foreach ($results as $result) {

                if ( isset($result['image']) && is_file(DIR_IMAGE . $result['image']) ) {
                    $image = $this->model_tool_image->resize($result['image'], 262, 262);
                } else {
                    $image = $this->model_tool_image->resize('placeholder.png', 262, 262);
                }

                if ( isset($result['image2']) && is_file(DIR_IMAGE . $result['image2']) ) {
                    $image2 = $this->model_tool_image->resize($result['image2'], 262, 262);
                } elseif ( isset($result['image']) && is_file(DIR_IMAGE . $result['image']) ) {
                    $image2 = $this->model_tool_image->resize($result['image'], 262, 262);
                } else {
                    $image2 = $this->model_tool_image->resize('placeholder.png', 262, 262);
                }

                if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
                    $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')));
                } else {
                    $price = false;
                }

                if ((float)$result['special']) {
                    $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')));
                } else {
                    $special = false;
                }

                if ($result['price_old'] && $result['price_old'] != 0) {
                    $price_old = $this->currency->format($this->tax->calculate($result['price_old'], $result['tax_class_id'], $this->config->get('config_tax')));
                } else {
                    $price_old = false;
                }

                if ($this->config->get('config_tax')) {
                    $tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price']);
                } else {
                    $tax = false;
                }

                if ($this->config->get('config_review_status')) {
                    $rating = (int)$result['rating'];
                } else {
                    $rating = false;
                }

                /*code start*/
                if((strtotime(date('Y-m-d')) >= strtotime($result['promo_date_start'])) && (strtotime(date('Y-m-d')) <= strtotime($result['promo_date_end'])) || (($result['promo_date_start'] == '0000-00-00') && ($result['promo_date_end'] == '0000-00-00'))) {
                    $promo_on = TRUE;
                } else {
                    $promo_on = FALSE;
                }

                $promo = $this->model_catalog_product->getPromo($result['product_id'],$result['promo_top_right']);
                if (!empty($promo_on) && !empty($promo)) {
                    $promotag = $promo['name'];
                } else {
                    $promotag = '';
                }
                /*code end*/

                $weight = $this->model_catalog_product->getProductAttributeValueById($result['product_id'], 12);

                $labels = [];

                if($result['price_old']>$result['price']){
                    //$labels['discount'] = '-'.( ceil((1-($result['price']/$result['price_old']))*100) ).'% <small>до 31.03</small>';
                    //$labels['discount'] = '-'.( floor($result['price_old']-$result['price']) ).' грн <small>до 30.06</small>';
                }

                $data['products'][] = array(
                    'product_id'  => $result['product_id'],
                    'sku'       => $result['model'],

                    'image_title' => isset($result['image_title']) ? $result['image_title'] : '',
                    'image_alt' => isset($result['image_alt']) ? $result['image_alt'] : '',

                    'thumb'       => $image,
                    'thumb_2'     => $image2,
                    'name'        => $result['name'],
                    'quantity'    => $result['quantity'],
                    'short_description' => utf8_substr(strip_tags(html_entity_decode($result['description_short'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('config_product_description_length')) . '..',
                    'description' => utf8_substr(strip_tags(html_entity_decode($result['description_short'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('config_product_description_length')) . '..',
                    'price'       => $price,
                    'price_old'   => $price_old,
                    'special'     => $special,
                    'tax'         => $tax,
                    'minimum'     => $result['minimum'] > 0 ? $result['minimum'] : 1,
                    'rating'      => $result['rating'],
                    //'href'        => $this->url->link('product/product', 'product_id=' . $result['product_id']),
                    'href'        => $this->config->get('mlseo_fpp_remove_search') ? $this->url->link('product/product', 'product_id=' . $result['product_id']) : $this->url->link('product/product', 'product_id=' . $result['product_id'] . $url),
                    'status'      => $result['status']=='1' || $result['quantity']==0,
                    /*code start*/
                    'promotag'        => $promotag,
                    /*code end*/

                    /*weight of product*/
                    'weight'    => $weight,

                    'labels'    => $labels
                );
            }


            $url = ''; if( ! empty( $this->request->get['mfp'] ) ) {$url .= '&mfp=' . $this->request->get['mfp']; }

            if (isset($this->request->get['search'])) {
                $url .= '&search=' . urlencode(html_entity_decode($this->request->get['search'], ENT_QUOTES, 'UTF-8'));
            }

            if (isset($this->request->get['tag'])) {
                $url .= '&tag=' . urlencode(html_entity_decode($this->request->get['tag'], ENT_QUOTES, 'UTF-8'));
            }

            if (isset($this->request->get['description'])) {
                $url .= '&description=' . $this->request->get['description'];
            }

            if (isset($this->request->get['category_id'])) {
                $url .= '&category_id=' . $this->request->get['category_id'];
            }

            if (isset($this->request->get['sub_category'])) {
                $url .= '&sub_category=' . $this->request->get['sub_category'];
            }

            if (isset($this->request->get['limit'])) {
                $url .= '&limit=' . $this->request->get['limit'];
            }

            $data['sorts'] = array();

            $data['sorts'][] = array(
                'text'  => $this->language->get('text_default'),
                'value' => 'p.sort_order-ASC',
                'href'  => $this->url->link('product/search', 'sort=p.sort_order&order=ASC' . $url)
            );

            $data['sorts'][] = array(
                'text'  => $this->language->get('text_name_asc'),
                'value' => 'pd.name-ASC',
                'href'  => $this->url->link('product/search', 'sort=pd.name&order=ASC' . $url)
            );

            $data['sorts'][] = array(
                'text'  => $this->language->get('text_name_desc'),
                'value' => 'pd.name-DESC',
                'href'  => $this->url->link('product/search', 'sort=pd.name&order=DESC' . $url)
            );

            $data['sorts'][] = array(
                'text'  => $this->language->get('text_price_asc'),
                'value' => 'p.price-ASC',
                'href'  => $this->url->link('product/search', 'sort=p.price&order=ASC' . $url)
            );

            $data['sorts'][] = array(
                'text'  => $this->language->get('text_price_desc'),
                'value' => 'p.price-DESC',
                'href'  => $this->url->link('product/search', 'sort=p.price&order=DESC' . $url)
            );

            if ($this->config->get('config_review_status')) {
                $data['sorts'][] = array(
                    'text'  => $this->language->get('text_rating_desc'),
                    'value' => 'rating-DESC',
                    'href'  => $this->url->link('product/search', 'sort=rating&order=DESC' . $url)
                );

                $data['sorts'][] = array(
                    'text'  => $this->language->get('text_rating_asc'),
                    'value' => 'rating-ASC',
                    'href'  => $this->url->link('product/search', 'sort=rating&order=ASC' . $url)
                );
            }

            $data['sorts'][] = array(
                'text'  => $this->language->get('text_model_asc'),
                'value' => 'p.model-ASC',
                'href'  => $this->url->link('product/search', 'sort=p.model&order=ASC' . $url)
            );

            $data['sorts'][] = array(
                'text'  => $this->language->get('text_model_desc'),
                'value' => 'p.model-DESC',
                'href'  => $this->url->link('product/search', 'sort=p.model&order=DESC' . $url)
            );

            $url = ''; if( ! empty( $this->request->get['mfp'] ) ) {$url .= '&mfp=' . $this->request->get['mfp']; }

            if (isset($this->request->get['search'])) {
                $url .= '&search=' . urlencode(html_entity_decode($this->request->get['search'], ENT_QUOTES, 'UTF-8'));
            }

            if (isset($this->request->get['tag'])) {
                $url .= '&tag=' . urlencode(html_entity_decode($this->request->get['tag'], ENT_QUOTES, 'UTF-8'));
            }

            if (isset($this->request->get['description'])) {
                $url .= '&description=' . $this->request->get['description'];
            }

            if (isset($this->request->get['category_id'])) {
                $url .= '&category_id=' . $this->request->get['category_id'];
            }

            if (isset($this->request->get['sub_category'])) {
                $url .= '&sub_category=' . $this->request->get['sub_category'];
            }

            if (isset($this->request->get['sort'])) {
                $url .= '&sort=' . $this->request->get['sort'];
            }

            if (isset($this->request->get['order'])) {
                $url .= '&order=' . $this->request->get['order'];
            }

            $data['limits'] = array();

            $limits = array_unique(array($this->config->get('config_product_limit'), 96));

            sort($limits);

            foreach($limits as $value) {
                $data['limits'][] = array(
                    'text'  => $value,
                    'value' => $value,
                    'href'  => $this->url->link('product/search', $url . '&limit=' . $value)
                );
            }

            $url = ''; if( ! empty( $this->request->get['mfp'] ) ) {$url .= '&mfp=' . $this->request->get['mfp']; }

            if (isset($this->request->get['search'])) {
                $url .= '&search=' . urlencode(html_entity_decode($this->request->get['search'], ENT_QUOTES, 'UTF-8'));
            }

            if (isset($this->request->get['tag'])) {
                $url .= '&tag=' . urlencode(html_entity_decode($this->request->get['tag'], ENT_QUOTES, 'UTF-8'));
            }

            if (isset($this->request->get['description'])) {
                $url .= '&description=' . $this->request->get['description'];
            }

            if (isset($this->request->get['category_id'])) {
                $url .= '&category_id=' . $this->request->get['category_id'];
            }

            if (isset($this->request->get['sub_category'])) {
                $url .= '&sub_category=' . $this->request->get['sub_category'];
            }

            if (isset($this->request->get['sort'])) {
                $url .= '&sort=' . $this->request->get['sort'];
            }

            if (isset($this->request->get['order'])) {
                $url .= '&order=' . $this->request->get['order'];
            }

            if (isset($this->request->get['limit'])) {
                $url .= '&limit=' . $this->request->get['limit'];
            }

            // $pagination = new Pagination();
            // $pagination->total = $product_total;
            // $pagination->page = $page;
            // $pagination->limit = $limit;
            // $pagination->text_first = '&lt;&lt;';
            // $pagination->text_last = '&gt;&gt;';
            // $pagination->text_next = '&gt;';
            // $pagination->text_prev = '&lt;';
            // $pagination->url = $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url . '&page={page}');
            //
            // $data['pagination'] = $pagination->render();
            //
            // if($pagination->limit && ceil($pagination->total / $pagination->limit) > $pagination->page) { $this->document->addLink($this->url->link('product/category', 'path=' . $this->request->get['path'] . $url . '&page='. ($pagination->page + 1)), 'next'); } if($pagination->page > 1) { $this->document->addLink($this->url->link('product/category', 'path=' . $this->request->get['path'] . $url . '&page='. ($pagination->page - 1)), 'prev'); }
            //
            // $data['results'] = sprintf($this->language->get('text_pagination'), ($product_total) ? (($page - 1) * $limit) + 1 : 0, ((($page - 1) * $limit) > ($product_total - $limit)) ? $product_total : ((($page - 1) * $limit) + $limit), $product_total, ceil($product_total / $limit));

            $pagination = new Pagination();
            $pagination->total = $product_total;
            $pagination->page = $page;
            $pagination->limit = $limit;
            $pagination->text_first = '&lt;&lt;';
            $pagination->text_last = '&gt;&gt;';
            $pagination->text_next = '&gt;';
            $pagination->text_prev = '&lt;';
            $pagination->url = $this->url->link('product/search', $url . '&page={page}');            

            $data['pagination'] = $pagination->render();

            $data['results'] = sprintf($this->language->get('text_pagination'), ($product_total) ? (($page - 1) * $limit) + 1 : 0, ((($page - 1) * $limit) > ($product_total - $limit)) ? $product_total : ((($page - 1) * $limit) + $limit), $product_total, ceil($product_total / $limit));

            $start_product = ((($page - 1) * $limit) + $limit);
            $data['product_total'] = $product_total;
            $data['start_product'] = ($start_product > $product_total) ? $product_total : $start_product;
            $data['limit_product'] = $limit;

            $data['downloadMore'] = ($limit >= $product_total) ? false : true;
        }

        $data['search'] = $search;
        $data['description'] = $description;
        $data['category_id'] = $category_id;
        $data['sub_category'] = $sub_category;

        $data['sort'] = $sort;
        $data['order'] = $order;
        $data['limit'] = $limit;


                    if($this->GMTMaster && !empty($data['products'])) {
                        $this->GMTMaster->add_data('product_listed', $data['products']);
                        $this->GMTMaster->set_script('begin_head', $this->GoogleEnhancedEcommerce->get_impressions_product_code($data['products']));
                    }
                
        $data['column_left'] = $this->load->controller('common/column_left');
        $data['column_right'] = $this->load->controller('common/column_right');
        $data['content_top'] = $this->load->controller('common/content_top');
        $data['content_bottom'] = $this->load->controller('common/content_bottom');
        $data['footer'] = $this->load->controller('common/footer');
        $data['header'] = $this->load->controller('common/header');

        $data['languagese'] = $this->language->getGroupData();

        if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/search.tpl')) {

            if( isset( $this->request->get['mfilterAjax'] ) ) {
                $settings    = $this->config->get('mega_filter_settings');
                $baseTypes    = array( 'stock_status', 'manufacturers', 'rating', 'attributes', 'price', 'options', 'filters' );

                if( isset( $this->request->get['mfilterBTypes'] ) ) {
                    $baseTypes = explode( ',', $this->request->get['mfilterBTypes'] );
                }

                if( ! empty( $settings['calculate_number_of_products'] ) || in_array( 'categories:tree', $baseTypes ) ) {
                    if( empty( $settings['calculate_number_of_products'] ) ) {
                        $baseTypes = array( 'categories:tree' );
                    }

                    $this->load->model( 'module/mega_filter' );

                    $idx = 0;

                    if( isset( $this->request->get['mfilterIdx'] ) )
                        $idx = (int) $this->request->get['mfilterIdx'];

                    $data['mfilter_json'] = json_encode( MegaFilterCore::newInstance( $this, NULL )->getJsonData($baseTypes, $idx) );
                }

                $data['header'] = $data['column_left'] = $data['column_right'] = $data['content_top'] = $data['content_bottom'] = $data['footer'] = '';
            }

            if( ! empty( $data['breadcrumbs'] ) && ! empty( $this->request->get['mfp'] ) ) {
                foreach( $data['breadcrumbs'] as $mfK => $mfBreadcrumb ) {
                    $mfReplace = preg_replace( '/path\[[^\]]+\],?/', '', $this->request->get['mfp'] );
                    $mfFind = ( mb_strpos( $mfBreadcrumb['href'], '?mfp=', 0, 'utf-8' ) !== false ? '?mfp=' : '&mfp=' );

                    $data['breadcrumbs'][$mfK]['href'] = str_replace(array(
                        $mfFind . $this->request->get['mfp'],
                        '&amp;mfp=' . $this->request->get['mfp'],
                        $mfFind . urlencode( $this->request->get['mfp'] ),
                        '&amp;mfp=' . urlencode( $this->request->get['mfp'] )
                    ), $mfReplace ? $mfFind . $mfReplace : '', $mfBreadcrumb['href'] );
                }
            }

            $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/search.tpl', $data));
        } else {

            if( isset( $this->request->get['mfilterAjax'] ) ) {
                $settings    = $this->config->get('mega_filter_settings');
                $baseTypes    = array( 'stock_status', 'manufacturers', 'rating', 'attributes', 'price', 'options', 'filters' );

                if( isset( $this->request->get['mfilterBTypes'] ) ) {
                    $baseTypes = explode( ',', $this->request->get['mfilterBTypes'] );
                }

                if( ! empty( $settings['calculate_number_of_products'] ) || in_array( 'categories:tree', $baseTypes ) ) {
                    if( empty( $settings['calculate_number_of_products'] ) ) {
                        $baseTypes = array( 'categories:tree' );
                    }

                    $this->load->model( 'module/mega_filter' );

                    $idx = 0;

                    if( isset( $this->request->get['mfilterIdx'] ) )
                        $idx = (int) $this->request->get['mfilterIdx'];

                    $data['mfilter_json'] = json_encode( MegaFilterCore::newInstance( $this, NULL )->getJsonData($baseTypes, $idx) );
                }

                $data['header'] = $data['column_left'] = $data['column_right'] = $data['content_top'] = $data['content_bottom'] = $data['footer'] = '';
            }

            if( ! empty( $data['breadcrumbs'] ) && ! empty( $this->request->get['mfp'] ) ) {
                foreach( $data['breadcrumbs'] as $mfK => $mfBreadcrumb ) {
                    $mfReplace = preg_replace( '/path\[[^\]]+\],?/', '', $this->request->get['mfp'] );
                    $mfFind = ( mb_strpos( $mfBreadcrumb['href'], '?mfp=', 0, 'utf-8' ) !== false ? '?mfp=' : '&mfp=' );

                    $data['breadcrumbs'][$mfK]['href'] = str_replace(array(
                        $mfFind . $this->request->get['mfp'],
                        '&amp;mfp=' . $this->request->get['mfp'],
                        $mfFind . urlencode( $this->request->get['mfp'] ),
                        '&amp;mfp=' . urlencode( $this->request->get['mfp'] )
                    ), $mfReplace ? $mfFind . $mfReplace : '', $mfBreadcrumb['href'] );
                }
            }

            $this->response->setOutput($this->load->view('default/template/product/search.tpl', $data));
        }
    }
    public function ajax()
    {
        // Contains results
        $data = array();
        if( isset($this->request->get['keyword']) ) {
            // Parse all keywords to lowercase
            $keywords = $this->db->escape( $this->request->get['keyword'] );
            // Perform search only if we have some keywords
            if( strlen($keywords) >= 3 ) {
                $parts = explode( ' ', $keywords );
                $add = '';
                // Generating search
                foreach( $parts as $part ) {
                    $add .= ' AND (LOWER(pd.name) LIKE "%' . $this->db->escape($part) . '%"';
                    $add .= ' OR LOWER(p.model) LIKE "%' . $this->db->escape($part) . '%")';
                }
                $add = substr( $add, 4 );
                $sql  = 'SELECT pd.product_id, pd.name, p.model, p.image, p.price, p.tax_class_id FROM ' . DB_PREFIX . 'product_description AS pd ';
                $sql .= 'LEFT JOIN ' . DB_PREFIX . 'product AS p ON p.product_id = pd.product_id ';
                $sql .= 'LEFT JOIN ' . DB_PREFIX . 'product_to_store AS p2s ON p2s.product_id = pd.product_id ';
                $sql .= 'WHERE ' . $add . ' AND p.status = 1 ';
                $sql .= 'AND pd.language_id = ' . (int)$this->config->get('config_language_id');
                $sql .= ' AND p2s.store_id =  ' . (int)$this->config->get('config_store_id');
                $sql .= ' ORDER BY p.sort_order ASC, LOWER(pd.name) ASC, LOWER(p.model) ASC';
                $sql .= ' LIMIT 15';
                $res = $this->db->query( $sql );
                if( $res ) {
                    $data = ( isset($res->rows) ) ? $res->rows : $res->row;

                    // For the seo url stuff
                    $basehref = 'product/product&keyword=' . $this->request->get['keyword'] . '&product_id=';
                    $this->load->model('tool/image');
                    foreach( $data as $key => $values ) {
                        $data[$key] = array(
                            'name' => htmlspecialchars_decode($values['name'] . ' (' . $values['model'] . ')', ENT_QUOTES),
                            'href' => $this->url->link($basehref . $values['product_id']),
                            'img'  => $this->model_tool_image->resize((($values['image'] && file_exists(DIR_IMAGE . $values['image']))? $values['image'] : 'no_image.jpg'), 64, 64),
                            'price' => $this->currency->format($this->tax->calculate($values['price'], $values['tax_class_id'], $this->config->get('config_tax')), '', '', true, false),
                        );
                    }
                }
            }
        }
        echo json_encode( $data );
    }

    public function downloadMoreProducts() {

        $json = array();

        $data = array();

        $data['products'] = array();

        $this->load->model('catalog/product');

        $this->load->model('tool/image');

        $start = (int)$this->request->post['start'];
        $limit = (int)$this->request->post['limit'];

     //    if(isset($this->request->post['sort'])){
     //        $sort = $this->request->post['sort'];
     //    } else {
     //        $sort = '';
     //    }

     //    if(isset($this->request->post['order'])){
     //        $order = $this->request->post['order'];
        // } else {
        //     $order = '';
        // }

        if(isset($this->request->post['search'])){
            $search = $this->request->post['search'];
        } else {
            $search = '';
        }

        $sdata = array(
            'filter_name'         => $search,
            'start'                   => $start,
   //          'sort'                   => $sort,
            // 'order'                  => $order,
            'limit'                   => $limit
        );

        $products_total = $this->model_catalog_product->getTotalProducts($sdata);
        $results = $this->model_catalog_product->getProducts($sdata);

        $json['total'] = $products_total;

        if ($results) {
            foreach ($results as $result) {

                if ( isset($result['image']) && is_file(DIR_IMAGE . $result['image']) ) {
                    $image = $this->model_tool_image->resize($result['image'], 262, 262, true);
                } else {
                    $image = $this->model_tool_image->resize('placeholder.png', 262, 262);
                }

                if ( isset($result['image2']) && is_file(DIR_IMAGE . $result['image2']) ) {
                    $image2 = $this->model_tool_image->resize($result['image2'], 262, 262, true);
                } elseif ( isset($result['image']) && is_file(DIR_IMAGE . $result['image']) ) {
                    $image2 = $this->model_tool_image->resize($result['image'], 262, 262, true);
                } else {
                    $image2 = $this->model_tool_image->resize('placeholder.png', 262, 262);
                }

                if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
                    $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')));
                } else {
                    $price = false;
                }

                if ($result['price_old'] && $result['price_old'] != 0) {
                    $price_old = $this->currency->format($this->tax->calculate($result['price_old'], $result['tax_class_id'], $this->config->get('config_tax')));
                } else {
                    $price_old = false;
                }

                $href = $this->url->link('product/product', '&product_id=' . $result['product_id']);

                $promo = $this->model_catalog_product->getPromo($result['product_id'],$result['promo_top_right']);
                if ( !empty($promo) ) {
                    $promotag = $promo['name'];
                } else {
                    $promotag = '';
                }

                $data['products'][] = array(
                    'product_id'  => $result['product_id'],
                    'thumb'       => $image,
                    'thumb2'      => $image2,
                    'name'        => $result['name'],
                    'price'       => $price,
                    'price_old'   => $price_old,
                    'href'        => $href,
                    'promotag'      => $promotag,
                );
            }
            $json['success'] = $this->load->view($this->config->get('config_template') . '/template/product/category_ajax.tpl', $data);
        } else {
            $json['success'] = false;
        }

        $this->response->addHeader('Content-Type: application/json');
        $this->response->setOutput(json_encode($json));

    }
}
 

product/search.tpl

Spoiler

<?php echo $header; ?>

    <div class="content-wrap">
        <div class="breadcrumbs-box">
            <ul class="breadcrumb">
                <?php foreach ($breadcrumbs as $i => $breadcrumb) { ?>
                    <li><?php if ($i + 1 < count($breadcrumbs)) { ?><a
                            href="<?php echo $breadcrumb['href']; ?>"><?php echo $breadcrumb['text']; ?></a> <?php } else { ?>
                            <span><?php echo $breadcrumb['text']; ?></span><?php } ?></li>
                <?php } ?>
            </ul>
        </div>
        <div class="catalog-section">
            <div class="main-title"><?php echo $heading_title; ?></div>
            <div id="content" class="col-sm-9">
                <div class="catalog-content catalog-2-content">
                    <?php if($products) { ?>

                    <div class="drop-filter-row">
                        <!-- <div class="filter-wrap sort-by">
                            <div class="select-title"><?php echo $text_sort; ?></div>
                            <select class="custom" data-jcf='{"wrapNative": false, "wrapNativeOnMobile": false, "fakeDropInBody": true}' onchange="location = this.value;">
                                <?php foreach ($sorts as $sorts) { ?>
                                    <?php if ($sorts['value'] == $sort . '-' . $order) { ?>
                                        <option value="<?php echo $sorts['href']; ?>"
                                                selected="selected"><?php echo $sorts['text']; ?></option>
                                    <?php } else { ?>
                                        <option
                                            value="<?php echo $sorts['href']; ?>"><?php echo $sorts['text']; ?></option>
                                    <?php } ?>
                                <?php } ?>
                            </select>
                        </div> -->
                        <div class="filter-wrap items-amount">
                            <div class="select-title"><?php echo $text_limit; ?></div>
                            <select class="custom" data-jcf='{"wrapNative": false, "wrapNativeOnMobile": false, "fakeDropInBody": true}' onchange="location = this.value;">
                                <?php foreach ($limits as $limits) { ?>
                                    <?php if ($limits['value'] == $limit) { ?>
                                        <option value="<?php echo $limits['href']; ?>"
                                                selected="selected"><?php echo $limits['text']; ?></option>
                                    <?php } else { ?>
                                        <option
                                            value="<?php echo $limits['href']; ?>"><?php echo $limits['text']; ?></option>
                                    <?php } ?>
                                <?php } ?>
                            </select>
                        </div>
                    </div>

                        <div class="product-items-row" id="productsMore">
                            <?php foreach ($products as $product) { ?>
                                <div class="item<?=empty($product['status'])?' not-in-stock':''?>" data-id="<?php echo $product['product_id']; ?>" data-category="<?php echo (isset($product['category']) ? $product['category'] : ''); ?>">
                                    <div class="image-box categoryConteerImage">
                                        <div class="image-wrap">
                                            <a href="<?php echo $product['href']; ?>" class="main-img" title="<?=$product['name']?>">
                                                <?php if(!empty($product['labels'])): ?>
                                                    <div class="product-labels">
                                                        <?php foreach($product['labels'] as $labelClass=>&$labelText): ?>
                                                            <div class="product-label product-label-<?=$labelClass?>"><?=$labelText?></div>
                                                        <?php endforeach; ?>
                                                    </div>
                                                <?php endif; ?>
                                                <img src="<?php echo $product['thumb']; ?>"
                                                     title="Фото <?php echo $product['name']; ?>"
                                                     alt="<?php echo $product['name']; ?>" />
                                            </a>
                                            <?php if (isset($product['thumb2'])) { ?>
                                                <a href="<?php echo $product['href']; ?>" class="hover-img">
                                                    <img src="<?php echo $product['thumb2']; ?>"
                                                         title="Фото <?php echo $product['name']; ?>"
                                                         alt="<?php echo $product['name']; ?>" />
                                                </a>
                                            <?php } ?>
                                        </div>
                                    </div>
                                    <div class="text-box">
                                        <div class="title">
                                            <a href="<?php echo $product['href']; ?>" title="<?=$product['name']?>">
                                                <?=$product['name']?>
                                            </a>
                                        </div>
                                        <?php if ($product['price']) { ?>
                                            <p class="price-row">
                                                <?php if(empty($product['status'])) { ?>
                                                    <span class="stock">Нет в наличии</span>
                                                 <?php }
                                                    elseif(!empty($product['price_old'])){ ?>

                                                        <?php if($product['price_old']){ ?>
                                                            <span class="striked-price"><?=$product['price_old']?></span><br>
                                                        <?php } ?>
                                                        <span style="display:none;" class="product-weight"><?=str_replace(',', '.', $product['weight'])?> г</span>
                                                <?php } ?>
                                                <span class="price"><?=$product['price']?></span>
                                            </p>
                                            <div class="hover-only-box buy-row">
                                                <div class="buy-row-inner">
                                                    <button type="button"
                                                            class="basket-btn button-cart_category"
                                                            data-id="<?php echo $product['product_id']; ?>"></button>

                                                    <a href="<?php echo $product['href']; ?>" class="btn-product-details">
                                                        <?=$read_more?>
                                                    </a>
                                                </div>
                                                <div class="art-row-inner">
                                                    <span class="pr-art"><?=$product['sku']?></span>
                                                </div>
                                            </div>
                                        <?php } ?>
                                    </div>
                                    <?php if ($product['promotag']) { ?>
                                        <div class="hit-box"><?php echo $product['promotag']; ?></div>
                                    <?php } ?>9
                                </div>
                            <?php } ?>
                        </div>

                    <div class="control-wrap">
                      <div class="items-amount-info"><?php echo $results; ?></div>
                      <?php echo $pagination; ?>
                      <?php $owl = false; if($owl){ ?>
                        <div class="items-amount-info">
                            <?php echo $text_1; ?>
                            <span id="counter" >1 - <?php echo $start_product; ?></span>
                            <?php echo $text_2; ?>
                            <span><?php echo $product_total; ?></span>
                            <?php echo $text_3; ?>
                        </div>
                        <?php if ($downloadMore) { ?>
                            <div class="more-products-btn"
                                 onclick="downloadMoreProductsSearch(<?=$start_product?>, <?=$limit_product; ?>, '<?=$search?>'); return false;" data-role="downloadMoreProductsSearch">
                                <?php echo $text_4; ?>
                            </div>
                       <?php } } ?>
                    </div>

                    <?php }; ?>
                </div>
            </div>
        </div>
        <div class="seo-section"></div>
    </div>

<?php echo $footer; ?>
 

 

Надіслати
Поділитися на інших сайтах


4 hours ago, Blast said:

часть url потерялась

ссылка

https://silvex925.com.ua/page-3?search=кольцо

а должна быть

https://silvex925.com.ua/search/page-3?search=кольцо

Я так понимаю за формирование данной ссылки отвечает срока

$pagination->url = $this->url->link('product/search', 'search' . $url . '&page={page}');

Может знаете как ее нужно изменить что бы стала корректно работать? 

Надіслати
Поділитися на інших сайтах


11 часов назад, Valery332 сказал:

Я так понимаю за формирование данной ссылки отвечает срока

$pagination->url = $this->url->link('product/search', 'search' . $url . '&page={page}');

Может знаете как ее нужно изменить что бы стала корректно работать? 

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

$pagination->url = $this->url->link('product/search', $url . '&page={page}');  

 

ищите причину в других модулях, которые видимо отвечают за SEO URL, т.к. по-умолчанию ссылки формируются вида search?&search=кольцо&page=3

а у вас /page-3?search=кольцо

т.е. page-3 вынесено из get-параметра

 

 

и посмотрите файл контроллера в папке modification, может там другой код

Змінено користувачем Blast
Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.