View attachment router_vm114.zip c транслитом названий категорий и товаров. Установка router.php Virtuemart (как и любого другого роутера компонента) - положить файл в папку компонента, т.е. в нашем случае - в папку components/com_virtuemart/ Но у виртуя глюк со ссылками на категории - ссылки на категории, созданные в меню, отличаются от ссылок внутри самого виртуя и в его модулях, т.е. есть дубли страниц с разными URL. Надо править ps_session.php: перед Код (PHP): // make url absolute надо вставить вырезание мусора Код (PHP): if ($tmp_Itemid) { $url = preg_replace('!&page=shop.browse&category_id=\d{1,2}!', '', $url); $url = preg_replace('!\?page=shop.browse(&|&)category_id=\d{1,2}(&|&)!', '?', $url); } ничего лучше не придумал и по уму надо объединять 2 регулярки в одну. Обновлено 17.02.2010 Добавлена обработка производителей (в модуле производителей, к примеру) Стандартный вид ссылки (не ЧПУ): index.php?option=com_virtuemart&page=shop.browse&manufacturer_id=12&Itemid=2 Вид ссылки со старой версией router.php: products.html?manufacturer_id=12 C этой версией router.php: manufacturer/12/hunter.html manufacturer и некотрые другие константы можно поменять в начале файла в строках типа Код (PHP): define('PAGE_SHOP_MANUFACTURER', 'manufacturer'); View attachment router_vm114-1.zip - скачать новую версия router.php
Re: Руководство по SEO оптимизации и SEF настройке Joomla стандартными способами Спасибо ) sourpuss роутер у меня стоит, но наверное без транслитерации он щас попробую ваш способ а вот вопрос по тексту 2 регулярки в одну. - это что значит?
Re: Руководство по SEO оптимизации и SEF настройке Joomla стандартными способами поставил роутер с транслитерацией, исправил ps_session.php все работает спасибо ) а можете подробнее объяснить какой именно мусор вырезает этот код визуально ссылка не изменила вид например http://autobase.com.ua/online-store/details/1001/359/shini/shini-rosava/oi-297-s-1/rosava-oi-297-s-1-205/70-r14-q мой файл хотя он у всех один и тотже )) http://autobase.com.ua/ps_session.rar
2 preg_replace объединить в одно - для эстетов кодинга Исправлять надо только тем, кто делал в меню joomla ссылки на категории виртуя. Например, если сделать в меню ссылку на категорию Программное обеспечение с псевдонимом soft. То в меню ссылка будет выглядеть как /soft.html, а в виртуе - как /soft/programmnoe-obespechenie.html. Без ЧПУ ссылки будут выглядеть как /index.php?option=com_virtuemart&Itemid=5 и /index.php?option=com_virtuemart&page=shop.browse&category_id=2&Itemid=5 в меню и виртуе соответственно. Вот эта разница в ссылках и вырезается, если на категорию создана ссылка в меню и только в этом случае. Кстати, \d{1,2} - здесь подразумеваются двузначные категории, поэтому 2 лучше поменять на нужное число разрядов. Так я писал только про категории, а не конкретные товары. Важно! из-за router.php не работают ссылки виртуя в Xmap. К ссылкам добавляется Itemid магазина
Извините, как так не работают ссылки виртуя в Xmap, когда не работает только главная страница http://www.vitaio.ru/karta-saita.html?sitemap=1, да и подскажите пожалуйста где находится ps_session.php
В каких случаях не работает? joomla 1.5.15, virtuemart 1.1.3 ссылки получаются, действительно, с itemid "http://vabakane.homelinux.com/katalog/details/483/23/igri-soft/novie/civilization-iv--polnoe-sobranie-dvd&Itemid=2" но, кликнув, нормально переходим на ожидаемую страницу. Более того, я заметил, что часть ссылки вообще можно выкинуть и все равно переходит. Типа такого: http://vabakane.homelinux.com/katalog/details/483/23/ Это почему так?
ps_session - в administrator\components\com_virtuemart\classes\ Скажу по другому - неправильно работают. Itemid в Xmap я убирал так - ~434-439 строка, заменить на это Код (PHP): if ( !@$node->home && (strpos( $link, 'Itemid=' ) === FALSE) ) { if (!strpos($link, '.html')) $link .= '&Itemid='.$node->id; } break; ну и получатся дубли страниц обратное преобразование работает по ID товара и категории. Вот если их (цифры) выкинешь, то может быть глюк.
Извините, как так не работают ссылки виртуя в Xmap, когда не работает только главная страница http://www.vitaio.ru/karta-saita.html?sitemap=1, да и подскажите пожалуйста где находится ps_session.php administrator / components / com_virtuemart / classes/ps_session.php
Я так подумал, что "Человеко Понятные Урл" это хорошо, когда: 1. Заголовок статьи (который попадает в урл) - осмысленное предложение на английском языке. 2. Поисковику удобно по ним искать осмысленные фразы. 3. Родной язык - английский и человеку понятна фраза в урл. Нам русскоязычным то это вообще не к чему. Ну чем нам легче, если вместо /katalog/details/483/23 будет /katalog/details/483/23/igri-soft/novie/civilization-iv--polnoe-sobranie-dvd&Itemid=2 и поисковику этот транслит разве облегчает поиск? а трафику более чем в 2 раза больше получается. у меня на 5000 названий карта сайта в xml около двух мегабайт получается. Кстати, в настоящее время у меня работает без транслита. В utf-8 в урл отлично русские буквы работают. Проблемы пока заметил, если % и квадратные скобки в названии. Приходится убирать. Раз уж урл вида "/katalog/details/483/23" однозначно определяет необходимую страницу, я бы перешел к такой адресации Подскажите, пожалуйста, как убрать лишнее, раз Вы понимаете как убрать itemid
1. Транслит понятнее 2. Ходят слухи, что поисковики понимают транслит. И вообще, тема не об этом... vitaliy662, пробуй комментировать строки с $segments[] = Код (PHP): //if($product_id_exists) { // $product_alias = getProductTitle($pid); // $segments[] = $product_alias; //}
Большое спасибо! Закомментировать пришлось еще в нескольких местах, но направление подсказали правильно. Кстати у меня не дал результата следущий совет: Я вообще убрал этот кусок кода. Тогда пропали Itemid. Причем, что непонятно, если убираешь и оставшиеся строки рядом: Код (PHP): default: break; то скрипт вываливается с ошибкой. Если разделить пустой строкой, то работает: Код (PHP): default: break;
поставил себе - вроде все ОК! но сегодня запустил себе сделать sitemap.xml с сайта http://www.htmlweb.ru/analiz/sitemap.php -раньше он все делал корректно, но сегодня он стал мне генерить СОТНИ страниц типичный пример: http://www.{мой-сайт}.ru/market//market/details/8/6/{tovar}//market/category/1//market/category/1//market/category/1//market/category/1//market/category/1//market/category/1//market/category/2//market/category/3//market//market//market/search то есть именно двойные слэши выводит... и дубли его зациклило.. или я что-то не так сделал ? внешне на сайте все OK! http://www.{мой-сайт}.ru/market/details/17/2/{kategoriya}/{tovar} как это исправить? или эта та самая проблема XMAP?!!
Без понятия, как исправить и это не "та самая проблема". Если стоит xmap, то зачем ещё что-то для карты использовать?
с предыдущей проблемой разобрался =) а можно ли сделать как-то чтобы в адресе категорий товаров не было {/market/category/1/} а в товарах не было {/market/details/10/1/} то есть убрать коды групп и товаров и слова category, details? то есть сократить уровень вложенности до реальной структуры {market/nazvanie-kategorii/nazvanie-tovara}?
Здравствуйте. Спасибо за раскрытие актуальной темы. Есть небольшой вопросик. При установке router.php преобразование ссылки идет не до конца - остается параметр ?manufacturer_id. Т.е. там где есть этот параметр я получаю url ,например, вида: для категории - http://site.ru/magazin/products.html?manufacturer_id=203 для товара - http://site.ru/magazin/details/3313/19/lazernie-printeri/printer-brother-hl-5270dn.html?manufacturer_id=203 Хотелось бы, чтобы преобразование шло до конца. Например, для категории - http://site.ru/magazin/products-brother.html для товара - http://site.ru/magazin/details/3313/19/lazernie-printeri/printer-brother-hl-5270dn.html - можно параметр ?manufacturer_id игнорировать, т.к. ссылка и без него уникальна. В router.php (скаченном по Вашей ссылке) есть функция getmanufacturerName($id), но она закоментирована и нигде не вызывается. Буду признателен, если поможете "докрутить" router.php, чтобы преобразование ссылок было полным. Спасибо.
Захотел... Такое с этими роутерами невозможно. Но кое-что сделано. Обновлено 17.02.2010 Добавлена обработка производителей (в модуле производителей, к примеру) Стандартный вид ссылки (не ЧПУ): index.php?option=com_virtuemart&page=shop.browse&m anufacturer_id=12&Itemid=2 Вид ссылки со старой версией router.php: products.html?manufacturer_id=12 C этой версией router.php: manufacturer/12/hunter.html Качать отсюда
Подскажите пожалуйста что имелось виду "поставил роутер с транслитерацией". я Поставил yvtransliterate и скопировал файл роутер в папочку виртлмарт и откорректировал файлик ps_session.php . И чет не убралось index.php?option=com_virtuemart&page=shop.browse&category_id=172&Treeid=152&Itemid=2&vmcchk=1&Itemid=2 Подчкажите пожалуйста в чем проблема