Joomla 1.5 router.php для SEF-ссылок в Virtuemart 1.1

Тема в разделе "VirtueMart", создана пользователем OlegM, 06.01.2010.

  1. OlegM
    Offline

    OlegM Russian Joomla! Team Команда форума

    Регистрация:
    12.04.2007
    Сообщения:
    4 356
    Симпатии:
    370
    Пол:
    Мужской
    Посмотреть вложение router_vm114.zip c транслитом названий категорий и товаров.

    Установка router.php Virtuemart (как и любого другого роутера компонента)
    - положить файл в папку компонента, т.е. в нашем случае - в папку components/com_virtuemart/

    Но у виртуя глюк со ссылками на категории - ссылки на категории, созданные в меню, отличаются от ссылок внутри самого виртуя и в его модулях, т.е. есть дубли страниц с разными URL.
    Надо править ps_session.php:
    перед
    Код (PHP):
    1. // make url absolute

    надо вставить вырезание мусора
    Код (PHP):
    1. if ($tmp_Itemid) {
    2. $url = preg_replace('!&page=shop.browse&category_id=\d{1,2}!', '', $url);
    3. $url = preg_replace('!\?page=shop.browse(&|&)category_id=\d{1,2}(&|&)!', '?', $url);
    4. }
    ничего лучше не придумал и по уму надо объединять 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):
    1. define('PAGE_SHOP_MANUFACTURER', 'manufacturer');

    Посмотреть вложение router_vm114-1.zip - скачать новую версия router.php
     
    Последнее редактирование: 03.04.2010
    Asylum нравится это.
  2.  
  3. varakuta
    Offline

    varakuta Недавно здесь

    Регистрация:
    21.05.2009
    Сообщения:
    271
    Симпатии:
    2
    Пол:
    Мужской
    Re: Руководство по SEO оптимизации и SEF настройке Joomla стандартными способами

    Спасибо ) sourpuss
    роутер у меня стоит, но наверное
    без транслитерации он
    щас попробую ваш способ

    а вот вопрос по тексту

    2 регулярки в одну. - это что значит?
     
  4. varakuta
    Offline

    varakuta Недавно здесь

    Регистрация:
    21.05.2009
    Сообщения:
    271
    Симпатии:
    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
     
  5. OlegM
    Offline

    OlegM Russian Joomla! Team Команда форума

    Регистрация:
    12.04.2007
    Сообщения:
    4 356
    Симпатии:
    370
    Пол:
    Мужской
    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 магазина
     
  6. andreymil
    Offline

    andreymil Недавно здесь

    Регистрация:
    23.01.2010
    Сообщения:
    20
    Симпатии:
    1
    Пол:
    Мужской
    Извините, как так не работают ссылки виртуя в Xmap, когда не работает только главная страница http://www.vitaio.ru/karta-saita.html?sitemap=1, да и подскажите пожалуйста где находится ps_session.php:(
     
  7. Offline

    vitaliy662 Недавно здесь

    Регистрация:
    23.01.2010
    Сообщения:
    3
    Симпатии:
    0
    Пол:
    Мужской
    В каких случаях не работает?
    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/
    Это почему так?
     
    Последнее редактирование модератором: 05.04.2014
  8. OlegM
    Offline

    OlegM Russian Joomla! Team Команда форума

    Регистрация:
    12.04.2007
    Сообщения:
    4 356
    Симпатии:
    370
    Пол:
    Мужской
    ps_session - в administrator\components\com_virtuemart\classes\

    Скажу по другому - неправильно работают.

    Itemid в Xmap я убирал так - ~434-439 строка, заменить на это
    Код (PHP):
    1. if ( !@$node->home && (strpos( $link, 'Itemid=' ) === FALSE) ) {
    2.      if (!strpos($link, '.html')) $link .= '&Itemid='.$node->id;
    3. }
    4. break;


    ну и получатся дубли страниц

    обратное преобразование работает по ID товара и категории. Вот если их (цифры) выкинешь, то может быть глюк.
     
  9. Offline

    тонкам Недавно здесь

    Регистрация:
    23.01.2010
    Сообщения:
    1
    Симпатии:
    0
    Пол:
    Мужской
    Извините, как так не работают ссылки виртуя в Xmap, когда не работает только главная страница http://www.vitaio.ru/karta-saita.html?sitemap=1, да и подскажите пожалуйста где находится ps_session.php

    administrator / components / com_virtuemart / classes/ps_session.php
     
    Последнее редактирование: 23.01.2010
  10. Offline

    vitaliy662 Недавно здесь

    Регистрация:
    23.01.2010
    Сообщения:
    3
    Симпатии:
    0
    Пол:
    Мужской
    Я так подумал, что "Человеко Понятные Урл" это хорошо, когда:
    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
     
    Последнее редактирование модератором: 05.04.2014
  11. OlegM
    Offline

    OlegM Russian Joomla! Team Команда форума

    Регистрация:
    12.04.2007
    Сообщения:
    4 356
    Симпатии:
    370
    Пол:
    Мужской
    1. Транслит понятнее
    2. Ходят слухи, что поисковики понимают транслит.
    И вообще, тема не об этом...

    vitaliy662, пробуй комментировать строки с $segments[] =

    Код (PHP):
    1. //if($product_id_exists)    {
    2. //  $product_alias = getProductTitle($pid);
    3. //  $segments[] = $product_alias;
    4. //}
     
  12. Offline

    vitaliy662 Недавно здесь

    Регистрация:
    23.01.2010
    Сообщения:
    3
    Симпатии:
    0
    Пол:
    Мужской
    Большое спасибо!
    Закомментировать пришлось еще в нескольких местах, но направление подсказали правильно.

    Кстати у меня не дал результата следущий совет:

    Я вообще убрал этот кусок кода. Тогда пропали Itemid.
    Причем, что непонятно, если убираешь и оставшиеся строки рядом:

    Код (PHP):
    1. default:
    2.     break;


    то скрипт вываливается с ошибкой.
    Если разделить пустой строкой, то работает:

    Код (PHP):
    1. default:
    2.  
    3.     break;
     
    Последнее редактирование модератором: 05.04.2014
  13. OlegM
    Offline

    OlegM Russian Joomla! Team Команда форума

    Регистрация:
    12.04.2007
    Сообщения:
    4 356
    Симпатии:
    370
    Пол:
    Мужской
    vitaliy662, у тебя ссылки без .html, поэтому Itemid не убирался
     
  14. Offline

    bigjump Недавно здесь

    Регистрация:
    15.01.2010
    Сообщения:
    3
    Симпатии:
    0
    Пол:
    Мужской
    поставил себе - вроде все ОК!

    но сегодня запустил себе сделать 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}

    как это исправить? =O

    или эта та самая проблема XMAP?!!
     
  15. OlegM
    Offline

    OlegM Russian Joomla! Team Команда форума

    Регистрация:
    12.04.2007
    Сообщения:
    4 356
    Симпатии:
    370
    Пол:
    Мужской
    Без понятия, как исправить и это не "та самая проблема". Если стоит xmap, то зачем ещё что-то для карты использовать?
     
  16. Offline

    bigjump Недавно здесь

    Регистрация:
    15.01.2010
    Сообщения:
    3
    Симпатии:
    0
    Пол:
    Мужской
    с предыдущей проблемой разобрался =)

    а можно ли сделать как-то чтобы в адресе категорий товаров не было {/market/category/1/} а в товарах не было {/market/details/10/1/}
    то есть убрать коды групп и товаров и слова category, details?

    то есть сократить уровень вложенности до реальной структуры {market/nazvanie-kategorii/nazvanie-tovara}?
     
    Последнее редактирование: 30.01.2010
  17. OlegM
    Offline

    OlegM Russian Joomla! Team Команда форума

    Регистрация:
    12.04.2007
    Сообщения:
    4 356
    Симпатии:
    370
    Пол:
    Мужской
    Тогда надо убирать роутер и ставить SEF-компонент для ЧПУ
     
  18. Offline

    LepparD Недавно здесь

    Регистрация:
    05.02.2010
    Сообщения:
    1
    Симпатии:
    0
    Пол:
    Мужской
    Здравствуйте.
    Я новичок. Пожалуйста, пошагово опишите как сделать ЧПУ в Virtuemart
     
  19. Offline

    zvv Недавно здесь

    Регистрация:
    17.02.2010
    Сообщения:
    1
    Симпатии:
    0
    Пол:
    Мужской
    Здравствуйте. Спасибо за раскрытие актуальной темы.
    Есть небольшой вопросик.
    При установке 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, чтобы преобразование ссылок было полным.
    Спасибо.
     
  20. OlegM
    Offline

    OlegM Russian Joomla! Team Команда форума

    Регистрация:
    12.04.2007
    Сообщения:
    4 356
    Симпатии:
    370
    Пол:
    Мужской
    Захотел... Такое с этими роутерами невозможно.
    Но кое-что сделано.

    Обновлено 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
    Качать отсюда
     
  21. Offline

    Zaicev Недавно здесь

    Регистрация:
    07.12.2009
    Сообщения:
    68
    Симпатии:
    0
    Пол:
    Мужской
    Подскажите пожалуйста что имелось виду "поставил роутер с транслитерацией". я Поставил yvtransliterate и скопировал файл роутер в папочку виртлмарт и откорректировал файлик ps_session.php . И чет не убралось index.php?option=com_virtuemart&page=shop.browse&category_id=172&Treeid=152&Itemid=2&vmcchk=1&Itemid=2
    Подчкажите пожалуйста в чем проблема
     

Поделиться этой страницей

Загрузка...