Jump to content
Sign in to follow this  
romasimeiz

Не работает rewrite SEO URL's для стандартных страниц

Recommended Posts

Добрый день! Помогите пожалуйста.
На opencart магазине, стоит vqmod и pavblog.
Мне нужно сделать ЧПУ ссылки для таких страниц как contact-us, sitemap и т.д.
нашёл простенькое решение которое заработало на чистом opencart.
на реальном магазине стоит vqmod и pavblog, не работает.
Сделал вот что :
подключил родной котроллер common/seo_url вместо pavblog/seo в index.php
подключил к seo_url код, чтобы он мог работать и для pavblog и для родных opencart ссылок.

<?php 
сlass ControllerCommonSeoUrl extends Controller {
    public function index() {
        // Add rewrite to url class
        if ($this->config->get('config_seo_url')) {
            $this->url->addRewrite($this);
        }
        
        // Decode URL
        if (isset($this->request->get['_route_'])) {
            $parts = explode('/', $this->request->get['_route_']);
            /** BEGIN PROCESSING TO DECORD REQUET SEO URL FOR PAVO BLOG MODULE **/
            $blogConfig = $this->config->get('pavblog');
            $seo = isset($blogConfig['keyword_listing_blogs_page'])?trim($blogConfig['keyword_listing_blogs_page']):"blogs";
            if( $this->request->get['_route_'] == $seo ){
            $this->request->get['route'] = 'pavblog/blogs';
            return $this->forward($this->request->get['route']);
            } /** END OF PROCESSING TO DECORD REQUET SEO URL FOR PAVO BLOG MODULE **/ 
            
            foreach ($parts as $part) {
                $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE keyword = '" . $this->db->escape($part) . "'");
                
                if ($query->num_rows) {
                    $url = explode('=', $query->row['query']);
                    
                    if ($url[0] == 'product_id') {
                        $this->request->get['product_id'] = $url[1];
                    }
                    
                    if ($url[0] == 'category_id') {
                        if (!isset($this->request->get['path'])) {
                            $this->request->get['path'] = $url[1];
                        } else {
                            $this->request->get['path'] .= '_' . $url[1];
                        }
                    }   
                    
                    if ($url[0] == 'manufacturer_id') {
                        $this->request->get['manufacturer_id'] = $url[1];
                    }
                    
                    if ($url[0] == 'information_id') {
                        $this->request->get['information_id'] = $url[1];
                    }   
 
                    /** BEGIN PROCESSING TO DECORD REQUET SEO URL FOR PAVO BLOG MODULE **/
                    if( count($url) == 2 && ( preg_match( "#pavblog#", $url[0] )) ){
                    $this->request->get['route'] = $url[0];
                    $this->request->get['id'] = $url[1];
                    } /** END OF PROCESSING TO DECORD REQUET SEO URL FOR PAVO BLOG MODULE **/
                } else {
                    $this->request->get['route'] = 'error/not_found';   
                }
            }
            
            if (isset($this->request->get['product_id'])) {
                $this->request->get['route'] = 'product/product';
            } elseif (isset($this->request->get['path'])) {
                $this->request->get['route'] = 'product/category';
            } elseif (isset($this->request->get['manufacturer_id'])) {
                $this->request->get['route'] = 'product/manufacturer/info';
            } elseif (isset($this->request->get['information_id'])) {
                $this->request->get['route'] = 'information/information';
            } else {
                echo "pered query";
                $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE keyword = '" . $this->db->escape($this->request->get['_route_']) . "'");
                echo "posle query";                
                if ($query->num_rows) {
                    $this->request->get['route'] = $query->row['query'];
 
                }
           }
            
            if (isset($this->request->get['route'])) {
                return $this->forward($this->request->get['route']);
            }
        }
    }
    
    public function rewrite($link) {
        $url_info = parse_url(str_replace('&', '&', $link));
    
        $url = ''; 
        
        $data = array();
        
        parse_str($url_info['query'], $data);
        
        foreach ($data as $key => $value) {
            if (isset($data['route'])) {
                if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/info' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) {
                    $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "'");
                
                    if ($query->num_rows) {
                        $url .= '/' . $query->row['keyword'];
                        
                        unset($data[$key]);
                    }                   
                } elseif ($key == 'path') {
                    $categories = explode('_', $value);
                    
                    foreach ($categories as $category) {
                        $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = 'category_id=" . (int)$category . "'");
                
                        if ($query->num_rows) {
                            $url .= '/' . $query->row['keyword'];
                        }                           
                    }
                    
                    unset($data[$key]);
                }
                elseif ($key == 'route') {
                        $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = '" . $this->db->escape($data['route']) . "'");
 
                        if ($query->num_rows) {
                            $url .= '/' . $query->row['keyword'];
 
                            unset($data[$key]);
                             echo "this is root: $url <br>";
                        }
                       
                }
            }
        }   
 
        /** BEGIN PROCESSING TO REWRITE SEO URL FOR  PAVO BLOG MODULE **/
        if ( ( preg_match( "#pavblog#", $data['route'] ))  && isset($data['id']) ) { 
            $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = '" . $this->db->escape( $data['route'] . '=' .$data['id']) . "'");
            if ($query->num_rows) {
                $url .= '/' . $query->row['keyword'];
                unset($data[$key]);
                unset($data['id']);
            }                   
        }  else if( $data['route'] == 'pavblog/blogs' ){ 
            $blogConfig = $this->config->get('pavblog');
            $seo = isset($blogConfig['keyword_listing_blogs_page'])?trim($blogConfig['keyword_listing_blogs_page']):"blogs"; 
            $url .= '/'.$seo;
        }
        /** END OF PROCESSING SEO URL FOR PAVO BLOG MODULE **/
    
        if ($url) {
            unset($data['route']);
        
            $query = '';
        
            if ($data) {
                foreach ($data as $key => $value) {
                    $query .= '&' . $key . '=' . $value;
                }
                
                if ($query) {
                    $query = '?' . trim($query, '&');
                }
            }
 
            return $url_info['scheme'] . '://' . $url_info['host'] . (isset($url_info['port']) ? ':' . $url_info['port'] : '') . str_replace('/index.php', '', $url_info['path']) . $url . $query;
        } else {
            return $link;
        }
    }   }?>

Всё работает и ЧПУ pavblog и ЧПУ opencart. Но почему то не меняются ссылки у Contact Us, Sitemap, короче у всего футера, кроме тех ссылок что в колонке Information. Сделал var_dump того, что должно прийти в качестве замены из url_alias - вроде приходит то что надо. Но в строке адреса ничего не меняется. sad.gif( Не знаю что искать, где копать ? Помогите sad.gif

Share this post


Link to post
Share on other sites

в url_alias есть записи для этих страниц которые не чпу у вас?

Share this post


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
You are posting as a guest. If you have an account, please sign in.
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.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.