Не работает ЧПУ в новостях

Тема в разделе "OpenCart", создана пользователем kuklev, 13 май 2013.

  1. nix

    nix php, MySQL, UNIX, MikroTik ROSAPI

    Регистрация:
    16 янв 2013
    Сообщения:
    1.000
    Симпатии:
    889
    Тут например фича для админки
    после нажатия кнопки System Cache весь кеш системы удалиться включая сео
     
  2. s7ranger

    s7ranger

    Регистрация:
    9 окт 2012
    Сообщения:
    73
    Симпатии:
    15
    А вообще на сколько важно ЧПУ для новостей?
     
  3. PapaLama

    PapaLama

    Регистрация:
    26 апр 2013
    Сообщения:
    27
    Симпатии:
    1
    Да простите просто тороплюсь, из за этого и наделал ошибок... сейчас все получилось все работает.
    Действительно надо просто терпение,все вернул на места теперь все заработало.
    Кстати нащёл платный модуль под названием "Модуль управления SeoPro". тут Он делает возможность всю работу проделать из админке простыми действиями, очень будет полезен для новичков как я ))
     
  4. Florenco

    Florenco

    Регистрация:
    3 мар 2013
    Сообщения:
    220
    Симпатии:
    101
    Там и бесплатный есть такой же, правда пока не тестировал его.
     
  5. craft37

    craft37

    Регистрация:
    2 фев 2013
    Сообщения:
    13
    Симпатии:
    0
     
  6. nix

    nix php, MySQL, UNIX, MikroTik ROSAPI

    Регистрация:
    16 янв 2013
    Сообщения:
    1.000
    Симпатии:
    889
    Florenco, прав на все 1000%
    Есть бесплатный модуль и он уже давно есть в отличии от етой ничем не отличающейся переделки от freelancerа на отличный доделанный costas ом модуль Yesvik который есть бесплатным!!!
    Ссылку я давал в первых сообщениях, видимо не заметили Вы, вот тут он
     
  7. Katrin123457

    Katrin123457

    Регистрация:
    1 июл 2014
    Сообщения:
    6
    Симпатии:
    0
    Доброе утро! Помогите пожалуйста у меня проблема с которой мучаюсь уже 2 недели!!! Не работает ЧПУ на новости index.php?route=information/news/info&news_id=2 все остальные ссылки на сайте работают! модуль easy_news_v1.0.
    ЧПУ в настройках включены. Высылаю сразу файл seo_url.php Прошу ВАС ПОМОГИТЕ!
    PHP:
    <?php
    class ControllerCommonSeoUrl extends Controller {
        private 
    $cache_data null;

        public function 
    __construct($registry) {
            
    parent::__construct($registry);
            
    $this->cache_data $this->cache->get('seo_url');
            if (!
    $this->cache_data) {
                
    $query $this->db->query("SELECT * FROM " DB_PREFIX "url_alias");

                
    $this->cache_data = array();
                foreach (
    $query->rows as $row) {
                    
    $this->cache_data['keywords'][$row['keyword']] = $row['query'];
                    
    $this->cache_data['queries'][$row['query']] = $row['keyword'];
                }
                
    $this->cache->set('seo_url'$this->cache_data);
            }
        }

        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) {
                    if (isset(
    $this->cache_data['keywords'][$part])) {
                        
    $query $this->cache_data['keywords'][$part];
                        
    $url explode('='$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] == 'news_id') {
        
    $this->request->get['news_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) == && ( 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/product';
                } elseif (isset(
    $this->request->get['information_id'])) {
                    
    $this->request->get['route'] = 'information/information';
                } elseif (isset(
    $this->request->get['news_id'])) {
                    
    $this->request->get['route'] = 'news/news';
               }
    /* SEO Custom URL 1 */
                
    else {
                                
    $query $this->db->query("SELECT * FROM " DB_PREFIX "url_alias WHERE keyword = '" $this->db->escape($this->request->get['_route_']) . "'");
                                if (
    $query->num_rows) {
                                        
    $this->request->get['route'] = $query->row['query'];
                                }
                     }
    /* SEO Custom URL 1 */

                
    if (isset($this->request->get['route'])) {
                    return 
    $this->forward($this->request->get['route']);
                }
            }
        }
      
        public function 
    rewrite($link) {
            if (
    $this->config->get('config_seo_url')) {
                
    $url_data parse_url(str_replace('&amp;''&'$link));
        
                
    $url '';
            
                
    $data = array();
            
                
    parse_str($url_data['query'], $data);
    ////////////        
                
    foreach ($data as $key => $value) {
                    if (isset(
    $data['route'])) {
                        if ((
    $data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/product' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id'))  {

                            if (isset(
    $this->cache_data['queries'][$key '=' . (int)$value])) {
                                
    $keyword $this->cache_data['queries'][$key '=' . (int)$value];
                                
    $url .= '/' $keyword;
                                unset(
    $data[$key]);
                            }
                        } elseif (
    $key == 'path') {
                            
    $categories explode('_'$value);
                        
                            foreach (
    $categories as $category) {
                                if (isset(
    $this->cache_data['queries']['category_id=' . (int)$category])) {
                                    
    $keyword $this->cache_data['queries']['category_id=' . (int)$category];
                                    
    $url .= '/' $keyword;
                                }
                            }
                        
                            unset(
    $data[$key]);
                        }
                        
    /* SEO Custom URL 2 */
    else {
                                                
    $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]);
                                                }
                                     }
    /* SEO Custom URL 2 */
                    
    }
                }
        
                if (
    $url) {
                    unset(
    $data['route']);
            
                    
    $query '';
            
                    if (
    $data) {
                        foreach (
    $data as $key => $value) {
                            
    $query .= '&' $key '=' $value;
                        }
                    
                        if (
    $query) {
                            
    $query '?' trim($query'&');
                        }
                    }

                    return 
    $url_data['scheme'] . '://' $url_data['host'] . (isset($url_data['port']) ? ':' $url_data['port'] : '') . str_replace('/index.php'''$url_data['path']) . $url $query;
                } else {
                    return 
    $link;
                }
            } else {
                return 
    $link;
            }    
        } 
    }
    ?>
    Заранее спасибо!
     
    Lasted edited by : 11 дек 2015
  8. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    2.042
    Симпатии:
    774
    Katrin123457, а какой модуль новостей вы используете?
    У вас в этом файле ожидается, что путь к новостям news/news, а он у вас на самом деле information/news, судя по вашей ссылке.

    Судя по файлу у вас ещё есть PAVO BLOG, почему вы не используете его?
     
  9. Katrin123457

    Katrin123457

    Регистрация:
    1 июл 2014
    Сообщения:
    6
    Симпатии:
    0
    PAVO BLOG там так же не генерируются ссылки...:((( С ним я тоже намучилась. Я к сожалению неопытный пользователь в этом вопросе :Smile: Но надо сделать, вот прошу у Вас помощи!
    Я как понимаю мне надо в этом файле поменять news/news на information/news, поменяла ссылка осталась та же.... Что можно сделать еще или я не правильно поняла?
     
  10. cereberlum

    cereberlum

    Регистрация:
    26 май 2013
    Сообщения:
    740
    Симпатии:
    266
    А что если для работы чпу в PavBlog подключить его контроллер чпу? Насколько я помню у него есть свой контролер. Модуль новостей что вы тут рассматриваете я даже не пробовал, а вот блог как-то заставлял работать, помню только что были проблемы но как-то их решил. Итак 1) Назначить чпу блогу и записям 2)проверить доступность по ссылке чпу блога и информационного элемента (записи) - т.е. понятно что даже если ссылка формируется не чпу, то проверить вбив в адресной строке ЧПУ вариант и посмотреть работает или нет. 3)Если ЧПУ не работате попробовать подключить другой контроллер (это файл index.php в корне, кажется).
    4)если чпу работает, но ссылки формируются движком без ЧПУ, то будем думать дальше.
     
  11. Katrin123457

    Katrin123457

    Регистрация:
    1 июл 2014
    Сообщения:
    6
    Симпатии:
    0
    http://www.pavothemes.com/guides/pavblog/#setup-seo сделала рекомендации п.2 (не генерирует)
    стоит SEO Pack генерирует pavblog/category=28
    2)проверить доступность по ссылке чпу блога- запрашиваемая страница не найдена
    index.php

    пробовала внести изменения
    // SEO URL's
    $controller->addPreAction(new Action('common/seo_url'));
    заменила на
    // PAVO BLOG SEO URL's
    $controller->addPreAction(new Action('pavblog/seo')); // SEO URL's
    /* $controller->addPreAction(new Action('common/seo_url')); */


    ссылка не генерируется, и сбиваются остальные ссылки. т.е. выпалывает index.php?route=
    Что можно еще сделать?
     
    Lasted edited by : 11 дек 2015
  12. cereberlum

    cereberlum

    Регистрация:
    26 май 2013
    Сообщения:
    740
    Симпатии:
    266
    Увы, рекомендация по п.2 на деле и у меня не работала. А если попробовать перенаправить контроллер как в п.1 ? у меня в этом случае работал блог но не работали категории магазина. Насколько я помню, в итоге через паладин как-то замудрил, по крайней мере сайт где чпу в блоге работают у меня есть. По вашей ссылке еще вижу внизу запрос на создание полей, есть такие?
    Код:
    ALTER TABLE `oc_pavblog_blog` ADD `keyword` VARCHAR( 255 ) NOT NULL;'
    
    ALTER TABLE `oc_pavblog_category` ADD `keyword` VARCHAR( 255 ) NOT NULL;
     
  13. Rusik

    Rusik

    Регистрация:
    21 янв 2013
    Сообщения:
    162
    Симпатии:
    51
    Up.
    Есть нормальные модули со своим чпу или поддерживающие seopro?
     
  14. VaLeXaR

    VaLeXaR

    Регистрация:
    24 мар 2015
    Сообщения:
    61
    Симпатии:
    84
    Blog Manager нормально дружит со встроенным ЧПУ и SeoPro. Только для SeoPro в сети VQMOD нужно найти.
     
  15. DjKeng

    DjKeng

    Регистрация:
    23 янв 2016
    Сообщения:
    10
    Симпатии:
    0
    У меня наверно похожая проблема. Когда нажимаю на "О нас" при включенном ЧПУ, то направляет на товар. В Статье указан СЕО about, но внизу ссылка ведет на about_us. Как исправить?
     
  16. skiv14

    skiv14

    Регистрация:
    9 июн 2015
    Сообщения:
    412
    Симпатии:
    159
    DjKeng, как понять "В Статье указан СЕО about" ?
    Что указано в админке, статьи, о нас ? Что за чпу там ?
    Кэш чистили ?
     
  17. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    2.042
    Симпатии:
    774
    Похоже, у вас в футере ссылка не генерируется стандартными средствами, а вбита прямо в шаблон, потому SEO Url из настроек статьи и не подхватывается. Редактируйте footer.tpl вашего шаблона. Самый простой вариант - просто найти там эту ссылку и подправить, но лучше сделать её генерируемой (посмотрите, как выводятся другие ссылки).
     
  18. DjKeng

    DjKeng

    Регистрация:
    23 янв 2016
    Сообщения:
    10
    Симпатии:
    0
    Писал сообщение уже плохо соображая в запаре) Благодарю!
     
  19. Ваган

    Ваган

    Регистрация:
    8 ноя 2013
    Сообщения:
    31
    Симпатии:
    1
    Всем здрасти.
    Будьте любезны, помогите разобраться с ошибкой:
    2016-05-11 9:39:52 - PHP Notice: Undefined index: in /home/a/arvaal/shop.arvaal.com/public_html/catalog/controller/common/seo_pro.php on line 55

    На 55 строке находится: $url = explode('=', $queries[$part], 2);
    Отрезок кода:
    PHP:
    if (count($rows) == sizeof($parts)) {
                    
    $queries = array();
                    foreach (
    $rows as $row) {
                        
    $queries[utf8_strtolower($row['keyword'])] = $row['query'];
                    }

                    
    reset($parts);
                    foreach (
    $parts as $part) {
                        
    $url explode('='$queries[$part], 2);

                        if (
    $url[0] == 'category_id') {
                            if (!isset(
    $this->request->get['path'])) {
                                
    $this->request->get['path'] = $url[1];
                            } else {
                                
    $this->request->get['path'] .= '_' $url[1];
                            }
                        } elseif (
    count($url) > 1) {
                            
    $this->request->get[$url[0]] = $url[1];
                        }
                    }
                } else {
                    
    $this->request->get['route'] = 'error/not_found';
                }
     
  20. Azazello77

    Azazello77

    Регистрация:
    13 июн 2015
    Сообщения:
    1
    Симпатии:
    0
    прошу помощи с урл модуля статей-новостей.

    страницы

    http://mimics.ru/index.php?route=news/article&news_id=16


    Файл catalog/controller/common/seo_url.php

    PHP:
    <?php
    class 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_']);

                
    // remove any empty arrays from trailing
                
    if (utf8_strlen(end($parts)) == 0) {
                    
    array_pop($parts);
                }

                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];
                        }
                       
                        if (
    $query->row['query'] && $url[0] != 'information_id' && $url[0] != 'manufacturer_id' && $url[0] != 'category_id' && $url[0] != 'product_id') {
                            
    $this->request->get['route'] = $query->row['query'];
                        }
                    } else {
                        
    $this->request->get['route'] = 'error/not_found';

                        break;
                    }
                }

                if (!isset(
    $this->request->get['route'])) {
                    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';
                    }
                }

                if (isset(
    $this->request->get['route'])) {
                    return new 
    Action($this->request->get['route']);
                }
            }
        }

        public function 
    rewrite($link) {
            
    $url_info parse_url(str_replace('&amp;''&'$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 && $query->row['keyword']) {
                            
    $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 && $query->row['keyword']) {
                                
    $url .= '/' $query->row['keyword'];
                            } else {
                                
    $url '';

                                break;
                            }
                        }

                        unset(
    $data[$key]);
                    }
                }
            }

            if (
    $url) {
                unset(
    $data['route']);

                
    $query '';

                if (
    $data) {
                    foreach (
    $data as $key => $value) {
                        
    $query .= '&' rawurlencode((string)$key) . '=' rawurlencode((string)$value);
                    }

                    if (
    $query) {
                        
    $query '?' str_replace('&''&amp;'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;
            }
        }
    }