ameganos Опубліковано: 23 липня 2011 Share Опубліковано: 23 липня 2011 перерыл весь форум, так и не понял где можно поменять урлы с таких /index.php?route=product/category&path=18 /index.php?route=product/product&path=18&product_id=43 на такие как здесь (категория, продукт) http://demo.inveostore.com/opencart/de/desktops-20/ http://demo.inveostore.com/opencart/de/canon-eos-5d-30 ткните пожалуйста в каких файлах нужно покапаться, чтобы сделать так же опенкарт версия 1.5.0.5 Надіслати Поділитися на інших сайтах More sharing options...
LTRay Опубліковано: 23 липня 2011 Share Опубліковано: 23 липня 2011 Включаем Система \ Настройки \ Сервер \ Использование SEO-url \ Да переименовываем htaccess.txt Надіслати Поділитися на інших сайтах More sharing options...
ameganos Опубліковано: 23 липня 2011 Автор Share Опубліковано: 23 липня 2011 про сео урл я знаю, мне надо без него, чтобы в зависимости от языка формировля урл, например для ру /telefon-iphone, для en /phone-iphone, ipnone - продукт из таблица продукт-дескрипшион, причем это бралось не из аллиасов, а из этой таблицы Надіслати Поділитися на інших сайтах More sharing options...
Yesvik Опубліковано: 24 липня 2011 Share Опубліковано: 24 липня 2011 ткните пожалуйста в каких файлах нужно покапаться, чтобы сделать так жеКопать надо в файле catalog/controller/common/seo_url.phpРеализовать подобное не сложно, но хочу обратить твоё внимание на один недостаток реализации. Попробуй в адресной строке изменить en на de или fr... получается что ты не можеш дать ссылку на конкретную языковую версию сайта и быть уверенным что будет отображена заданная языковая версия. Если ты делаеш многоязычный сайт то с этим можно мириться, а для мультирегионального сайта такое поведение не приемлемо. Надіслати Поділитися на інших сайтах More sharing options... ameganos Опубліковано: 25 липня 2011 Автор Share Опубліковано: 25 липня 2011 Копать надо в файле catalog/controller/common/seo_url.php Реализовать подобное не сложно, но хочу обратить твоё внимание на один недостаток реализации. Попробуй в адресной строке изменить en на de или fr... получается что ты не можеш дать ссылку на конкретную языковую версию сайта и быть уверенным что будет отображена заданная языковая версия. Если ты делаеш многоязычный сайт то с этим можно мириться, а для мультирегионального сайта такое поведение не приемлемо. спасибо за ответ, пробывал изменять в данном файле адреса урлов, на сайте все изменения отображаются, новые ссылки с категориями работают верно, но почему-то при нажатии на ссылку продукта никакого перхода не происходит, в чем может быть проблема? Надіслати Поділитися на інших сайтах More sharing options... Yesvik Опубліковано: 25 липня 2011 Share Опубліковано: 25 липня 2011 Или ссылку дай или опиши что делал и приведи пример ЧПУ для товара. А вообще хотелось бы понять не только что, но и для чего ты это делаеш. Зачастую задают вопрос как сделать конкретно вот это... объясняеш... в итоге выясняется что хотел человек совсем другого и залез в какие-то дебри не подозревая что есть другие методы решения. Надіслати Поділитися на інших сайтах More sharing options... ameganos Опубліковано: 25 липня 2011 Автор Share Опубліковано: 25 липня 2011 мне нужно чтобы на разных языках для категорий и продуктов были свои урлы, например для ру - домен/отдых-в-таиланде, для en - домен/thailand-travel менял в файле 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_'])) { $parts = explode('/', $this->request->get['_route_']); 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]; } } /********* my code start *********/ elseif(strpos($this->request->get['_route_'], 'r-') != false) { //echo '<pre>'; print_r($this); echo '</pre>'; //echo $this->request->get['_route_'].'<br>'; //$this->request->get['route'] = 'product/product'; $x2 = explode('-', $this->request->get['_route_']); $this->request->get['product_id'] = $x2[1]; //$this->request->get['path'] = $x2[1]; } /********* my code finish *********/ 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'; } 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' && $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]); } /********* my code start *********/ elseif ($data['route'] == 'product/product' && $key == 'product_id') { $product_info = $this->model_catalog_product->getProduct((int)$value); $url = '/pr-' . (int)$value.'-'.$this->language->get('code').'-'.str_replace(' ', '-', $product_info['name']); unset($data[$key]); } /********* my code finish *********/ } 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']; } /********* my code *********/ else { $category_info = $this->model_catalog_category->getCategory((int)$category); $url .= '/cat-' . (int)$category.'-'.$this->language->get('code').'-'.str_replace(' ', '-', $category_info['name']); } /********* my code finish *********/ } unset($data[$key]); } } } 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; } } } ?> при таких изменениях на странице продукта неотображается категория, ссылки работают в фале catalog/controller/product/product.php не определена $this->request->get['path'] по которой определяется category id Надіслати Поділитися на інших сайтах More sharing options... ameganos Опубліковано: 26 липня 2011 Автор Share Опубліковано: 26 липня 2011 вопрос решен Надіслати Поділитися на інших сайтах More sharing options... Yesvik Опубліковано: 26 липня 2011 Share Опубліковано: 26 липня 2011 Я бы по другому решал задачу... что-бы в URL не было /cat- /pr-и т.д. и что-бы нагрузка на БД была поменьше... В таблицу url_alias добавить колонку language_id, и при записи товара, производителя, категории или статьи автоматом генерить для каждого языка псевдоним в эту таблицу. С учетом SEO URL который я залил сегодня в SVN, можно просто заголовок почистить от знаков препинания, непечатаемых символов и вся генерация... в SEO URL к запросам добавить условие по language_id и ЧПУ будет чистенькое: domain.tld/отдых в тайланде Признак языка делать не в URL, а разными доменами... так и продвигать будет легче... Единственное прийдётся повозиться с переключением языка... но это в любом случае и не зависит от алгоритма построения ЧПУ. Так как у тебя разные URL то с редиректом будет заморочка... Надіслати Поділитися на інших сайтах More sharing options... ameganos Опубліковано: 26 липня 2011 Автор Share Опубліковано: 26 липня 2011 да кстати, рано я обрадовался, если набрать урл с недефолтным языком открывается не то что надо, Yesvik, а в твоем варианте переключение языков будет вроде бы такой же сложности? а как можно самому в коде переключить язык, т.е. в зависимости от урла выбрать нужный язык? Надіслати Поділитися на інших сайтах More sharing options... Yesvik Опубліковано: 28 липня 2011 Share Опубліковано: 28 липня 2011 Так я же написал что с переключением языка это отдельная песня... и на том сайте, на который ты давал ссылку, этот момент не реализован. Я пока не получил от тебя ответа на вопрос: сайт многоязычный или мультирегиональный? В зависимости от этого надо принимать решение как поступать с языком... Надіслати Поділитися на інших сайтах More sharing options... ameganos Опубліковано: 29 липня 2011 Автор Share Опубліковано: 29 липня 2011 Да на том сайте это нереализована, как-раз в этом и проблема Сайт с несколькими языками, у всех языков одинаковый набор страниц (одни и теже товары, категории), просто на разных языках (свои названия категорий, описания категорий/продуктов, страницы FAQ, Contact ...). Нужно чтобы для каждого языка страницы были со своими урлами, т.е. однозначно по урлу определялся язык - открывался сайт с таким языком, ну и соответственно поисковики индексировали разные языки с разными урлами например для ру site.ru/телефон-iphone, для en site.ru/phone-iphone, где ipnone - продукт из таблица продукт, для гугла пытаясь найти по запросу "site:site.ru телефон iphone" показывался урл site.ru/телефон-iphone, для "site:site.ru phone iphone" - site.ru/phone-iphone Надіслати Поділитися на інших сайтах More sharing options... 1 month later... Vladzimir Опубліковано: 4 вересня 2011 Share Опубліковано: 4 вересня 2011 Я бы по другому решал задачу... что-бы в URL не было /cat- /pr-и т.д. и что-бы нагрузка на БД была поменьше... В таблицу url_alias добавить колонку language_id, и при записи товара, производителя, категории или статьи автоматом генерить для каждого языка псевдоним в эту таблицу. С учетом SEO URL который я залил сегодня в SVN, можно просто заголовок почистить от знаков препинания, непечатаемых символов и вся генерация... в SEO URL к запросам добавить условие по language_id и ЧПУ будет чистенькое: domain.tld/отдых в тайланде Признак языка делать не в URL, а разными доменами... так и продвигать будет легче... Единственное прийдётся повозиться с переключением языка... но это в любом случае и не зависит от алгоритма построения ЧПУ. Так как у тебя разные URL то с редиректом будет заморочка... По совету сделал данную модификацию. Если кого-то может заинтересовать - в личку. Так-же из наработанного есть возможность автоматического создания мета-ключевиков и мета-описания с поддержкой морфологии практически любого языка. Интересно - снова в личку. Надіслати Поділитися на інших сайтах More sharing options... Smallbear Опубліковано: 4 вересня 2011 Share Опубліковано: 4 вересня 2011 По совету сделал данную модификацию. Если кого-то может заинтересовать - в личку. Так-же из наработанного есть возможность автоматического создания мета-ключевиков и мета-описания с поддержкой морфологии практически любого языка. Интересно - снова в личку. Если Хотите что-то продавать так выложите на сайте и все. Надіслати Поділитися на інших сайтах More sharing options... Vladzimir Опубліковано: 4 вересня 2011 Share Опубліковано: 4 вересня 2011 Если Хотите что-то продавать так выложите на сайте и все.Я же сказал - есть пока только наработки. Будет спрос - определимся с ценой и функциональностью. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Реклама і просування SEO-питання (оптимізація та просування магазину) Сменит урлы на сайте Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
ameganos Опубліковано: 25 липня 2011 Автор Share Опубліковано: 25 липня 2011 Копать надо в файле catalog/controller/common/seo_url.php Реализовать подобное не сложно, но хочу обратить твоё внимание на один недостаток реализации. Попробуй в адресной строке изменить en на de или fr... получается что ты не можеш дать ссылку на конкретную языковую версию сайта и быть уверенным что будет отображена заданная языковая версия. Если ты делаеш многоязычный сайт то с этим можно мириться, а для мультирегионального сайта такое поведение не приемлемо. спасибо за ответ, пробывал изменять в данном файле адреса урлов, на сайте все изменения отображаются, новые ссылки с категориями работают верно, но почему-то при нажатии на ссылку продукта никакого перхода не происходит, в чем может быть проблема? Надіслати Поділитися на інших сайтах More sharing options...
Yesvik Опубліковано: 25 липня 2011 Share Опубліковано: 25 липня 2011 Или ссылку дай или опиши что делал и приведи пример ЧПУ для товара. А вообще хотелось бы понять не только что, но и для чего ты это делаеш. Зачастую задают вопрос как сделать конкретно вот это... объясняеш... в итоге выясняется что хотел человек совсем другого и залез в какие-то дебри не подозревая что есть другие методы решения. Надіслати Поділитися на інших сайтах More sharing options... ameganos Опубліковано: 25 липня 2011 Автор Share Опубліковано: 25 липня 2011 мне нужно чтобы на разных языках для категорий и продуктов были свои урлы, например для ру - домен/отдых-в-таиланде, для en - домен/thailand-travel менял в файле 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_'])) { $parts = explode('/', $this->request->get['_route_']); 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]; } } /********* my code start *********/ elseif(strpos($this->request->get['_route_'], 'r-') != false) { //echo '<pre>'; print_r($this); echo '</pre>'; //echo $this->request->get['_route_'].'<br>'; //$this->request->get['route'] = 'product/product'; $x2 = explode('-', $this->request->get['_route_']); $this->request->get['product_id'] = $x2[1]; //$this->request->get['path'] = $x2[1]; } /********* my code finish *********/ 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'; } 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' && $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]); } /********* my code start *********/ elseif ($data['route'] == 'product/product' && $key == 'product_id') { $product_info = $this->model_catalog_product->getProduct((int)$value); $url = '/pr-' . (int)$value.'-'.$this->language->get('code').'-'.str_replace(' ', '-', $product_info['name']); unset($data[$key]); } /********* my code finish *********/ } 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']; } /********* my code *********/ else { $category_info = $this->model_catalog_category->getCategory((int)$category); $url .= '/cat-' . (int)$category.'-'.$this->language->get('code').'-'.str_replace(' ', '-', $category_info['name']); } /********* my code finish *********/ } unset($data[$key]); } } } 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; } } } ?> при таких изменениях на странице продукта неотображается категория, ссылки работают в фале catalog/controller/product/product.php не определена $this->request->get['path'] по которой определяется category id Надіслати Поділитися на інших сайтах More sharing options... ameganos Опубліковано: 26 липня 2011 Автор Share Опубліковано: 26 липня 2011 вопрос решен Надіслати Поділитися на інших сайтах More sharing options... Yesvik Опубліковано: 26 липня 2011 Share Опубліковано: 26 липня 2011 Я бы по другому решал задачу... что-бы в URL не было /cat- /pr-и т.д. и что-бы нагрузка на БД была поменьше... В таблицу url_alias добавить колонку language_id, и при записи товара, производителя, категории или статьи автоматом генерить для каждого языка псевдоним в эту таблицу. С учетом SEO URL который я залил сегодня в SVN, можно просто заголовок почистить от знаков препинания, непечатаемых символов и вся генерация... в SEO URL к запросам добавить условие по language_id и ЧПУ будет чистенькое: domain.tld/отдых в тайланде Признак языка делать не в URL, а разными доменами... так и продвигать будет легче... Единственное прийдётся повозиться с переключением языка... но это в любом случае и не зависит от алгоритма построения ЧПУ. Так как у тебя разные URL то с редиректом будет заморочка... Надіслати Поділитися на інших сайтах More sharing options... ameganos Опубліковано: 26 липня 2011 Автор Share Опубліковано: 26 липня 2011 да кстати, рано я обрадовался, если набрать урл с недефолтным языком открывается не то что надо, Yesvik, а в твоем варианте переключение языков будет вроде бы такой же сложности? а как можно самому в коде переключить язык, т.е. в зависимости от урла выбрать нужный язык? Надіслати Поділитися на інших сайтах More sharing options... Yesvik Опубліковано: 28 липня 2011 Share Опубліковано: 28 липня 2011 Так я же написал что с переключением языка это отдельная песня... и на том сайте, на который ты давал ссылку, этот момент не реализован. Я пока не получил от тебя ответа на вопрос: сайт многоязычный или мультирегиональный? В зависимости от этого надо принимать решение как поступать с языком... Надіслати Поділитися на інших сайтах More sharing options... ameganos Опубліковано: 29 липня 2011 Автор Share Опубліковано: 29 липня 2011 Да на том сайте это нереализована, как-раз в этом и проблема Сайт с несколькими языками, у всех языков одинаковый набор страниц (одни и теже товары, категории), просто на разных языках (свои названия категорий, описания категорий/продуктов, страницы FAQ, Contact ...). Нужно чтобы для каждого языка страницы были со своими урлами, т.е. однозначно по урлу определялся язык - открывался сайт с таким языком, ну и соответственно поисковики индексировали разные языки с разными урлами например для ру site.ru/телефон-iphone, для en site.ru/phone-iphone, где ipnone - продукт из таблица продукт, для гугла пытаясь найти по запросу "site:site.ru телефон iphone" показывался урл site.ru/телефон-iphone, для "site:site.ru phone iphone" - site.ru/phone-iphone Надіслати Поділитися на інших сайтах More sharing options... 1 month later... Vladzimir Опубліковано: 4 вересня 2011 Share Опубліковано: 4 вересня 2011 Я бы по другому решал задачу... что-бы в URL не было /cat- /pr-и т.д. и что-бы нагрузка на БД была поменьше... В таблицу url_alias добавить колонку language_id, и при записи товара, производителя, категории или статьи автоматом генерить для каждого языка псевдоним в эту таблицу. С учетом SEO URL который я залил сегодня в SVN, можно просто заголовок почистить от знаков препинания, непечатаемых символов и вся генерация... в SEO URL к запросам добавить условие по language_id и ЧПУ будет чистенькое: domain.tld/отдых в тайланде Признак языка делать не в URL, а разными доменами... так и продвигать будет легче... Единственное прийдётся повозиться с переключением языка... но это в любом случае и не зависит от алгоритма построения ЧПУ. Так как у тебя разные URL то с редиректом будет заморочка... По совету сделал данную модификацию. Если кого-то может заинтересовать - в личку. Так-же из наработанного есть возможность автоматического создания мета-ключевиков и мета-описания с поддержкой морфологии практически любого языка. Интересно - снова в личку. Надіслати Поділитися на інших сайтах More sharing options... Smallbear Опубліковано: 4 вересня 2011 Share Опубліковано: 4 вересня 2011 По совету сделал данную модификацию. Если кого-то может заинтересовать - в личку. Так-же из наработанного есть возможность автоматического создания мета-ключевиков и мета-описания с поддержкой морфологии практически любого языка. Интересно - снова в личку. Если Хотите что-то продавать так выложите на сайте и все. Надіслати Поділитися на інших сайтах More sharing options... Vladzimir Опубліковано: 4 вересня 2011 Share Опубліковано: 4 вересня 2011 Если Хотите что-то продавать так выложите на сайте и все.Я же сказал - есть пока только наработки. Будет спрос - определимся с ценой и функциональностью. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Реклама і просування SEO-питання (оптимізація та просування магазину) Сменит урлы на сайте Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
ameganos Опубліковано: 25 липня 2011 Автор Share Опубліковано: 25 липня 2011 мне нужно чтобы на разных языках для категорий и продуктов были свои урлы, например для ру - домен/отдых-в-таиланде, для en - домен/thailand-travel менял в файле 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_'])) { $parts = explode('/', $this->request->get['_route_']); 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]; } } /********* my code start *********/ elseif(strpos($this->request->get['_route_'], 'r-') != false) { //echo '<pre>'; print_r($this); echo '</pre>'; //echo $this->request->get['_route_'].'<br>'; //$this->request->get['route'] = 'product/product'; $x2 = explode('-', $this->request->get['_route_']); $this->request->get['product_id'] = $x2[1]; //$this->request->get['path'] = $x2[1]; } /********* my code finish *********/ 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'; } 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' && $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]); } /********* my code start *********/ elseif ($data['route'] == 'product/product' && $key == 'product_id') { $product_info = $this->model_catalog_product->getProduct((int)$value); $url = '/pr-' . (int)$value.'-'.$this->language->get('code').'-'.str_replace(' ', '-', $product_info['name']); unset($data[$key]); } /********* my code finish *********/ } 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']; } /********* my code *********/ else { $category_info = $this->model_catalog_category->getCategory((int)$category); $url .= '/cat-' . (int)$category.'-'.$this->language->get('code').'-'.str_replace(' ', '-', $category_info['name']); } /********* my code finish *********/ } unset($data[$key]); } } } 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; } } } ?> при таких изменениях на странице продукта неотображается категория, ссылки работают в фале catalog/controller/product/product.php не определена $this->request->get['path'] по которой определяется category id Надіслати Поділитися на інших сайтах More sharing options...
ameganos Опубліковано: 26 липня 2011 Автор Share Опубліковано: 26 липня 2011 вопрос решен Надіслати Поділитися на інших сайтах More sharing options...
Yesvik Опубліковано: 26 липня 2011 Share Опубліковано: 26 липня 2011 Я бы по другому решал задачу... что-бы в URL не было /cat- /pr-и т.д. и что-бы нагрузка на БД была поменьше... В таблицу url_alias добавить колонку language_id, и при записи товара, производителя, категории или статьи автоматом генерить для каждого языка псевдоним в эту таблицу. С учетом SEO URL который я залил сегодня в SVN, можно просто заголовок почистить от знаков препинания, непечатаемых символов и вся генерация... в SEO URL к запросам добавить условие по language_id и ЧПУ будет чистенькое: domain.tld/отдых в тайланде Признак языка делать не в URL, а разными доменами... так и продвигать будет легче... Единственное прийдётся повозиться с переключением языка... но это в любом случае и не зависит от алгоритма построения ЧПУ. Так как у тебя разные URL то с редиректом будет заморочка... Надіслати Поділитися на інших сайтах More sharing options... ameganos Опубліковано: 26 липня 2011 Автор Share Опубліковано: 26 липня 2011 да кстати, рано я обрадовался, если набрать урл с недефолтным языком открывается не то что надо, Yesvik, а в твоем варианте переключение языков будет вроде бы такой же сложности? а как можно самому в коде переключить язык, т.е. в зависимости от урла выбрать нужный язык? Надіслати Поділитися на інших сайтах More sharing options... Yesvik Опубліковано: 28 липня 2011 Share Опубліковано: 28 липня 2011 Так я же написал что с переключением языка это отдельная песня... и на том сайте, на который ты давал ссылку, этот момент не реализован. Я пока не получил от тебя ответа на вопрос: сайт многоязычный или мультирегиональный? В зависимости от этого надо принимать решение как поступать с языком... Надіслати Поділитися на інших сайтах More sharing options... ameganos Опубліковано: 29 липня 2011 Автор Share Опубліковано: 29 липня 2011 Да на том сайте это нереализована, как-раз в этом и проблема Сайт с несколькими языками, у всех языков одинаковый набор страниц (одни и теже товары, категории), просто на разных языках (свои названия категорий, описания категорий/продуктов, страницы FAQ, Contact ...). Нужно чтобы для каждого языка страницы были со своими урлами, т.е. однозначно по урлу определялся язык - открывался сайт с таким языком, ну и соответственно поисковики индексировали разные языки с разными урлами например для ру site.ru/телефон-iphone, для en site.ru/phone-iphone, где ipnone - продукт из таблица продукт, для гугла пытаясь найти по запросу "site:site.ru телефон iphone" показывался урл site.ru/телефон-iphone, для "site:site.ru phone iphone" - site.ru/phone-iphone Надіслати Поділитися на інших сайтах More sharing options... 1 month later... Vladzimir Опубліковано: 4 вересня 2011 Share Опубліковано: 4 вересня 2011 Я бы по другому решал задачу... что-бы в URL не было /cat- /pr-и т.д. и что-бы нагрузка на БД была поменьше... В таблицу url_alias добавить колонку language_id, и при записи товара, производителя, категории или статьи автоматом генерить для каждого языка псевдоним в эту таблицу. С учетом SEO URL который я залил сегодня в SVN, можно просто заголовок почистить от знаков препинания, непечатаемых символов и вся генерация... в SEO URL к запросам добавить условие по language_id и ЧПУ будет чистенькое: domain.tld/отдых в тайланде Признак языка делать не в URL, а разными доменами... так и продвигать будет легче... Единственное прийдётся повозиться с переключением языка... но это в любом случае и не зависит от алгоритма построения ЧПУ. Так как у тебя разные URL то с редиректом будет заморочка... По совету сделал данную модификацию. Если кого-то может заинтересовать - в личку. Так-же из наработанного есть возможность автоматического создания мета-ключевиков и мета-описания с поддержкой морфологии практически любого языка. Интересно - снова в личку. Надіслати Поділитися на інших сайтах More sharing options... Smallbear Опубліковано: 4 вересня 2011 Share Опубліковано: 4 вересня 2011 По совету сделал данную модификацию. Если кого-то может заинтересовать - в личку. Так-же из наработанного есть возможность автоматического создания мета-ключевиков и мета-описания с поддержкой морфологии практически любого языка. Интересно - снова в личку. Если Хотите что-то продавать так выложите на сайте и все. Надіслати Поділитися на інших сайтах More sharing options... Vladzimir Опубліковано: 4 вересня 2011 Share Опубліковано: 4 вересня 2011 Если Хотите что-то продавать так выложите на сайте и все.Я же сказал - есть пока только наработки. Будет спрос - определимся с ценой и функциональностью. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Реклама і просування SEO-питання (оптимізація та просування магазину) Сменит урлы на сайте Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000
ameganos Опубліковано: 26 липня 2011 Автор Share Опубліковано: 26 липня 2011 да кстати, рано я обрадовался, если набрать урл с недефолтным языком открывается не то что надо, Yesvik, а в твоем варианте переключение языков будет вроде бы такой же сложности? а как можно самому в коде переключить язык, т.е. в зависимости от урла выбрать нужный язык? Надіслати Поділитися на інших сайтах More sharing options...
Yesvik Опубліковано: 28 липня 2011 Share Опубліковано: 28 липня 2011 Так я же написал что с переключением языка это отдельная песня... и на том сайте, на который ты давал ссылку, этот момент не реализован. Я пока не получил от тебя ответа на вопрос: сайт многоязычный или мультирегиональный? В зависимости от этого надо принимать решение как поступать с языком... Надіслати Поділитися на інших сайтах More sharing options... ameganos Опубліковано: 29 липня 2011 Автор Share Опубліковано: 29 липня 2011 Да на том сайте это нереализована, как-раз в этом и проблема Сайт с несколькими языками, у всех языков одинаковый набор страниц (одни и теже товары, категории), просто на разных языках (свои названия категорий, описания категорий/продуктов, страницы FAQ, Contact ...). Нужно чтобы для каждого языка страницы были со своими урлами, т.е. однозначно по урлу определялся язык - открывался сайт с таким языком, ну и соответственно поисковики индексировали разные языки с разными урлами например для ру site.ru/телефон-iphone, для en site.ru/phone-iphone, где ipnone - продукт из таблица продукт, для гугла пытаясь найти по запросу "site:site.ru телефон iphone" показывался урл site.ru/телефон-iphone, для "site:site.ru phone iphone" - site.ru/phone-iphone Надіслати Поділитися на інших сайтах More sharing options... 1 month later... Vladzimir Опубліковано: 4 вересня 2011 Share Опубліковано: 4 вересня 2011 Я бы по другому решал задачу... что-бы в URL не было /cat- /pr-и т.д. и что-бы нагрузка на БД была поменьше... В таблицу url_alias добавить колонку language_id, и при записи товара, производителя, категории или статьи автоматом генерить для каждого языка псевдоним в эту таблицу. С учетом SEO URL который я залил сегодня в SVN, можно просто заголовок почистить от знаков препинания, непечатаемых символов и вся генерация... в SEO URL к запросам добавить условие по language_id и ЧПУ будет чистенькое: domain.tld/отдых в тайланде Признак языка делать не в URL, а разными доменами... так и продвигать будет легче... Единственное прийдётся повозиться с переключением языка... но это в любом случае и не зависит от алгоритма построения ЧПУ. Так как у тебя разные URL то с редиректом будет заморочка... По совету сделал данную модификацию. Если кого-то может заинтересовать - в личку. Так-же из наработанного есть возможность автоматического создания мета-ключевиков и мета-описания с поддержкой морфологии практически любого языка. Интересно - снова в личку. Надіслати Поділитися на інших сайтах More sharing options... Smallbear Опубліковано: 4 вересня 2011 Share Опубліковано: 4 вересня 2011 По совету сделал данную модификацию. Если кого-то может заинтересовать - в личку. Так-же из наработанного есть возможность автоматического создания мета-ключевиков и мета-описания с поддержкой морфологии практически любого языка. Интересно - снова в личку. Если Хотите что-то продавать так выложите на сайте и все. Надіслати Поділитися на інших сайтах More sharing options... Vladzimir Опубліковано: 4 вересня 2011 Share Опубліковано: 4 вересня 2011 Если Хотите что-то продавать так выложите на сайте и все.Я же сказал - есть пока только наработки. Будет спрос - определимся с ценой и функциональностью. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Реклама і просування SEO-питання (оптимізація та просування магазину) Сменит урлы на сайте
ameganos Опубліковано: 29 липня 2011 Автор Share Опубліковано: 29 липня 2011 Да на том сайте это нереализована, как-раз в этом и проблема Сайт с несколькими языками, у всех языков одинаковый набор страниц (одни и теже товары, категории), просто на разных языках (свои названия категорий, описания категорий/продуктов, страницы FAQ, Contact ...). Нужно чтобы для каждого языка страницы были со своими урлами, т.е. однозначно по урлу определялся язык - открывался сайт с таким языком, ну и соответственно поисковики индексировали разные языки с разными урлами например для ру site.ru/телефон-iphone, для en site.ru/phone-iphone, где ipnone - продукт из таблица продукт, для гугла пытаясь найти по запросу "site:site.ru телефон iphone" показывался урл site.ru/телефон-iphone, для "site:site.ru phone iphone" - site.ru/phone-iphone Надіслати Поділитися на інших сайтах More sharing options...
Vladzimir Опубліковано: 4 вересня 2011 Share Опубліковано: 4 вересня 2011 Я бы по другому решал задачу... что-бы в URL не было /cat- /pr-и т.д. и что-бы нагрузка на БД была поменьше... В таблицу url_alias добавить колонку language_id, и при записи товара, производителя, категории или статьи автоматом генерить для каждого языка псевдоним в эту таблицу. С учетом SEO URL который я залил сегодня в SVN, можно просто заголовок почистить от знаков препинания, непечатаемых символов и вся генерация... в SEO URL к запросам добавить условие по language_id и ЧПУ будет чистенькое: domain.tld/отдых в тайланде Признак языка делать не в URL, а разными доменами... так и продвигать будет легче... Единственное прийдётся повозиться с переключением языка... но это в любом случае и не зависит от алгоритма построения ЧПУ. Так как у тебя разные URL то с редиректом будет заморочка... По совету сделал данную модификацию. Если кого-то может заинтересовать - в личку. Так-же из наработанного есть возможность автоматического создания мета-ключевиков и мета-описания с поддержкой морфологии практически любого языка. Интересно - снова в личку. Надіслати Поділитися на інших сайтах More sharing options... Smallbear Опубліковано: 4 вересня 2011 Share Опубліковано: 4 вересня 2011 По совету сделал данную модификацию. Если кого-то может заинтересовать - в личку. Так-же из наработанного есть возможность автоматического создания мета-ключевиков и мета-описания с поддержкой морфологии практически любого языка. Интересно - снова в личку. Если Хотите что-то продавать так выложите на сайте и все. Надіслати Поділитися на інших сайтах More sharing options... Vladzimir Опубліковано: 4 вересня 2011 Share Опубліковано: 4 вересня 2011 Если Хотите что-то продавать так выложите на сайте и все.Я же сказал - есть пока только наработки. Будет спрос - определимся с ценой и функциональностью. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
Smallbear Опубліковано: 4 вересня 2011 Share Опубліковано: 4 вересня 2011 По совету сделал данную модификацию. Если кого-то может заинтересовать - в личку. Так-же из наработанного есть возможность автоматического создания мета-ключевиков и мета-описания с поддержкой морфологии практически любого языка. Интересно - снова в личку. Если Хотите что-то продавать так выложите на сайте и все. Надіслати Поділитися на інших сайтах More sharing options...
Vladzimir Опубліковано: 4 вересня 2011 Share Опубліковано: 4 вересня 2011 Если Хотите что-то продавать так выложите на сайте и все.Я же сказал - есть пока только наработки. Будет спрос - определимся с ценой и функциональностью. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0
Recommended Posts