Joomla 1.5 ЧПУ для Virtuemart 1.1.3 - 1.1.4 без дополнительных компонентов (на основе router.php)

Тема в разделе "Магазины, электронная коммерция", создана пользователем LiVsI, 27.10.2009.

  1. LiVsI
    Offline

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

    Регистрация:
    27.12.2007
    Сообщения:
    14
    Симпатии:
    0
    Пол:
    Мужской
    Применение сторонних компонентов для связки Joomla 1.5 + Virtuemart 1.1.X не всегда оправдано с точки зрения затрат ресурсов - еще один компонент увеличивает нагрузку на сервер.
    Уже описывалось решение с применением встроенного в Joomla 1.5 SEF и добавления в папку /components/com_virtuemart файла router.php, которое можно скачать здесь

    Столкнулся с тем, что у этого решения есть совсем крохотный недостаток - предполагалась работа на англоязычных сайтах, а посему название категории прямиком попадает в URL - то есть кириллица в урле (что иногда не есть хорошо). Для тех, кому надо работать в кириллице и передавать в URL латиницу - предлагаю воспользоваться небольшим исправлением с введением обычного для Joomla, но еще не пришедшего в Virtuemart приема алиасов - то есть создания латинского аналога названий категорий и продуктов для применения в URL.

    Процес в целом аналогичен как для категорий так и для товаров.

    Для категорий:
    1. Добавляем поле category_name_alias в таблицу #_vm_category с параметрами идентичными полю category_name
    2. Для получения работы с этим полем из админки Virtuemart - дополняем два файла:
    /administrator/components/com_virtuemart/html/product.product_category_form.php (чтобы данные поля выводились и их можно было менять)
    Код (CODE):
    1. <tr>
    2.       <td width="21%" nowrap><div align="right"><?php echo $VM_LANG->_('PHPSHOP_CATEGORY_FORM_NAME') ?>:</div></td>
    3.       <td width="79%">
    4.         <input type="text" class="inputbox" name="category_name" size="60" value="<?php echo shopMakeHtmlSafe( $db->sf('category_name')) ?>" />
    5.       </td>
    6.     </tr>
    7.     [B]<tr>
    8.       <td width="21%" nowrap><div align="right"><?php echo $VM_LANG->_('PHPSHOP_CATEGORY_FORM_NAME') ?>:</div></td>
    9.       <td width="79%">
    10.         <input type="text" class="inputbox" name="category_name_alias" size="60" value="<?php echo shopMakeHtmlSafe( $db->sf('category_name_alias')) ?>" />
    11.       </td>
    12.     </tr[/B]>

    /administrator/components/com_virtuemart/classes/ps_product_category.php (чтобы данные из формы админки записывались)
    Код (CODE):
    1. $fields = array(
    2.                                         'category_name' => vmGet( $d, 'category_name' ),
    3.                                         [B]'category_name_alias' => vmGet( $d, 'category_name_alias' ),[/B]
    4.                                         'category_publish' => vmGet( $d, 'category_publish' ),
    5.                                         'category_description' => vmGet( $d, 'category_description', '', VMREQUEST_ALLOWHTML ),
    6.                                         'category_browsepage' => vmGet( $d, 'category_browsepage' ),
    7.                                         'products_per_row' => vmRequest::getInt( 'products_per_row' ),
    8.                                         'category_flypage' => vmGet( $d, 'category_flypage' ),
    9.                                         'category_thumb_image' => vmGet( $d, 'category_thumb_image' ),
    10.                                         'category_full_image' => vmGet( $d, 'category_full_image' ),
    11.                                         'mdate' => $timestamp,
    12.                                         'list_order' => vmRequest::getInt('list_order'),
    13.                                     );

    Вуаля - теперь ЧПУ (SEO) для Виртуемарта работает как надо, без кириллицы в URL. Минус решения - при обновлении нужно будет повторить правки. Плюсы - удалось избежать установки еще одного компонента для организации ЧПУ.
    Из хотелок - прикрутить бы еще к этому всему плагин yvtransliterate, чтобы процесс транслитерации Кириллица->Латиница автоматом проходил...
     
    Последнее редактирование: 27.10.2009
  2.  
  3. LiVsI
    Offline

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

    Регистрация:
    27.12.2007
    Сообщения:
    14
    Симпатии:
    0
    Пол:
    Мужской
    Дополнение: Если для загрузки ассортимента магазина используется CSV Improved (1.7) - возможна загрузка csv файлов со значением этого поля, для этого нужно только добавить новое поле через Maintenance -> Update Available fields компонента
     
  4. Offline

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

    Регистрация:
    05.04.2007
    Сообщения:
    158
    Симпатии:
    10
    Пол:
    Мужской
    http://joomlaforum.ru/index.php/topic,50193.0.html
    тоже на всякий случай :)
     
  5. varakuta
    Offline

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

    Регистрация:
    21.05.2009
    Сообщения:
    271
    Симпатии:
    2
    Пол:
    Мужской
    хмммм... у меня поле добавилось для ввода , но хоть и показывается что сохранилось..., но не сохраняет ((((
     
  6. Offline

    Bentley GT Недавно здесь

    Регистрация:
    08.12.2009
    Сообщения:
    5
    Симпатии:
    0
    Пол:
    Мужской
    Столкнулся с проблемой:
    Не работает оформление заказа, выбрасывает в категорию
    Где исправить нужно чтобы оформление заказа не использовало sef или исправить ошибку. Может кто-то подсказать?
     
  7. Offline

    Bentley GT Недавно здесь

    Регистрация:
    08.12.2009
    Сообщения:
    5
    Симпатии:
    0
    Пол:
    Мужской
    Проблема исчезла после редактирования ps_session.php
     
  8. Offline

    Bentley GT Недавно здесь

    Регистрация:
    08.12.2009
    Сообщения:
    5
    Симпатии:
    0
    Пол:
    Мужской
    Возможно ли использование этого роутера и для модулей виртумарта? Если быть точным нужен под mod_jxtc_vmshowcase
     
  9. Offline

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

    Регистрация:
    17.12.2009
    Сообщения:
    3
    Симпатии:
    0
    Пол:
    Женский
    Добрый вечер, а вто в этом файле редактировать нужно? У меня тоже проблема с оформлением заказа, открываю корзину, нажимаю кнопку "оформить заказ" и на след. странице "оформление заказа" всего одна кнопка "следующий шаг", причем нажимаю на нее, а толку ноль(((( Помогите, пожалуйста разобраться:'(
     
  10. Offline

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

    Регистрация:
    18.04.2008
    Сообщения:
    1
    Симпатии:
    0
    Пол:
    Мужской
    Лучше написать, что указанные строчки в файле
    /administrator/components/com_virtuemart/classes/ps_product_category.php
    встречаются дважды: в update() и add().

    Также я не понял, какой router.php автор предлагает использовать. Если этот, то не написано, как его поменять (хотя понятно, что умеющий человек справится без проблем).
     
    Последнее редактирование: 11.03.2010
  11. Offline

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

    Регистрация:
    11.11.2008
    Сообщения:
    2
    Симпатии:
    0
    Пол:
    Мужской
    Ruclen %) тоже мучался

    тут забыли блин написать что в файле router.php

    надо заменить слова category_name на category_name_alias и только тогда все заработает! ;P

    хотя херня все ето... внутри так же .. так надо все менять ссылкт=и.. короче недоработан способб
     
    Последнее редактирование: 15.03.2010
  12. prokop
    Offline

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

    Регистрация:
    25.03.2010
    Сообщения:
    1
    Симпатии:
    1
    Пол:
    Мужской
    Я не морочился с никакими алиасами, а просто сделал замену русских букв латинскими. В файле router.php
    Для категории:
    $category_alias = str_replace(' ','-', $category_alias);
    $category_alias = str_replace(' ','-', $category_alias);
    заменить на:
    $category_alias = str_replace(' ','-', $category_alias);
    $category_alias = str_replace(' ','-', $category_alias);
    $category_alias = str_replace(array('а','б','в','г','д','е','ё','ж','з','и','й','к','л','м','н','о','п','р','с','т','у','ф','х','ц','ч','ш','щ','ъ','ы','ь','э','ю','я','А','Б','В','Г','Д','Е','Ё','Ж','З','И','Й','К','Л','М','Н','О','П','Р','С','Т','У','Ф','Х','Ц','Ч','Ш','Щ','Ъ','Ы','Ь','Э','Ю','Я',',','.'),
    array('a','b','v','g','d','e','e','j','z','i','i','k','l','m','n','o','p','r','s','t','u','f','h','c','ch','sh','sch','','y','','e','yu','ya','a','b','v','g','d','e','e','j','z','i','i','k','l','m','n','o','p','r','s','t','u','f','h','c','ch','sh','sch','','y','','e','yu','ya','',''),
    $category_alias);

    Для продуктов:
    $product_name = str_replace(' ','-', $product_name);
    $product_name = str_replace(' ','-', $product_name);
    заменить на:
    $product_name = str_replace(' ','-', $product_name);
    $product_name = str_replace(' ','-', $product_name);
    $product_name = str_replace(array('а','б','в','г','д','е','ё','ж','з','и','й','к','л','м','н','о','п','р','с','т','у','ф','х','ц','ч','ш','щ','ъ','ы','ь','э','ю','я','А','Б','В','Г','Д','Е','Ё','Ж','З','И','Й','К','Л','М','Н','О','П','Р','С','Т','У','Ф','Х','Ц','Ч','Ш','Щ','Ъ','Ы','Ь','Э','Ю','Я',',','.'),
    array('a','b','v','g','d','e','e','j','z','i','i','k','l','m','n','o','p','r','s','t','u','f','h','c','ch','sh','sch','','y','','e','yu','ya','a','b','v','g','d','e','e','j','z','i','i','k','l','m','n','o','p','r','s','t','u','f','h','c','ch','sh','sch','','y','','e','yu','ya','',''),
    $product_name);

    В результате все работает и нет проблем с обновлением. Файл router.php должен быть сохранен как utf8 без bom. Кракозябры, которые здесь, кто алфавит помнит - поймет, как заменить.
     
    Последнее редактирование: 25.03.2010
    LiVsI нравится это.
  13. LiVsI
    Offline

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

    Регистрация:
    27.12.2007
    Сообщения:
    14
    Симпатии:
    0
    Пол:
    Мужской
    Ну тоже вариант. Впрочем тоже полумера. Но зато вмешательство в файлы намного менше. Проверил - работает и Ваш способ. Впрочем и без проверки было ясно что сработает.
     
  14. Offline

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

    Регистрация:
    28.01.2010
    Сообщения:
    7
    Симпатии:
    0
    Пол:
    Мужской
    извините за нубство, если не сложно, выложите плиз ваш файлик router.php, немного непонятно что куда вставлять :[

    спасибо
     
  15. Offline

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

    Регистрация:
    28.11.2010
    Сообщения:
    4
    Симпатии:
    0
    Пол:
    Мужской
    Добрый день! У меня такая проблема - при переходе (кликнув подробнее) к подробному описанию товара нет ЧПУ. Роутер установлен, все категории с красивыми урлами, а в подробном описании нет - тут можно посмотреть. Заметил также, что при переходе к товару обратно после формы "задать вопрос по товару" ЧПУ есть. Помогите советом, плз.
     
  16. Offline

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

    Регистрация:
    28.11.2010
    Сообщения:
    4
    Симпатии:
    0
    Пол:
    Мужской
    никто не знает...
     

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

Загрузка...