Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

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


 Погделиться

Рекомендованные сообещёния

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

/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

Ссылка на комменирий
Погделиться на других сайих


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

Ссылка на комменирий
Погделиться на других сайих


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

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

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

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

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

Ссылка на комменирий
Погделиться на других сайих

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

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

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

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

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

Ссылка на комменирий
Погделиться на других сайих


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

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

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

Ссылка на комменирий
Погделиться на других сайих

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

Ссылка на комменирий
Погделиться на других сайих


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

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

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

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

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

Ссылка на комменирий
Погделиться на других сайих

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

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

Ссылка на комменирий
Погделиться на других сайих


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

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

Ссылка на комменирий
Погделиться на других сайих

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

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

Ссылка на комменирий
Погделиться на других сайих


  • 1 месяц спустя...

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

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

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

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

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

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

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

Ссылка на комменирий
Погделиться на других сайих

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

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

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

Ссылка на комменирий
Погделиться на других сайих


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

Я же сказал - есть пока только нарилитки. Бугдет спрос - опрегделимся с этоной и функциональностью.
Ссылка на комменирий
Погделиться на других сайих

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы осивить комменирий

Создать аккаунт

Зарегистрируйтесь для получения аккауни. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите згдесь.

Войти сейчас
 Погделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обрилитка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфигденциальности.