Тут например фича для админки после нажатия кнопки System Cache весь кеш системы удалиться включая сео
Да простите просто тороплюсь, из за этого и наделал ошибок... сейчас все получилось все работает. Действительно надо просто терпение,все вернул на места теперь все заработало. Кстати нащёл платный модуль под названием "Модуль управления SeoPro". тут Он делает возможность всю работу проделать из админке простыми действиями, очень будет полезен для новичков как я ))
Florenco, прав на все 1000% Есть бесплатный модуль и он уже давно есть в отличии от етой ничем не отличающейся переделки от freelancerа на отличный доделанный costas ом модуль Yesvik который есть бесплатным!!! Ссылку я давал в первых сообщениях, видимо не заметили Вы, вот тут он
Доброе утро! Помогите пожалуйста у меня проблема с которой мучаюсь уже 2 недели!!! Не работает ЧПУ на новости index.php?route=information/news/info&news_id=2 все остальные ссылки на сайте работают! модуль easy_news_v1.0. ЧПУ в настройках включены. Высылаю сразу файл seo_url.php Прошу ВАС ПОМОГИТЕ! PHP: <?phpclass 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) == 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/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('&', '&', $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; } } }?> Заранее спасибо!
Katrin123457, а какой модуль новостей вы используете? У вас в этом файле ожидается, что путь к новостям news/news, а он у вас на самом деле information/news, судя по вашей ссылке. Судя по файлу у вас ещё есть PAVO BLOG, почему вы не используете его?
PAVO BLOG там так же не генерируются ссылки...:((( С ним я тоже намучилась. Я к сожалению неопытный пользователь в этом вопросе Но надо сделать, вот прошу у Вас помощи! Я как понимаю мне надо в этом файле поменять news/news на information/news, поменяла ссылка осталась та же.... Что можно сделать еще или я не правильно поняла?
А что если для работы чпу в PavBlog подключить его контроллер чпу? Насколько я помню у него есть свой контролер. Модуль новостей что вы тут рассматриваете я даже не пробовал, а вот блог как-то заставлял работать, помню только что были проблемы но как-то их решил. Итак 1) Назначить чпу блогу и записям 2)проверить доступность по ссылке чпу блога и информационного элемента (записи) - т.е. понятно что даже если ссылка формируется не чпу, то проверить вбив в адресной строке ЧПУ вариант и посмотреть работает или нет. 3)Если ЧПУ не работате попробовать подключить другой контроллер (это файл index.php в корне, кажется). 4)если чпу работает, но ссылки формируются движком без ЧПУ, то будем думать дальше.
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= Что можно еще сделать?
Увы, рекомендация по п.2 на деле и у меня не работала. А если попробовать перенаправить контроллер как в п.1 ? у меня в этом случае работал блог но не работали категории магазина. Насколько я помню, в итоге через паладин как-то замудрил, по крайней мере сайт где чпу в блоге работают у меня есть. По вашей ссылке еще вижу внизу запрос на создание полей, есть такие? Код: ALTER TABLE `oc_pavblog_blog` ADD `keyword` VARCHAR( 255 ) NOT NULL;' ALTER TABLE `oc_pavblog_category` ADD `keyword` VARCHAR( 255 ) NOT NULL;
Blog Manager нормально дружит со встроенным ЧПУ и SeoPro. Только для SeoPro в сети VQMOD нужно найти.
У меня наверно похожая проблема. Когда нажимаю на "О нас" при включенном ЧПУ, то направляет на товар. В Статье указан СЕО about, но внизу ссылка ведет на about_us. Как исправить?
DjKeng, как понять "В Статье указан СЕО about" ? Что указано в админке, статьи, о нас ? Что за чпу там ? Кэш чистили ?
Похоже, у вас в футере ссылка не генерируется стандартными средствами, а вбита прямо в шаблон, потому SEO Url из настроек статьи и не подхватывается. Редактируйте footer.tpl вашего шаблона. Самый простой вариант - просто найти там эту ссылку и подправить, но лучше сделать её генерируемой (посмотрите, как выводятся другие ссылки).
Всем здрасти. Будьте любезны, помогите разобраться с ошибкой: 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'; }
прошу помощи с урл модуля статей-новостей. страницы http://mimics.ru/index.php?route=news/article&news_id=16 Файл catalog/controller/common/seo_url.php PHP: <?phpclass 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('&', '&', $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('&', '&', 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; } }}