leny Опубликовано 7 ноября, 2014 Жалоба Поделиться Опубликовано 7 ноября, 2014 Чтобы поменять стандартный вид URL товара т.е. сделать вот так: sire.ru/name_tovar, нужно: Открыть файл .htaccessнайти строчку: RewriteRule ^products/([^/]+)/?$ index.php?module=ProductView&product_url=$1 [L,QSA]и заменить на: #RewriteRule ^products/([^/]+)/?$ index.php?module=ProductView&product_url=$1 [L,QSA]идем ниже и находим строчку: RewriteRule ^([^/]*)/?$ index.php?module=PageView&page_url=$1 [L,QSA]и меняем на: RewriteRule ^([^/]*)/?$ index.php?page_url=$1 [L,QSA] #RewriteRule ^([^/]*)/?$ index.php?module=PageView&page_url=$1 [L,QSA]Сохраняем и закрываем. Открываем файл view/IndexView.phpНаходим строчки: // Текущий модуль (для отображения центрального блока) $module = $this->request->get('module', 'string'); $module = preg_replace("/[^A-Za-z0-9]+/", "", $module); и вставляем после них: //Меняем вид URL $module_url = $this->request->get('page_url', 'string'); foreach($pages as $p){ $array_pages[$p->url] = $p->url; } if(!empty($module_url)){ if(!in_array($module_url,$array_pages)) $module = 'ProductView'; else $module = 'PageView'; } //Конец сохраняем и закрываем. Открываем файл view/ProductView.phpНаходим строку: $product_url = $this->request->get('product_url', 'string'); и меняем ее на: //Меняем вид URL //$product_url = $this->request->get('product_url', 'string'); $product_url = $this->request->get('page_url', 'string'); сохраняем и закрываем. Теперь осталось только найти все ссылки вида href="products/{$product->url}" и убрать products/. Все. Мы ничего не удаляли, поэтому при необходимости мой код удаляем и снимаем комментарии со старого. Цитата Ссылка на сообщение Поделиться на другие сайты
infinity178 Опубликовано 7 ноября, 2014 Жалоба Поделиться Опубликовано 7 ноября, 2014 Простите может я что то не понимаю - но в первом изменении в htaccess - но мы меняем "яблоко" на "яблоко" В чем засекреченный смысл? Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 7 ноября, 2014 Жалоба Поделиться Опубликовано 7 ноября, 2014 В первом изменении мы ЗАКОММЕНТИРУЕМ старый код # в htaccess используется для комментариев. Цитата Ссылка на сообщение Поделиться на другие сайты
Юрий17 Опубликовано 10 ноября, 2014 Жалоба Поделиться Опубликовано 10 ноября, 2014 Добрый день. Подскажите новичку, для того что бы убрать из URL слово "catalog/" можно сделать по такому же принципу? Подскажите где нужно копать, буду очень благодарен! Цитата Ссылка на сообщение Поделиться на другие сайты
leny Опубликовано 10 ноября, 2014 Автор Жалоба Поделиться Опубликовано 10 ноября, 2014 (изменено) Юрий17, on 10 Nov 2014 - 15:45, said:Добрый день. Подскажите новичку, для того что бы убрать из URL слово "catalog/" можно сделать по такому же принципу? Подскажите где нужно копать, буду очень благодарен!Если убрать только "catalog/", то: .htaccess .... # Каталог товаров #RewriteRule ^catalog/([^/]+)/?$ index.php?module=ProductsView&category=$1 [L,QSA] #RewriteRule ^catalog/([^/]+)/([^/]+)/?$ index.php?module=ProductsView&category=$1&brand=$2 [L,QSA] .... # Статические страницы RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d #RewriteRule ^([^/]*)/?$ index.php?module=PageView&page_url=$1 [L,QSA] RewriteRule ^([^/]+)/([^/]+)/?$ index.php?module=ProductsView&page_url=$1&brand=$2 [L,QSA] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^/]*)/?$ index.php?page_url=$1 [L,QSA] RewriteRule ^/?$ index.php?module=MainView&page_url= [L,QSA] .... view/ProductsView.php .... //$category_url = $this->request->get('category', 'string'); $category_url = $this->request->get('page_url', 'string'); .... view/IndexView.php .... // Страницы $pages = $this->pages->get_pages(array('visible'=>1)); $this->design->assign('pages', $pages); // Текущий модуль (для отображения центрального блока) $module = $this->request->get('module', 'string'); $module = preg_replace("/[^A-Za-z0-9]+/", "", $module); //Меняем вид URL $module_url = $this->request->get('page_url', 'string'); foreach($pages as $p){ $array_pages[$p->url] = $p->url; } if(!empty($module_url)){ if(!in_array($module_url,$array_pages)) $module = 'ProductsView'; else $module = 'PageView'; } //Конец .... Не тестировал Если нужно убрать и "products/" и "catalog/", то другой код будет. Изменено 16 ноября, 2014 пользователем leny Цитата Ссылка на сообщение Поделиться на другие сайты
qu0dez Опубликовано 11 ноября, 2014 Жалоба Поделиться Опубликовано 11 ноября, 2014 Было бы не плохо убрать и то и другое.Не подскажете как ? Цитата Ссылка на сообщение Поделиться на другие сайты
leny Опубликовано 11 ноября, 2014 Автор Жалоба Поделиться Опубликовано 11 ноября, 2014 (изменено) Было бы не плохо убрать и то и другое.Не подскажете как ? .htaccess .... # Каталог товаров #RewriteRule ^catalog/([^/]+)/?$ index.php?module=ProductsView&category=$1 [L,QSA] #RewriteRule ^catalog/([^/]+)/([^/]+)/?$ index.php?module=ProductsView&category=$1&brand=$2 [L,QSA] .... #RewriteRule ^products/([^/]+)/?$ index.php?module=ProductView&product_url=$1 [L,QSA] RewriteRule ^products/?$ index.php?module=ProductsView [L,QSA] .... # Статические страницы RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^/]+)/([^/]+)/?$ index.php?module=ProductsView&page_url=$1&brand=$2 [L,QSA] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^/]*)/?$ index.php?page_url=$1 [L,QSA] #RewriteRule ^([^/]*)/?$ index.php?module=PageView&page_url=$1 [L,QSA] RewriteRule ^/?$ index.php?module=MainView&page_url= [L,QSA] .... api/Categories.php .... public function get_all_categories() { $query = $this->db->placehold("SELECT url FROM __categories WHERE visible=1 ORDER BY position"); $this->db->query($query); return $this->db->results(); } .... view/IndexView.php .... // Категории товаров $categories = $this->categories->get_categories_tree(); $this->design->assign('categories', $categories); .... //Меняем вид URL $module_url = $this->request->get('page_url', 'string'); $all_category = $this->categories->get_all_categories(); foreach($all_category as $c) $array_category[$c->url] = $c->url; foreach($pages as $p) $array_pages[$p->url] = $p->url; if(!empty($module_url)){ if(in_array($module_url,$array_category)){ $module = 'ProductsView'; } elseif(in_array($module_url,$array_pages)) { $module = 'PageView'; } else { $module = 'ProductView'; } } //Конец view/ProductsView.php .... // GET-Параметры //$category_url = $this->request->get('category', 'string'); $category_url = $this->request->get('page_url', 'string'); .... view/ProductView.php .... //Меняем вид URL //$product_url = $this->request->get('product_url', 'string'); $product_url = $this->request->get('page_url', 'string'); .... И убираем из ссылок "catalog/" и "products/" Изменено 6 января, 2015 пользователем leny Цитата Ссылка на сообщение Поделиться на другие сайты
qu0dez Опубликовано 12 ноября, 2014 Жалоба Поделиться Опубликовано 12 ноября, 2014 Cпасибо, все очень круто) Цитата Ссылка на сообщение Поделиться на другие сайты
Vince Опубликовано 6 декабря, 2014 Жалоба Поделиться Опубликовано 6 декабря, 2014 .htaccess .... # Каталог товаров #RewriteRule ^catalog/([^/]+)/?$ index.php?module=ProductsView&category=$1 [L,QSA] #RewriteRule ^catalog/([^/]+)/([^/]+)/?$ index.php?module=ProductsView&category=$1&brand=$2 [L,QSA] .... #RewriteRule ^products/([^/]+)/?$ index.php?module=ProductView&product_url=$1 [L,QSA] RewriteRule ^products/?$ index.php?module=ProductsView [L,QSA] .... # Статические страницы RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^/]+)/([^/]+)/?$ index.php?module=ProductsView&page_url=$1&brand=$2 [L,QSA] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^/]*)/?$ index.php?page_url=$1 [L,QSA] #RewriteRule ^([^/]*)/?$ index.php?module=PageView&page_url=$1 [L,QSA] RewriteRule ^/?$ index.php?module=MainView&page_url= [L,QSA] .... view/IndexView.php .... // Категории товаров $categories = $this->categories->get_categories_tree(); $this->design->assign('categories', $categories); .... //Меняем вид URL $module_url = $this->request->get('page_url', 'string'); foreach($categories as $c){ if(isset($c->subcategories)){ foreach($c->subcategories as $sub) $array_category[$sub->url] = $sub->url; } $array_category[$c->url] = $c->url; } foreach($pages as $p) $array_pages[$p->url] = $p->url; if(!empty($module_url)){ if(in_array($module_url,$array_category)){ $module = 'ProductsView'; } elseif(in_array($module_url,$array_pages)) { $module = 'PageView'; } else { $module = 'ProductView'; } } //Конец .... view/ProductsView.php .... // GET-Параметры //$category_url = $this->request->get('category', 'string'); $category_url = $this->request->get('page_url', 'string'); .... view/ProductView.php .... //Меняем вид URL //$product_url = $this->request->get('product_url', 'string'); $product_url = $this->request->get('page_url', 'string'); .... И убираем из ссылок "catalog/" и "products/" эти все строки нужно удалить? Цитата Ссылка на сообщение Поделиться на другие сайты
leny Опубликовано 6 декабря, 2014 Автор Жалоба Поделиться Опубликовано 6 декабря, 2014 Vince, нет. Это урезанный мануал по установке. Открываете свои файлы, ищите в них примерно такой же код и меняете на мой. Например, открываем "view/ProductView.php", ищем строчку "//Меняем вид URL" (лучше всего будет искать по комментариям) и меняем этот участок кода на мой. "...." - это прочий код, который мы не трогаем. Цитата Ссылка на сообщение Поделиться на другие сайты
Vince Опубликовано 6 декабря, 2014 Жалоба Поделиться Опубликовано 6 декабря, 2014 Vince, нет. Это урезанный мануал по установке. Открываете свои файлы, ищите в них примерно такой же код и меняете на мой. Например, открываем "view/ProductView.php", ищем строчку "//Меняем вид URL" (лучше всего будет искать по комментариям) и меняем этот участок кода на мой. "...." - это прочий код, который мы не трогаем. Спасибо!А если их не удалять а заменить на др url, заместо products например news, а вместо catalog allnews Цитата Ссылка на сообщение Поделиться на другие сайты
leny Опубликовано 7 декабря, 2014 Автор Жалоба Поделиться Опубликовано 7 декабря, 2014 Спасибо!А если их не удалять а заменить на др url, заместо products например news, а вместо catalog allnewsНе совсем по теме. Мы тут убираем products. Если Вам нужно сделать так: "site.ru/news/name-news", то тогда нужно отредактировать .htaccess, заменив products на news и catalog на allnews, и ссылки поменять с products/.... на news/.... . Как-то так. Если нужно сделать новостной сайт, то можно же редактировать только блог. Цитата Ссылка на сообщение Поделиться на другие сайты
Vince Опубликовано 7 декабря, 2014 Жалоба Поделиться Опубликовано 7 декабря, 2014 Не совсем по теме. Мы тут убираем products. Если Вам нужно сделать так: "site.ru/news/name-news", то тогда нужно отредактировать .htaccess, заменив products на news и catalog на allnews, и ссылки поменять с products/.... на news/.... . Как-то так. Если нужно сделать новостной сайт, то можно же редактировать только блог.Спасибо! Поменял получилось Цитата Ссылка на сообщение Поделиться на другие сайты
Callback Опубликовано 24 декабря, 2014 Жалоба Поделиться Опубликовано 24 декабря, 2014 Спасибо! Вещь нужная. Помогите настроить в .htaccess редирект старых страниц /catalog/... на /... Цитата Ссылка на сообщение Поделиться на другие сайты
leny Опубликовано 24 декабря, 2014 Автор Жалоба Поделиться Опубликовано 24 декабря, 2014 Спасибо! Вещь нужная. Помогите настроить в .htaccess редирект старых страниц /catalog/... на /...Как-то так RedirectMatch /catalog/(.*) /$1 Цитата Ссылка на сообщение Поделиться на другие сайты
Callback Опубликовано 24 декабря, 2014 Жалоба Поделиться Опубликовано 24 декабря, 2014 К сожалению не помогает. Если вводить старый адрес формата: домен/catalog/название_категории, то перенаправляет на несуществующую страницу: домен/название_категории?module=ProductsView&page_url=catalog&brand=название_категории Цитата Ссылка на сообщение Поделиться на другие сайты
Json Опубликовано 25 декабря, 2014 Жалоба Поделиться Опубликовано 25 декабря, 2014 можно глупые вопросы:1. Для чего это нужно убирать catalog и тп?2. Не портите ли вы структура сайта, так как у вас все в одной куче?3. Что даст данные изменения для поисковика? Цитата Ссылка на сообщение Поделиться на другие сайты
yoshkin Опубликовано 25 декабря, 2014 Жалоба Поделиться Опубликовано 25 декабря, 2014 Отличное решение!А как сделать автозамену в URL, чтобы было не "/название_товара", а "/артикул_товара" ?Насколько я понимаю, в данном случае уже нужно менять функцию формирования "page_url" в view/View.php Цитата Ссылка на сообщение Поделиться на другие сайты
leny Опубликовано 25 декабря, 2014 Автор Жалоба Поделиться Опубликовано 25 декабря, 2014 Отличное решение!А как сделать автозамену в URL, чтобы было не "/название_товара", а "/артикул_товара" ?Насколько я понимаю, в данном случае уже нужно менять функцию формирования "page_url" в view/View.php Меняете в ссылках имя на артикул и редактируете ProductView.php и Products.php Цитата Ссылка на сообщение Поделиться на другие сайты
leny Опубликовано 25 декабря, 2014 Автор Жалоба Поделиться Опубликовано 25 декабря, 2014 К сожалению не помогает. Если вводить старый адрес формата: домен/catalog/название_категории, то перенаправляет на несуществующую страницу: домен/название_категории?module=ProductsView&page_url=catalog&brand=название_категорииТогда это #RewriteRule ^catalog/([^/]+)/?$ index.php?module=ProductsView&category=$1 [L,QSA] #RewriteRule ^catalog/([^/]+)/([^/]+)/?$ index.php?module=ProductsView&category=$1&brand=$2 [L,QSA] Меняем на это RewriteRule ^catalog/([^/]+)/?$ http://site.ru/$1 [L,QSA,R=301] RewriteRule ^catalog/([^/]+)/([^/]+)/?$ http://site.ru/$1/$2 [L,QSA,R=301] Цитата Ссылка на сообщение Поделиться на другие сайты
Callback Опубликовано 26 декабря, 2014 Жалоба Поделиться Опубликовано 26 декабря, 2014 Огромное спасибо! Все прекрасно работает!Если дадите кошелек, закину на мороженку Цитата Ссылка на сообщение Поделиться на другие сайты
nonsen Опубликовано 5 января, 2015 Жалоба Поделиться Опубликовано 5 января, 2015 Подскажите, пожалуйста, сделал все по инструкции для версии 2.3.6, все работает шикарно, но при переходе в 3-ю вложенность(категорию) пишет, что страница не найдена. Если поставить htaccess не измененный и добавлять к 3-му уровню категорий приставка site.ru/category/название, то все работает. В чем может быть костыль? Заранее благодарю за ответ. Цитата Ссылка на сообщение Поделиться на другие сайты
leny Опубликовано 6 января, 2015 Автор Жалоба Поделиться Опубликовано 6 января, 2015 Представленные решения предназначены для того, чтобы убрать /catalog или /products. Т.е. сделать site.ru/название или site.ru/категория, но не site.ru/категория/название (можно site.ru/категория/бренд). Нужно смотреть код, чтобы сказать, почему работает или не работает. Цитата Ссылка на сообщение Поделиться на другие сайты
Des Опубликовано 7 января, 2015 Жалоба Поделиться Опубликовано 7 января, 2015 Leny, здравствуйте! Может вы знаете, как заставить поиск работать, в следующей теме: Переименовать /products/ в адресе Цитата Ссылка на сообщение Поделиться на другие сайты
leny Опубликовано 8 января, 2015 Автор Жалоба Поделиться Опубликовано 8 января, 2015 Leny, здравствуйте! Может вы знаете, как заставить поиск работать, в следующей теме: Переименовать /products/ в адресеТам уже есть ответ. Меняйте action="products" Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.