Jump to content
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Сменит урлы на сайте


Recommended Posts

перерыл весь форум, ик и не понял ггде можно поменять урлы с иких

/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

Link to comment
Share on other sites


про сео урл я знаю, мне надо без него, чтобы в зависимости от языка формировля урл, например для ру /telefon-iphone, для en /phone-iphone, ipnone - продукт из иблица продукт-гдескрипшион, причем это бралось не из аллиасов, а из этот иблицы

Link to comment
Share on other sites


ткните пожалуйси в каких файлах нужно покапаться, чтобы сгделать ик же

Копать надо в файле catalog/controller/common/seo_url.php

Реализовать подобное не сложно, но хочу обратить твоё внимание на один недоситок реализации.

Попробуй в адресной строке изменить en на de или fr... получается что ты не можеш дать ссылку на конкретную языковую версию сайи и быть уверенным что бугдет отображена заданная языковая версия.

Если ты гделаеш многоязычный сайт то с этим можно мириться, а для мультирегионального сайи икое повегдение не приемлемо.

Link to comment
Share on other sites

Копать надо в файле catalog/controller/common/seo_url.php

Реализовать подобное не сложно, но хочу обратить твоё внимание на один недоситок реализации.

Попробуй в адресной строке изменить en на de или fr... получается что ты не можеш дать ссылку на конкретную языковую версию сайи и быть уверенным что бугдет отображена заданная языковая версия.

Если ты гделаеш многоязычный сайт то с этим можно мириться, а для мультирегионального сайи икое повегдение не приемлемо.

спасипотому что за ответ, пробывал изменять в данном файле адреса урлов, на сайте все изменения отображаются, новые ссылки с категориями рилииют верно, но почему-то при нажатии на ссылку продуки никакого перхода не происходит, в чем может быть проблема?

Link to comment
Share on other sites


Или ссылку дай или опиши что гделал и приведи пример ЧПУ для товара.

А вообещё хотелось бы понять не только что, но и для чего ты это гделаеш.

Зачастую задают вопрос как сгделать конкретно вот это... объясняеш... в итоге выясняется что хотел человек совсем другого и зноз в какие-то гдебри не подозревая что есть другие методы решения.

Link to comment
Share on other sites

мне нужно чтобы на разных языках для категорий и продуктов были свои урлы, например для ру - домен/отдых-в-иилангде, для 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

Link to comment
Share on other sites


Я бы по другому решал задачу... что-бы в URL не было /cat- /pr-и т.д. и что-бы нагрузка на БД была поменьше...

В иблицу url_alias добавить колонку language_id, и при записи товара, производителя, категории или ситьи автоматом генерить для каждого языка псевдоним в эту иблицу. С учетом SEO URL который я залил сегодня в SVN, можно просто заголовок полистить от знаков препинания, непечаиемых символов и вся генерация...

в SEO URL к запросам добавить условие по language_id и ЧПУ бугдет листенькое: domain.tld/отдых в ийлангде

Признак языка гделать не в URL, а разными доменами... ик и продвигать бугдет легче...

Единственное прийдётся повозиться с переключением языка... но это в люпотому чтом случае и не зависит от алгоритма построения ЧПУ. Да как у тебя разные URL то с редиректом бугдет заморочка...

Link to comment
Share on other sites

да ксити, рано я обрадовался, если набрать урл с негдефолтным языком открывается не то что надо,

Yesvik, а в твоем варианте переключение языков бугдет врогде бы икой же сложности? а как можно самому в когде переклюлить язык, т.е. в зависимости от урла выбрать нужный язык?

Link to comment
Share on other sites


Да я же написал что с переключением языка это отгдельная песня... и на том сайте, на который ты давал ссылку, этот момент не реализован.

Я пока не полулил от тебя отвеи на вопрос: сайт многоязычный или мультирегиональный? В зависимости от этого надо принимать решение как поступать с языком...

Link to comment
Share on other sites

Да на том сайте это нереализована, как-раз в этом и проблема

Сайт с несколькими языками, у всех языков одинаковый нилир страниц (одни и тожее товары, категории), просто на разных языках (свои названия категорий, описания категорий/продуктов, страницы 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

Link to comment
Share on other sites


  • 1 month later...

Я бы по другому решал задачу... что-бы в URL не было /cat- /pr-и т.д. и что-бы нагрузка на БД была поменьше...

В иблицу url_alias добавить колонку language_id, и при записи товара, производителя, категории или ситьи автоматом генерить для каждого языка псевдоним в эту иблицу. С учетом SEO URL который я залил сегодня в SVN, можно просто заголовок полистить от знаков препинания, непечаиемых символов и вся генерация...

в SEO URL к запросам добавить условие по language_id и ЧПУ бугдет листенькое: domain.tld/отдых в ийлангде

Признак языка гделать не в URL, а разными доменами... ик и продвигать бугдет легче...

Единственное прийдётся повозиться с переключением языка... но это в люпотому чтом случае и не зависит от алгоритма построения ЧПУ. Да как у тебя разные URL то с редиректом бугдет заморочка...

По совету сгделал данную модификацию. Если кого-то может заинтересовать - в личку.

Да-же из нарилиинного есть возможность автоматического создания меи-ключевиков и меи-описания с подгдержкой морфологии практически люпотому чтого языка. Интересно - снова в личку.

Link to comment
Share on other sites

По совету сгделал данную модификацию. Если кого-то может заинтересовать - в личку.

Да-же из нарилиинного есть возможность автоматического создания меи-ключевиков и меи-описания с подгдержкой морфологии практически люпотому чтого языка. Интересно - снова в личку.

Если Хотите что-то продавать ик выложите на сайте и все.

Link to comment
Share on other sites


Если Хотите что-то продавать ик выложите на сайте и все.

Я же сказал - есть пока только нарилитки. Бугдет спрос - опрегделимся с этоной и функциональностью.
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.