Форум Joomla! Україна
SEF для Virtuemart (Joomla 1.5) - Версія для друку.

+- Форум Joomla! Україна (https://joomla-ua.org/forum)
+-- Форум: Розширення Joomla! (https://joomla-ua.org/forum/forum-27.html)
+--- Форум: Магазини та електронна комерція (https://joomla-ua.org/forum/forum-90.html)
+---- Форум: Virtuemart (https://joomla-ua.org/forum/forum-8.html)
+---- Тема: SEF для Virtuemart (Joomla 1.5) (/thread-356.html)



SEF для Virtuemart (Joomla 1.5) - Dutch - 20.12.2008

На даний момент у компоненті інтеренет-магазину VirtualMart для Joomla 1.5 відсутній роутер посилань, який конвертує посилання.

Пропоную Вашій увазі роутер, який написав саме для останньої на сьогодні версії VirtueMart 1.1.2 stable.

Основний принцип роботи роутера:
У Joomla 1.5 усі посилання мають вигляд http://example.com/shop.html?page=shop.browse&category_id=1 (для категорії), у той час як роутер перетворює таке посилання у більш красиве та короткий вигляд - http://example.com/shop/shop.browse/1.html

Сам роутер перетворює 90% посилань. Посилання для обробки роутером замовлень в інтеренет-магазині я не робив, щоб запобігти якимось помилкам та і особливо для цієї частини магазину нам красиві посилання не так вже й важливі, адже основне завдання у нас короткі посилання для категорій та товарів, а також для індексації пошуковими машинами.

Зауваження:
Роутер посилань коректно працює із включеними розширеннями (суфіксами) файлів та з відключеною функцією mod_rewrite у налаштуваннях джумли. Якщо відключити функцію суфіксів для файлів та залишити включену функцію mod_rewrite, виникатимуть помилки 404, це пов'язано з тим, що параметрах URL використовується крапка (наприклад: shop.browse).
Тому для коректної роботи роутера пропоную 2 варіанти налаштувань SEF в конфігурації джумла:
1. включена функція mod_rewrite і розширення (суфікси) файлів;
2. відключена функція mod_rewrite, а розширення (суфікси) файлів можуть бути включені або відключені.

Застосування:
1. Розпакувати архів;
2. Залити файл router.php у папку components/com_virtuemart/;
3. Включити та налаштувати SEF в конфігурації джумла відповідно до зауважень (див. вище).


Re: SEF для Virtuemart (Joomla 1.5) - gruz - 22.12.2008

Маю посилання виду
ukrstyle.com/index.php?page=shop.product_details&flypage=flypage-ask.tpl&product_id=3&category_id=4&option=com_virtuemart&Itemid=17

Роутер перетворює на
ukrstyle.com/itopmenu-17/shop.product_details/4/flypage-ask.tpl/3.html

Але за цим посиланням бачу сторінку з без товару. Хоча шлях до товару вказується в breadcrumbs самого магазина відображаєтсья правильно.

Шаблон ВМ не стандартний, а зі стандартного перероблений. Але попробував на стандартном. Те саме.

Може тут проблема? В налаштуваннях категорії:
Сторінка перегляду категорій: managed
Подання (flypage) категорії: flypage-ask.tpl


Re: SEF для Virtuemart (Joomla 1.5) - Dutch - 22.12.2008

а звідки у тебе itopmenu-17?


Re: SEF для Virtuemart (Joomla 1.5) - gruz - 22.12.2008

Ну я звідки знаю. То ввімкнів
1. включена функція mod_rewrite і розширення (суфікси) файлів;

Воно такі лінки зробило. Зараз заллю це на локал, може щось награюсь та вийде.


Re: SEF для Virtuemart (Joomla 1.5) - Dutch - 22.12.2008

а який алиас стоїть у посиланні на магазин?


Re: SEF для Virtuemart (Joomla 1.5) - gruz - 22.12.2008

Угу, він і стоїть.
Магазин є першою сторінкою сайту.

Вже змінив на інший, якщо ти на сайт заглядаєш.


Re: SEF для Virtuemart (Joomla 1.5) - t43d3n - 12.02.2009

Добрый день!
Вы не подскажете как решить такую проблему - иногда при заходе на сайт у меня к ссылкам добавляется ненужный хвост, вида:
40c491cf5f64423e4c593d8153b8516c=fccfa89cbb78d85c0594b17b07c90d80

Т.е. вместо нормальной ссылки
http://shop.artmanager.ru/shop/shop.product_details/25/flypage.tpl/44.html

Получается такая:
http://shop.artmanager.ru/shop/shop.product_details/25/flypage.tpl/44.html?40c491cf5f64423e4c593d8153b8516c=fccfa89cbb78d85c0594b17b07c90d80

Естественно, после нажатия переход осуществляется не туда куда надо...

С чем это может быть связано и как от этого избавиться? :unknown:


Re: SEF для Virtuemart (Joomla 1.5) - Dutch - 12.02.2009

это сессия


Re: SEF для Virtuemart (Joomla 1.5) - gruz - 16.02.2009

Якщо я заходжу з фронта під юзером в здійснені замовлення, клікаю переглянути замовлення і в самому замовленні клікаю на товар, лінк має вигляд:
http://ukrstyle.com/index/shop.product_details/117.html
Воно перекидає на сторінку
http://ukrstyle.com/index/shop.browse/?keyword=&limitstart=
і каже:

Повідомлення
Повідомлення
Вибачте, але запитуваний товар не знайдено!


Хто винен і що робити?


Re: SEF для Virtuemart (Joomla 1.5) - gruz - 11.03.2009

VM 1.1.3, Joomla 1.5.9, SEF on, mod_rewrite on, suffix on

Ще один баг, вже критичний. Попередній і наступний товари - лінки не працюють!

Лінк виглядає:
http://ukrstyle.com/shop/shop.product_details/flypage.tpl/2.html?pop=0
а має
http://ukrstyle.com/shop/shop.product_details/4/flypage.tpl/2.html

Пропущено очевидно ID категорії /4/

P.S.
Я погемороївся трохи, але роутер поправити не зміг.
Тому прийшлось виправити Рядки:
170 було
Код:
$url_parameters = 'page=shop.product_details&product_id='.$next_product['product_id'].'&flypage='.$ps_product->get_flypage($next_product['product_id']).'&pop='.$pop;
стало
Код:
$url_parameters = 'page=shop.product_details&product_id='.$next_product['product_id'].'&flypage='.$ps_product->get_flypage($next_product['product_id']).'&pop='.$pop.'&category_id='.$category_id;;//##my200903120132 Виправляю, щоби router.php від Носова коректно опрацьовува попередні-наступні товари Було: $url_parameters = 'page=shop.product_details&product_id='.$next_product['product_id'].'&flypage='.$ps_product->get_flypage($next_product['product_id']).'&pop='.$pop;

і рядок 184
Було:
Код:
$url_parameters = 'page=shop.product_details&product_id='.$previous_product['product_id'].'&flypage='.$ps_product->get_flypage($previous_product['product_id']).'&pop='.$pop;
Стало:
Код:
$url_parameters = 'page=shop.product_details&product_id='.$previous_product['product_id'].'&flypage='.$ps_product->get_flypage($previous_product['product_id']).'&pop='.$pop.'&category_id='.$category_id;//##my200903120132 Виправляю, щоби router.php від Носова коректно опрацьовува попередні-наступні товари Було: $url_parameters = 'page=shop.product_details&product_id='.$previous_product['product_id'].'&flypage='.$ps_product->get_flypage($previous_product['product_id']).'&pop='.$pop;

Правлене філе додаю


Re: SEF для Virtuemart (Joomla 1.5) - bardus - 18.03.2009

Встановив цей скрипт на сайті. Але нажаль виникли труднощі при роботі з корзиною.

Коли відпрацьовує скрипт shop.cart.php

Там з'являється перелік товарів де є дві функціі оновити та видалити.
Коли натискаю на одну із цих кнопок виникає помилка "Сторінка не знайдена 404".

Причину знайшов
в basket.php
змінив
[code=php]<span class="syntaxdefault"> basename</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_SERVER</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'PHP_SELF'</span><span class="syntaxkeyword">]);</span><span class="syntaxdefault">  </span>[/code] на index.php

[code=php]<span class="syntaxdefault">    <br />131             </span><span class="syntaxcomment">/* UPDATE CART / DELETE FROM CART */<br /></span><span class="syntaxdefault">132        </span><span class="syntaxcomment">//Bardus correct 18.03.2009<br /></span><span class="syntaxdefault">133           $action_url </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $mm_action_url</span><span class="syntaxkeyword">.</span><span class="syntaxstring">'index.php'</span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> <br />        $product_rows</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">$i</span><span class="syntaxkeyword">][</span><span class="syntaxstring">'update_form'</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'<form action="'</span><span class="syntaxkeyword">.</span><span class="syntaxdefault"> $action_url </span><span class="syntaxkeyword">.</span><span class="syntaxstring">" method="</span><span class="syntaxdefault">post</span><span class="syntaxstring">" style="</span><span class="syntaxdefault">display</span><span class="syntaxkeyword">:</span><span class="syntaxdefault"> inline</span><span class="syntaxkeyword">;</span><span class="syntaxstring">"><br />        <input type="</span><span class="syntaxdefault">hidden</span><span class="syntaxstring">" name="</span><span class="syntaxdefault">option</span><span class="syntaxstring">" value="</span><span class="syntaxdefault">com_virtuemart</span><span class="syntaxstring">" /> <br /></span>[/code]
в shop.cart.tpl.php
[code=php]<span class="syntaxhtml"><br />if (!defined('_MIN_POV_REACHED')) { ?><br /><br />       <span style="font-weight:bold;"><span class="syntaxdefault"><?php echo $VM_LANG</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">_</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'PHPSHOP_CHECKOUT_ERR_MIN_POV2'</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">.</span><span class="syntaxdefault"> </span><span class="syntaxstring">" "</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$CURRENCY_DISPLAY</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">getFullValue</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'minimum_pov'</span><span class="syntaxkeyword">])</span><span class="syntaxdefault"> ?></span></span><br />       <span class="syntaxdefault"><?php<br />   </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">   else </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">       </span><span class="syntaxcomment">//Bardus correct 18.03.09<br /></span><span class="syntaxdefault">           $href </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $sess</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">url</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'index.php?page=checkout.index&ssl_redirect=1'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> true</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">           $href2 </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $sess</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">url</span><span class="syntaxkeyword">(</span><span class="syntaxdefault"> $mm_action_url </span><span class="syntaxkeyword">.</span><span class="syntaxdefault"> </span><span class="syntaxstring">"/index2.php?page=checkout.index&ssl_redirect=1"</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> true</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">           $class_att </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'class="checkout_link"'</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">           $text </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $VM_LANG</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">_</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'PHPSHOP_CHECKOUT_TITLE'</span><span class="syntaxkeyword">);</span><span class="syntaxdefault"> <br /></span></span>[/code]
Якщо хочу завершити покупку то теж пришлось виправити код
в chekout.index.php

[code=php]<span class="syntaxdefault"><br />                </span><span class="syntaxcomment">// We have something in the Card so move on<br /></span><span class="syntaxdefault">                if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$perm</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">is_registered_customer</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$auth</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'user_id'</span><span class="syntaxkeyword">]))</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{</span><span class="syntaxdefault"> </span><span class="syntaxcomment">// user is logged in and a registered customer<br /></span><span class="syntaxdefault">        $basket_html </span><span class="syntaxkeyword">.=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'<form action="'</span><span class="syntaxkeyword">.</span><span class="syntaxdefault"> SECUREURL</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">index</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">php</span><span class="syntaxstring">" method="</span><span class="syntaxdefault">post</span><span class="syntaxstring">" name="</span><span class="syntaxdefault">adminForm</span><span class="syntaxstring">"><br /> </span>[/code]

причина в тому що PHP_SELF повертає не 'ім'я_скрипта.html' а просто 'ім'я_скрипта'
Така проблема спостерігається на мої Ubuntu interpid, PHP 5.2.6 Apache 'ім'я_скрипта'
Робочий сервер теж має таку ж проблему
під Win на Denwer повертає 'ім'я_скрипта.html'

Питання чому різні значення повертає PHP_SELF ?


Re: SEF для Virtuemart (Joomla 1.5) - Vladlen - 21.04.2009

я вот что еще заметил.... после оформления заказа, показывается информация в которой указано что заказано и на какую сумму.... так вот, при при нажатии на товар, он перекидывает не в описание товара, а вообще не понятно куда....


Re: SEF для Virtuemart (Joomla 1.5) - jpn - 15.05.2009

Hi, this is jörg from germany. First, greet file for vm sef! Thanks!
Can anybody tell me, how to modify the router.php(SEF for Virtuemart) for replace german letters ä,ü,ö,ß with ae,ue,oe,ss in category and productnames for url?
See http://www.mbai.de for example category "Flöte" to "Floete"

Thanks!


Re: SEF для Virtuemart (Joomla 1.5) - gruz - 16.05.2009

Hi, jörg.

This router works without using titles of categories or products in URLs.

e.g.
In Joomla 1.5 links look like http://example.com/shop.html?page=shop.browse&category_id=1 (for a category), and when using the router it looks like http://example.com/shop/shop.browse/1.html

Besides, VM doesn't have something like title alias for products and categories (hm, maybe use SKU in product links...). It's a huge work to make translit automatically for at least Slavic languages. Well, for Slavic languages translit is not so needful for SEF.

I have some thoughts how to apply titles translit, but I don't think I'll improve them in live soon. :-(


You may search here, if you want to improve it yourself:
[url=]http://www.google.com.ua/search?hl=uk&client=firefox-a&rlz=1R1GGGL_uk&hs=P9u&q=joomla+router.php&btnG=%D0%9F%D0%BE%D1%88%D1%83%D0%BA&meta=[/url=]

Or I can send you a PDF-book, where is present an exlanation ho to create the file router.php for any component.


Re: SEF для Virtuemart (Joomla 1.5) - jpn - 18.05.2009

Thank's for the awnser! I wonder what happens with my virtuemart?
Take a look at this with router.php in folder com_virtuemart:
https://www.mbai.de/musikalien-finden/details/2182402/96/groups/personalities/abba/25-great-hits.html
U can see there are categories and full produktnames in the url!
And now without router.php :
https://www.mbai.de/musikalien-finden.html?page=shop.product_details&flypage=flypage.tpl&product_id=2182402&category_id=96
The same product ABBA 25 great hits.

Please send me the pdf-book, so I can understand what happens :Search:


Re: SEF для Virtuemart (Joomla 1.5) - jpn - 18.05.2009

Me again! Uuuups, I think I don't use the router.php we write about here. I use it from [url=]http://www.e-fusionsoft.com/[/url=]


Re: SEF для Virtuemart (Joomla 1.5) - gruz - 18.05.2009

Jorg, I've had a look at the router you use.

Try to make some modifications in it.

Find line ~38
Код:
                $category_alias = getCategoryTitle($query['category_id']);
and replace if with a set of lines like this
Код:
                $category_alias = str_replace("a","ae",getCategoryTitle($query['category_id']));
                $category_alias = str_replace("ö","oe",getCategoryTitle($query['category_id']));
...

Modify using the same logic other places when needed

P.S. Or you should write a function for the replacement and use it, not a set of lines each time.


Re: SEF для Virtuemart (Joomla 1.5) - jpn - 20.05.2009

Thanks I found out it by myself at the same time. Its done :ROFL:


Re: SEF для Virtuemart (Joomla 1.5) - vomchik - 06.09.2009

а в мене чомусь не працює, хоча зробив все по інструкції

лінк став таким:


http://proek-1/ru/katalog.html?page=shop.product_details&flypage=flypage.tpl&product_id=41&category_id=10

тобто працює на половину


Re: SEF для Virtuemart (Joomla 1.5) - rainford2009 - 21.06.2010

Скажіть будь-ласка, чому після задання типу валюти для товару, на сайті всеодно відображається ціна в доларах? Можливо потрібно десь у файлі конфігурації php зробити зміни?


Re: SEF для Virtuemart (Joomla 1.5) - gruz - 21.06.2010

Ти вважаєш, що це ти у правильній темі запитав?

У товара може бути одна чи декілька цін. Якщо раніше вони були призначені у іншій валюті, то нова ціна буде застосовуватись лише до нових товарів. Чи щось таке. Спробуй у товара видалити всі ціни, додати наново і подивитись на результат.

Або можеш запустити таке у phpmyadmin, щоби всі ціни змінити:
Код:
UPDATE `jos_vm_product_price` SET `product_currency` = 'UED'

Префікс таблицю і код валюти підстав свої.