Joomla 1.5 ЧПУ в собственном компоненте

Тема в разделе "Создание расширений для Joomla", создана пользователем Viking, 03.12.2009.

  1. Offline

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

    Регистрация:
    25.06.2009
    Сообщения:
    18
    Симпатии:
    0
    Пол:
    Мужской
    Всем доброго времени суток!
    Собственно говоря, сабж: есть компонент (аля каталог продукции) со своими логикой, наворотами и т.д., в нем нужно сделать ЧПУ и как я понимаю, для этого есть замечательный класс JRoute... Теперь вопросы:

    1. Для того, чтобы сделать ссылки в виде .../tovary/televizory/plazma/sony-... нужно ли иметь в своей БД (или генерить на лету) алиасы русских названий групп товаров, самих товаров и т.д. в транслитированном виде?
    2. Если ответ на первый вопрос звучит "да", то необходимо ли мне в своем компоненте (в админке) добавлять поле Alias для ввода псевдонима или есть какой-то более изощренный способ?
    3. Ну и если ответ на второй тоже "да", то есть ли хоть какой-нить метод, чтобы название на русском языке транслитировалось автоматически, если явно не указано в поле Alias?
     
  2.  
  3. Dremka
    Offline

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

    Регистрация:
    06.12.2009
    Сообщения:
    7
    Симпатии:
    0
    Пол:
    Мужской
    мб поможет sh404SEF или аналоги? а там уже JRoute.
    А алиасы дописывать к категории. Хотя на скок помню, sh404SEF может сам генерить алиасы из русских букв, над ток прописать таблицу букв в компоненте будет.
     
  4. Offline

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

    Регистрация:
    25.06.2009
    Сообщения:
    18
    Симпатии:
    0
    Пол:
    Мужской
    Поставил ARTIO JoomSEF, наваял к нему расширение для своего компонента и все стало работать. Только единственный минус - это то, что при добавлении нового товара нужно апдейтить все ссылки заново. Есть какой-нить способ вообще автоматически это делать?
     
  5. sectus
    Offline

    sectus специалист

    Регистрация:
    19.04.2006
    Сообщения:
    1 210
    Симпатии:
    46
    Пол:
    Мужской
    По последней проблеме ничего сказать не могу. А вот, если для своего компонента написать router.php, то не нужно ставить стороннее расширение.
     
  6. Offline

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

    Регистрация:
    25.06.2009
    Сообщения:
    18
    Симпатии:
    0
    Пол:
    Мужской
    Да это понятно, что не надо, но в таком случае, как я понимаю, для создания ссылок нужно в <MyComponent>BuildRoute запросы в БД делать и еще нужен какой-нить механизм транслитерации... Наверняка уже есть готовые, только я о них пока не знаю :) Кто-нибудь знает таковые?
     
  7. sectus
    Offline

    sectus специалист

    Регистрация:
    19.04.2006
    Сообщения:
    1 210
    Симпатии:
    46
    Пол:
    Мужской
    Не обязательно. Вон как для контента ссылки выглядят:
    Код (CODE):
    1. id=1:hello

    И id есть и слова есть.
     
  8. Offline

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

    Регистрация:
    25.06.2009
    Сообщения:
    18
    Симпатии:
    0
    Пол:
    Мужской
    hello - это алиас, я полагаю?
     
  9. sectus
    Offline

    sectus специалист

    Регистрация:
    19.04.2006
    Сообщения:
    1 210
    Симпатии:
    46
    Пол:
    Мужской
    Ну да. да.
     
  10. Offline

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

    Регистрация:
    25.06.2009
    Сообщения:
    18
    Симпатии:
    0
    Пол:
    Мужской
    Так получается, един фиг алиасы надо в базе хранить, либо транслитировать на лету. Или я не понимаю чего-то?
     
  11. sectus
    Offline

    sectus специалист

    Регистрация:
    19.04.2006
    Сообщения:
    1 210
    Симпатии:
    46
    Пол:
    Мужской
    Конечно надо хранить, конечно надо транслитерировать. Только не надо в BuildRoute делать запросы к БД. И соответственно в ParseRoute тоже не надо будет.
     
  12. Offline

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

    Регистрация:
    25.06.2009
    Сообщения:
    18
    Симпатии:
    0
    Пол:
    Мужской
    Здорово, теперь осталось механизм транслитерации взять откуда-то, т.к. руками алиасы писать вряд-ли удобно - лучше пускай из названия продукции само генериться, и нужно в BuildRoute как-то используемый вид (MVC) выловить, чтобы он не светился в ссылках. Как с этим можно справиться?
     
  13. sectus
    Offline

    sectus специалист

    Регистрация:
    19.04.2006
    Сообщения:
    1 210
    Симпатии:
    46
    Пол:
    Мужской
    Что-то я не понял, что у Вас там светится.

    При сохранении объекта в поле alias вписывать транслитерацию поля title (или как там оно у Вас).
    Затем, когда создаем ссылку на объект делаем что-то типа JRoute::_('index.php?option=com_component&task=object&id='.$row->id.':'.$row->alias);

    Дальше в router.php делаем преобразование, чтобы не потерять ни id, ни alias. router.php - подхватывается автоматически.
     
  14. Offline

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

    Регистрация:
    25.06.2009
    Сообщения:
    18
    Симпатии:
    0
    Пол:
    Мужской
    В джумле есть возможность транслитерировать строку, допустим, 'телевизор' в строку 'televizor' или надо самому реализовывать алгоритм транслитерации?
     
  15. sectus
    Offline

    sectus специалист

    Регистрация:
    19.04.2006
    Сообщения:
    1 210
    Симпатии:
    46
    Пол:
    Мужской
    Последнее редактирование модератором: 31.03.2014
  16. Offline

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

    Регистрация:
    25.06.2009
    Сообщения:
    18
    Симпатии:
    0
    Пол:
    Мужской
    Спасибо!
     

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

Загрузка...