Всем доброго времени суток! Собственно говоря, сабж: есть компонент (аля каталог продукции) со своими логикой, наворотами и т.д., в нем нужно сделать ЧПУ и как я понимаю, для этого есть замечательный класс JRoute... Теперь вопросы: Для того, чтобы сделать ссылки в виде .../tovary/televizory/plazma/sony-... нужно ли иметь в своей БД (или генерить на лету) алиасы русских названий групп товаров, самих товаров и т.д. в транслитированном виде? Если ответ на первый вопрос звучит "да", то необходимо ли мне в своем компоненте (в админке) добавлять поле Alias для ввода псевдонима или есть какой-то более изощренный способ? Ну и если ответ на второй тоже "да", то есть ли хоть какой-нить метод, чтобы название на русском языке транслитировалось автоматически, если явно не указано в поле Alias?
мб поможет sh404SEF или аналоги? а там уже JRoute. А алиасы дописывать к категории. Хотя на скок помню, sh404SEF может сам генерить алиасы из русских букв, над ток прописать таблицу букв в компоненте будет.
Поставил ARTIO JoomSEF, наваял к нему расширение для своего компонента и все стало работать. Только единственный минус - это то, что при добавлении нового товара нужно апдейтить все ссылки заново. Есть какой-нить способ вообще автоматически это делать?
По последней проблеме ничего сказать не могу. А вот, если для своего компонента написать router.php, то не нужно ставить стороннее расширение.
Да это понятно, что не надо, но в таком случае, как я понимаю, для создания ссылок нужно в <MyComponent>BuildRoute запросы в БД делать и еще нужен какой-нить механизм транслитерации... Наверняка уже есть готовые, только я о них пока не знаю Кто-нибудь знает таковые?
Так получается, един фиг алиасы надо в базе хранить, либо транслитировать на лету. Или я не понимаю чего-то?
Конечно надо хранить, конечно надо транслитерировать. Только не надо в BuildRoute делать запросы к БД. И соответственно в ParseRoute тоже не надо будет.
Здорово, теперь осталось механизм транслитерации взять откуда-то, т.к. руками алиасы писать вряд-ли удобно - лучше пускай из названия продукции само генериться, и нужно в BuildRoute как-то используемый вид (MVC) выловить, чтобы он не светился в ссылках. Как с этим можно справиться?
Что-то я не понял, что у Вас там светится. При сохранении объекта в поле alias вписывать транслитерацию поля title (или как там оно у Вас). Затем, когда создаем ссылку на объект делаем что-то типа JRoute::_('index.php?option=com_component&task=object&id='.$row->id.':'.$row->alias); Дальше в router.php делаем преобразование, чтобы не потерять ни id, ни alias. router.php - подхватывается автоматически.
В джумле есть возможность транслитерировать строку, допустим, 'телевизор' в строку 'televizor' или надо самому реализовывать алгоритм транслитерации?