0 Пользователей и 1 Гость просматривают эту тему.
  • 267 Ответов
  • 83298 Просмотров
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Если вы ищете решение для красивых и коротких ссылок, без всяких цифр, а так же с возможностью вписывания алиасов вручную, причем без нагрузки на сервер, то предлагаю заглянуть в эту тему



Вобщем поглядел на роутер от E-fusion, обалдел от количества создаваемых им запросов (по 2 на КАЖДУЮ ссылку категории, плюс по запросу на каждую ссылку содержащую алиас товара (даже если товар один и тот же), огорчился отсутсвию обработки производителей и тд.. Поковырявшись несколько дней написал свой вариант роутера, решил поделиться с народом.

Ссылка на категорию: /category/8-mediapleri
Ссылка на категорию и фильтрация по производителю: /category/manufacturer/9-proektori/4-sony
Ссылка на карточку товара: /category/product/8-mediapleri/17-digis

Как видно, сначала идет схема пути, затем сам путь из алиасов, с добавлением id впереди.
На остальных страницах, кроме shop.browse и shop.product_details вначало еще добавляется тип страницы, например: /ask/category/product/8-mediapleri/17-digis

Преимущества:
1) Минимум запросов (при 50 ссылках на категории и 10 на товары соотношение запросов этого роутера и E-fusion - 11:120, тоесть в 12 (!) раз меньше запросов)
2) Создает алиасы производителей, прикрепленных файлов и тд.

Недостатки:
1) Не отображает иерархию категорий
2) Попрежнему на каждый товар свой запрос в бд (однако повторные запросы не производятся)


В 1.1.5 есть глюк с пагинацией. Чтоб его исправить надо закомментить строчку search_string=$sess->url($search_string) в файле administrator\components\com_virtuemart\html\shop.browse.php

----------------------------------------------------------------------------------------------------------------------
from Beagler
Глюк с пагинацией из-за того, что пагинатор добавляет пустую category_id
Достаточно в роутер после
Код
if (isset($query['page'])) {
$page = $query['page'];
unset($query['page']);
}
добавить
Код
if (isset($query['category_id'])) {
if ($query['category_id']=='') {
unset($query['category_id']);
}
}



[вложение удалено Администратором]
« Последнее редактирование: 17.03.2012, 16:45:55 от danik.html »
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

mrhuge

  • Захожу иногда
  • 222
  • 7 / 0
  • http://muzalliance.ru/
ЕЕЕЕ! Даня )))) ю а зе чемпион!! на 72 категории - 11 запросов в Базу данных )) Роутер от Dutch их конечно вообще не генерирует, но тут ведь мы получаем полное название товара в url! И ведь наверное количество запросов можно еще уменьшить.

Что еще прикольно, что 2 косые скобки рядом с ID категорий и товаров заменились на дефисы. То есть стали более цивильные url-ы.

Как я понимаю фильтрацию по производителю можно вызвать только из твоего модуля категорий.

Какие рекомендации:
1) твоя версия роутера не делает транслит русских букв в латиницу. Ты как сам считаешь надо делать транслит или нет? Можно было бы выложить одну версию с транслитом, а другую без.

2) Еще вырежи пожалуйста окончание "?pop=0" при смене товара внутри страницы товара по стрелочкам. Может быть способом как отсюда http://joomlaforum.ru/index.php/topic,50193.msg570079/topicseen.html#msg570079

3) надо решить что-то с дублями страниц с разными url - вот какое пока есть решение http://joomla-support.ru/post79685-1.html

4) и еще как думаешь надо ли сделать перевод заглавных букв в урл-е в обычные для красивости? или не стоит? раньше вроде так было

А в целом всё очень круто! Как я уже говорил ты настоящий талант оптимизации :) вот можешь зайти посмотреть как работает http://muzalliance.ru/ режим отладки включен
« Последнее редактирование: 21.09.2010, 12:52:27 от mrhuge »
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
твоя версия роутера не делает транслит русских букв в латиницу. Ты как сам считаешь надо делать транслит или нет? Можно было бы выложить одну версию с транслитом, а другую без.
ну елы палы...залил с фолсом..

транслит можно включить заменив в начале файла в строке
define('TRANSLITERATE', false);  false на true

кстати буду благодарен если ктонить даст пинка в сторону инфы по кириллическим урлам, чем они плохи
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

mrhuge

  • Захожу иногда
  • 222
  • 7 / 0
  • http://muzalliance.ru/
Слушай, Даник. А каким образом тебе удалось добиться такого большого снижения запросов?
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
вопервых static $var. Скажем если мы уже вытянули имя товара из базы по необходимому id, рациональнее сохранить это имя на время работы скрипта, чем делать запрос в бд всякий раз.
вовторых, число категорий даже в больших магазинах обычно невелико, поэтому можно сделать один запрос, выбирающий все категории. тоже и про производителей.

За отправную точку был взят SEF роутер from beagler, там даже функция vm_translate осталась )) впрочем только она и осталась, все остальное написано с нуля.
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

mrhuge

  • Захожу иногда
  • 222
  • 7 / 0
  • http://muzalliance.ru/
Слушай прикольно - в общем то ничего супер сверх, но действительно логично получать данные за один запрос. Просто о чём думают ребята типа E-fusion. Наверное не думают, а просто куда их тащит, туда и тащатся :)

Я щас загнал твой роутер и старый в araxis merge - прошёлся по коду. Действительно заметно, что везде стоит присвоение $var. В старой версии куча case - у тебя такого вообще нет, наверное в них и дело :) Я конечно пока нихрена не понимаю в программировании, но вижу что у тебя кода существенно поубавилось по сравнению со старой версией - прямой признак оптимизации.
*

mrhuge

  • Захожу иногда
  • 222
  • 7 / 0
  • http://muzalliance.ru/
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
это id объектов (производителей, категорий, товаров)
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

mrhuge

  • Захожу иногда
  • 222
  • 7 / 0
  • http://muzalliance.ru/
я и пытаюсь понять как может быть у производителя id 325 :)
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

mrhuge

  • Захожу иногда
  • 222
  • 7 / 0
  • http://muzalliance.ru/
Ну и пусть будет раз нет причин :)

ну просто число большое - интересно откуда сформировалось
« Последнее редактирование: 22.09.2010, 18:44:26 от mrhuge »
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
id в таблицах базы данных автоинкрементируется. причем бд помнит последний id, и каждый новый будет на единицу больше. даже если ты удалишь все категории счетчик не сбросится а будет считать дальше. так что id может быть больше чем количество категорий.
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

mrhuge

  • Захожу иногда
  • 222
  • 7 / 0
  • http://muzalliance.ru/
блин :) точно, а я думал что через csv improved и id производителя обнуляется...
слушай а каким тогда образом обнулить id производителя? вручную через phpmyadmin? а в какой таблице он сидит?
*

mrhuge

  • Захожу иногда
  • 222
  • 7 / 0
  • http://muzalliance.ru/
Вычищаю jos_vm_manufacturer и все равно он продолжает наращивать - уже 400 с чемто :)
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
автоинкремент можно сбросить так. заходим в таблицу, жмем вкладку ОПерации. внизу есть Опции таблицы и значение  auto_increment. меняем его на какой хотим. только меньше существующего значения id он не станет - бд не позволит
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

mrhuge

  • Захожу иногда
  • 222
  • 7 / 0
  • http://muzalliance.ru/
Еее ;D надо сделать так - сначала сделать очистку базы через CSV improved, а потом increment установить в позицию "2".
И всё супер пупер.

Расковыряем твой модуль до кишок  ;D
*

murat

  • Захожу иногда
  • 261
  • 13 / 0
прекрасный роутер.а нельзя исключить id категорий и разделов из ссылок?
*

zigaYO

  • Захожу иногда
  • 103
  • 4 / 0
  • deep in the sky
А как подружить этот роутер с мини изображениями в корзине? После включения SEF мини картинка в корзине пропадает.

без SEF код ссылки на изображения выглядит так:
Код
<img src="http://domen.ru/components/com_virtuemart/show_image_in_imgtag.php?filename=resized%2FDena_3155_4c9a12e4b86f7_200x200.jpg&newxsize=200&newysize=200&fileout=" height="200" width="200" alt="Dena 3155" class="ice-image" border="0"/>

после включения sef:
Код
<img src="http://domen.ru/components/com_virtuemart/themes/tpmystore/images/noimage.gif" alt="Dena 3155" class="ice-image" border="0"/>

Скрины:
без SEF
c SEF http://s006.radikal.ru/i213/1009/ab/ad3e24ed55e2.jpg

Подскажите где копать надо...
« Последнее редактирование: 30.09.2010, 14:04:28 от zigaYO »
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
прекрасный роутер.а нельзя исключить id категорий и разделов из ссылок?
Нельзя. В cms все завязано на id. Еслиб в виртуе хотяб были поля алиасов как в других компонентах, то ещеб криво-косо это былоб возможным. А так, в роутере алиасы создаются на лету, на основе названия, и соответсвия между полученным алиасом и именем категории одностороннее, тоесть имея алиас нельзя узнать какой категории этот алиас принадлежит.

Используйте сторониие sef-компоненты.
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

murat

  • Захожу иногда
  • 261
  • 13 / 0
не работает просмотр заказа (order_details). Нажимаю "вид" и меня выкидывает на главную.
« Последнее редактирование: 23.09.2010, 09:49:53 от murat »
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
не могу это найти)
напишите по шагам. и напишите ссылку которая не работает
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

PaLyCH

  • Давно я тут
  • 956
  • 146 / 19
  • Менеджер проектов
1. не работает оформление заказа.
Действие: Добавить товар в корзину - Перейти в корзину - Нажать оформление заказа
Почему-то хочет идти через SSL - ссылка http://XXX/katalog-odezhdy/checkout.html?ssl_redirect=1. Хотя он отключен

2. Не могу посмотреть информацию о заказе.
Действие: Авторизация на сайте - Личный кабинет - Просмотр информации о заказе
Тоже самое. Редирект на главную страницу виртуя

3.
А так отличный роутер, запросов вообще минимализм. Памяти, единственное, много требуется, когда товаров более  63 000
« Последнее редактирование: 23.09.2010, 10:56:11 от PaLyCH »
*

mrhuge

  • Захожу иногда
  • 222
  • 7 / 0
  • http://muzalliance.ru/
У меня тоже не работает просмотр заказа http://muzalliance.ru/shop/order-details.html?order_id=11
выкидывает на главную страницу магазина.

Плюс не работает поиск в модуле поиска. Без роутера работает.
*

murat

  • Захожу иногда
  • 261
  • 13 / 0
Вот у меня ошибка та, что в предыдущем посте.
*

Efanych

  • Глобальный модератор
  • 4684
  • 644 / 0
  • Меняю свою жизнь на 360°!
Всё супер работает. Полезная штуковина.  danik.html спасибо за труды! +
Создание сайтов, шаблонов, помощь в решении проблем.
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
седня выложу с исправленными ошибками. верней без ошибок))
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

murat

  • Захожу иногда
  • 261
  • 13 / 0
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
обновил роутер. теперь в самом роутере вроде багов не осталось. Зато есть немало в самом вирте.
Скажем в 1.1.5 есть глюк с пагинацией. Чтоб его исправить надо закомментить строчку search_string=$sess->url($search_string) в файле administrator\components\com_virtuemart\html\shop.browse.php
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

mrhuge

  • Захожу иногда
  • 222
  • 7 / 0
  • http://muzalliance.ru/
Текс, Даник, предлагаю подвести итог, что делать с дублями url-ов, которые образует роутер.

После установки роутера мы имеем 3 ссылки на один и тотже товар:
http://muzalliance.ru/shop/product/5-access-virus-c.html - вход через страницу следующего товара
http://muzalliance.ru/shop/category/product/2-sintezatori/5-access-virus-c.html - вход через категорию
http://muzalliance.ru/shop/category/manufacturer/product/2-sintezatori/3-access/5-access-virus-c.html - вход через категорию отфильтрованную по производителю

По старым ссылкам даже после применения роутера всё равно заходит:
http://muzalliance.ru/shop.html?page=shop.product_details&product_id=5&flypage=flypage.tpl&pop=0
http://muzalliance.ru/shop.html?page=shop.product_details&flypage=flypage.tpl&product_id=5&category_id=2
http://muzalliance.ru/shop.html?page=shop.product_details&flypage=flypage.tpl&product_id=5&category_id=2&manufacturer_id=3

shop - это алиас

Итого 6 ссылок! Одуреть можно :) Эти дубли делает вонючий Вирт, но надо определиться как с этим быть.

Как помогает вот такое вырезание мусора http://joomla-support.ru/thread17862.html не понимаю:
в ps_session.php перед // make url absolute вставить

Цитировать
if ($tmp_Itemid) {
$url = preg_replace('!&amp;page=shop.browse&amp;category_id=\d{1,2}!', '', $url);
$url = preg_replace('!\?page=shop.browse(&|&amp;)category_id=\d{1,2}(&|&amp;)!', '?', $url);
}

Правку сделал, но результата не вижу.

Нужно определиться какие ссылки закрыть для поисковых роботов. Как им будет лучше доходить то страницы товара. Наверное лучше через просто категорию без фильтров по производителю. Ссылка из следующего товара короче, но в нее попадать роботу может быть неудобно.

Значит в robots.txt надо внести такие строчки:

Цитировать
Disallow: /shop/category/manufacturer/product/
Disallow: /shop/product/

Останутся доступными только ссылки
на товары вида /shop/category/product/
на категории вида /shop/category/
на категории отфильтрованные по производителям вида /shop/category/manufacturer/

Верно или нет?

А что делать со старыми не ЧПУ ссылками, которые остались вообще ума не приложу. Такое ведь наверное не сработает: Disallow /shop.html* Хотя робот может быть и не сможет найти ссылки не ЧПУ вида.
« Последнее редактирование: 25.09.2010, 19:43:13 от mrhuge »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Перенос с 1.5 на 3.5 + VirtueMart

Автор andrey488

Ответов: 4
Просмотров: 2627
Последний ответ 07.03.2017, 01:19:33
от SeBun
Проблема с установкой VirtueMart 1.1.4

Автор Tell

Ответов: 10
Просмотров: 6509
Последний ответ 02.01.2017, 17:28:01
от pomogu_chem_smogu
Нет категорий в списке при добавлении товара

Автор graforlov

Ответов: 5
Просмотров: 2843
Последний ответ 13.12.2015, 21:37:21
от Crazybor
Проблемы с установкой VirtueMart

Автор inka

Ответов: 14
Просмотров: 7692
Последний ответ 03.09.2015, 01:44:49
от Amigos
mod VirtueMart latestprod способствовал появлению белого экрана

Автор smogrom

Ответов: 21
Просмотров: 3230
Последний ответ 15.01.2015, 11:50:23
от Schumaker