Здравствуйте. Для того чтобы отображать местоположение товара (категорию) нужен правильный seo_url.php, тогда ссылка получается сайт/категория/субкатегория/товар.html. Тогда и хлебные крошки работают нормально и категорию отображает в модуле категорий на странице товара. Вопрос. Возможно ли поставить SEO Pack Pro и сохранить нормальный SEO URL? У меня не получается. стоит ли продолжать ковырять код? возможно ли это? как?
Админка -- Каталог -- SEO -- SEOPack Поле SEO Urls Generator уберите параметр .html Надеюсь что правильно понял вопрос
по ходу нет. в опене при переходе с главной на товар, ссылка на страницу имеет вид сайт/товар.html - это проблема опена, тогда, не отображает категории в модуле категорий и хлебных крошках. Лечится заменой файла seo_url.php. После замены ссылка получается сайт/категория/субкатегория/товар.html Когда ставлю SEO Pack Pro ошибки, потому что написан он под другой seo_url.php не тот что я заливаю. То есть, или не работает SEO Pack Pro, или формирует не полный урл, либо это я что то не то делаю?
Можно ссылку на сайт? Не совсем понятно какого рода ошибки и что работает не так как надо... Лично у меня, после установки SEO Pack Pro все так и осталось, как было (с точки зрения посетителя): Если заходишь на товар напрямую (напр. с модуля "Последние"), то ссылка вида site.ru/product Если заходишь сначала в категорию, потом в подкатегорию и в ней открываешь товар, то ссылка вида site.ru/category/subcategory/product
Так о чем я и говорю!!!! Я могу скинуть Вам seo_url.php который это поправит и тогда ссылка будет site.ru/category/subcategory/product. но тогда перестает работать SEO Pack Pro. сайт на денвере.
Хм, теперь понял вопрос, но ответ на него мне сейчас не известен. Интересно было бы посмотреть на этот файлик. Может быть стоит порыться в этих самых модулях на главной, а не в нем?
Проблема не в модулях, проблема именно в урл. Если у вас нормально стоит SEO Pack Pro, пожалуйста, попробуйте поменять свой /catalog/controller/common/seo_url.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_'])) { $route = urldecode($this->request->get['_route_']); unset($this->request->get['_route_']); $route = mb_strtolower($route, 'UTF-8'); $parts = explode('/', trim($route, '/')); list($last_part) = explode('.', array_pop($parts)); array_push($parts, $last_part); $keyword_in = array_map(array($this->db, 'escape'), $parts); $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE keyword IN ('" . implode("', '", $keyword_in) . "')"); if ($query->num_rows == sizeof($parts)) { $queries = array(); foreach ($query->rows as $row) { $queries[mb_strtolower($row['keyword'], 'UTF-8')] = $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]; } } else { $this->request->get[$url[0]] = $url[1]; } } } else { $this->request->get['route'] = 'error/not_found'; } if (isset($this->request->get['product_id'])) { $this->request->get['route'] = 'product/product'; if (!isset($this->request->get['path'])) { $path = $this->getPathByProduct($this->request->get['product_id']); if ($path) $this->request->get['path'] = $path; } } 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'; } if (isset($this->request->get['route'])) { return $this->forward($this->request->get['route']); } } } public function rewrite($link) { if (!$this->config->get('config_seo_url')) return $link; $seo_url = ''; $url_query = parse_url(str_replace('&', '&', $link), PHP_URL_QUERY); $data = array(); parse_str($url_query, $data); $route = $data['route']; unset($data['route']); switch ($route) { case 'product/product': if (isset($data['product_id'])) { $product_id = $data['product_id']; $data = array(); if ($this->config->get('config_seo_url_include_path')) { $data['path'] = $this->getPathByProduct($product_id); if (!$data['path']) return $link; } $data['product_id'] = $product_id; } break; case 'product/category': if (isset($data['path'])) { $category = explode('_', $data['path']); $category = end($category); $data['path'] = $this->getPathByCategory($category); if (!$data['path']) return $link; } break; default: break; } $seo_link = http_build_query(array_merge(array('route' => $route), $data), '', '&'); $seo_link = HTTP_SERVER . 'index.php?' . urldecode($seo_link); $queries = array(); foreach ($data as $key => $value) { switch ($key) { case 'product_id': case 'manufacturer_id': case 'category_id': case 'information_id': $queries[] = $key . '=' . $value; unset($data[$key]); break; case 'path': $categories = explode('_', $value); foreach ($categories as $category) { $queries[] = 'category_id=' . $category; } unset($data[$key]); break; default: break; } } if (!empty($queries)) { $query_in = array_map(array($this->db, 'escape'), $queries); $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` IN ('" . implode("', '", $query_in) . "')"); if ($query->num_rows == count($queries)) { $aliases = array(); foreach ($query->rows as $row) { $aliases[$row['query']] = $row['keyword']; } foreach ($queries as $query) { $seo_url .= '/' . $aliases[$query]; } } } if ($seo_url == '') return $seo_link; $seo_url .= trim($this->config->get('config_seo_url_postfix')); $seo_url .= count($data) ? '?' . urldecode(http_build_query($data)) : ''; $seo_url = rtrim(HTTP_SERVER, '/') . $seo_url; return $seo_url; } private function getPathByProduct($product_id) { $product_id = (int)$product_id; if ($product_id < 1) return false; static $path = null; if (!is_array($path)) { $path = $this->cache->get('product.seopath'); if (!is_array($path)) $path = array(); } if (!isset($path[$product_id])) { $query = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . $product_id . "' ORDER BY main_category DESC LIMIT 1"); $path[$product_id] = $this->getPathByCategory($query->num_rows ? (int)$query->row['category_id'] : 0); $this->cache->set('product.seopath', $path); } return $path[$product_id]; } private function getPathByCategory($category_id) { $category_id = (int)$category_id; if ($category_id < 1) return false; static $path = null; if (!is_array($path)) { $path = $this->cache->get('category.seopath'); if (!is_array($path)) $path = array(); } if (!isset($path[$category_id])) { $max_level = 10; $sql = "SELECT CONCAT_WS('_'"; for ($i = $max_level-1; $i >= 0; --$i) { $sql .= ",t$i.category_id"; } $sql .= ") AS path FROM " . DB_PREFIX . "category t0"; for ($i = 1; $i < $max_level; ++$i) { $sql .= " LEFT JOIN " . DB_PREFIX . "category t$i ON (t$i.category_id = t" . ($i-1) . ".parent_id)"; } $sql .= " WHERE t0.category_id = '" . $category_id . "'"; $query = $this->db->query($sql); $path[$category_id] = $query->num_rows ? $query->row['path'] : false; $this->cache->set('category.seopath', $path); } return $path[$category_id]; } } ?> по возможности отпишитесь. спасибо.
После замены файла, с модулей главной страницы перенаправляет на пустые страницы по адресу site.ru/product . Если заходить в категорию, затем в подкатегорию, а оттуда переходить на страницу товара, то ссылка делается такой же (site.ru/product) и страница, соответственно, пустая. Ранее эти страницы обладали содержимым
У меня на рабочем сайте посмотрите без SEO Pack Pro но с seo_url.php вот пытаюсь добиться того же результата но с SEO Pack Pro. Возможно его можно как нибудь настроить? или у меня рабочий но не тот seo_url.php, кароч ХЗ.
єти ошибки я уже заметил еще до создания темы, поэтому спросил то есть ошибки я отследил и придется переписывать. было бы это просто, то взял бы и переписал, но поскольку я с ПХП на расстоянии, придется немного учится, что существенно затянет процесс установки и напряжет заказчика. поэтому и спросил, возможно были случаи и возможно уже есть "велосипед"
А почему просто не поставть SeoPro и deatcow? Эта связка точно рабочая. Или в сеопак еще какие-то другие функции есть?
Если у вас действительно версия такая старая, я бы посоветовал обновиться. у меня крайний релиз ocStore 1.5.5.1.1 ссылка на файл https://dl.dropboxusercontent.com/u/69238886/seo_url.php
Разобрался В стандартную сборку ocStore 1.5.5.1.1 входит файл seo_pro.php, при выборе которого в настройках Тип ЧПУ: и можно выбрать вариант ЧПУ товаров с категориями: /category/subcategory/product (только для SeoPro). При этом некоторые функции SEO Pack Pro не работают, поскольку им нужно использование файла seo_url.php. У Вас например на сайте pirrka.ru, не работают SEO Friendly Urls. У меня такая связка стояла до того. Работает отлично. До єтого доставил SEO Pack Pro поскольку да, єсть некоторые функции которые мне были нужны. В конечном итоге. Поставил SEO Pro, в настройках выбрал ЧПУ товаров с категориями, окончание .html. Поверх доставил SEO Pack Pro, далее К сожалению, пока что, заставить работать SEO Friendly Urls так и не выходит.
После установки второго языка, подключения из opencartseopackprov4.2 - for OC 1.5.1.3 - 1.5.3.1.zip файла ML_seo_keywords.xml, SEO Pack Pro перестал работать вовсе, ссылки вернулись в прежний вид index.php?route=product/product&..... Сам vqmod файл выдает ошибку о отсутствии файла catalog/controller/module/language.php и не странно, поскольку такой файл в сборку Opencart 1.5.1.3 не входит вовсе. Работать он и не будет, поскольку для работы тоже использует файл seo_url.php, который я отключил в настройках. Под рукой была версия 1.5.4.1, скопировал файл catalog/controller/module/language.php на сайт, в настройках Тип ЧПУ выбрал seo_url.php, ссылки на сайте обрели ЧПУ вид, НО перестал работать ЧПУ товаров с категориями: /category/subcategory/product и отображение категории в модуле категорий и хлебных крошках опять не работает. Вернулся к тому с чего начинал. Нужно править seo_url.php. Не знаю как. Подскажите пожалуйста.
Related Products Generator SEO Friendly Urls Generator Auto create Meta Keywords for products on insert if meta keywords don't exist Auto create Meta Descriptions for products on insert if meta descriptions don't exist Auto create Tags for products on insert if tags don't exist SEO Images Auto Links SEO Editor