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

Не работает 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

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


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

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

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

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

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

Вхід

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

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

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