перевод транслита в русский или как формировать URL страницы тега

12
K
На сайте с 23.10.2004
Offline
159
1646

Самописный движок. Решил сделать к статьям возможность добавлять теги (метки).

Решил сделать адрес у страниц тегов вида site.ru/tags/voda.html для записей с тегом "вода".

Есть функция, которая переводит русский текст в транслит,

в ней заданы соответствия русских букв и английских буквосочетаний (типа в - v, я - ja)

А теперь появилась потребность в обратном переводе.

Вариант поменять местами соответствия не подходит,

т.к. русские и е и э меняются на латинскую e

а мягкий знак вообще заменяется на пустоту.

Пока вижу выход только в задании соответствия для каждой пары слов, типа:

podarki - подарки, novyj_god - новый год

Естественно вариант плох тем, что приходится добавлять все слова/словосочетания,

а их список будет расширяться.

PS:

или переходить в урлах либо на русские буквы (не уверен, что они везде работают), либо на 16-ричные коды (которые начинаются с %)?

H
На сайте с 09.10.2012
Offline
11
#1
kravru:

Пока вижу выход только в задании соответствия для каждой пары слов, типа:
podarki - подарки, novyj_god - новый год
Естественно вариант плох тем, что приходится добавлять все слова/словосочетания,
а их список будет расширяться.

Собственно, обычно так и делают.

Вы же список тегов на русском храните, судя по всему, почему не добавить поле с транслитом (вы же БД используете, да? :) ).

При таком варианте вы можете делать выборку в любую сторону (по русскому названию, по названию в транслите..)

K
На сайте с 23.10.2004
Offline
159
#2

Да вот захотел не использовать БД, т.е. не делать таблицу с тегами.

А просто к статьям добавить поле теги, которое заполняется в виде "тег 1, тег2, еще тег"

С каждого из которого будет ссылка на страницы: teg1.html, teg2.html, esche_teg.html

А потом teg1 переводить обратно в тег 1

а статьи выбирать запросом: SELECT * FROM articles WHERE tags LIKE '%тег 1%'

PS:

+ в том, что добавление тегов к статьям можно сделать быстро (просто написанием их в текстовом поле, а не через предварительное добавление тега в таблицу, а потом привязки тега к статье)

PPS:

догадываюсь что LIKE '%тег 1%' работает медленно или много ресурсов жрет, но тут вроде не должно быть много таких запросов, только 1 запрос на странице

T
На сайте с 19.09.2012
Offline
29
#3

1) Не вижу противоречия между "написанием их в текстовом поле" через запятую и "добавление тэга в таблицу и привязка тэга к статье"... просто обработку строки, содержащей список тэгов делать после сохранения статьи (актуализировать связи с тэгами).

2) С этим "добавлять все слова/словосочетания,

а их список будет расширяться" тоже не вижу особой проблемы: добавление и перевод (обратный транслит) тэгов можно делать на автомате, а руками переводить только некорректные случаи.

А ещё лучше, при автоматическом создании тэгов в п.1 сохранять исходную русскую версию, тогда не придется править потом.

IL
На сайте с 20.04.2007
Offline
435
#4
kravru:
LIKE '%тег 1%'

зацепит и "тег 1", и "тег 12", и "тег 123"

По поводу нагрузки - Вам виднее..

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
K
На сайте с 23.10.2004
Offline
159
#5
ivan-lev:
зацепит и "тег 1", и "тег 12", и "тег 123"

точно! не подумал :(

значит не только без таблицы тегов не обойтись (где будут русское название и транслитом)

а еще нужна и таблица связи ид-шников статей с ид-шниками тегов, да?

---------- Добавлено 22.08.2013 в 11:01 ----------

kravru:
значит не только без таблицы тегов не обойтись (где будут русское название и транслитом)
а еще нужна и таблица связи ид-шников статей с ид-шниками тегов, да?

просто нужно сделать, чтобы заполнять их не ручками, а автоматом, обрабатывая введенную строку со списком тегом.

так?

IL
На сайте с 20.04.2007
Offline
435
#6
kravru:
значит не только без таблицы тегов не обойтись (где будут русское название и транслитом)

Ну, почему.. можно и без неё.. если подумать. Вот нужно ли?

K
На сайте с 23.10.2004
Offline
159
#7
ivan-lev:
Ну, почему.. можно и без неё.. если подумать.
Т.е. названия уже определенным образом транслитерированы, и надо их перевести обратно?
Там как бы потеря информации получается тогда, без словаря никак.
Если просто надо туда-обратно - то разработать свои правила однозначной обратимой транслитерации.

а правила транслитерации менять не хочется

выходит по-любому нужен словарь (таблица с русскими и транслитерованными названиями тегов)

melkozaur
На сайте с 06.04.2010
Offline
505
#8
kravru:
я - ja

Вангую мощную пессимизацию Яндекса, вплоть до АГС.

Серверы в NL/US со скидкой 30% нашим читателям: E5-2650v4/10GB DDR4/240GB SSD/1 Gbps - от $20: https://ua-hosting.company/vps/nl SEO без компромиссов: https://seoleaks.net SEOLEAKS - продвижение сайтов: https://www.instagram.com/seoleaks
DiAksID
На сайте с 02.08.2008
Offline
218
#9

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

уж лучше фильтр какой-нибудь на input повесть - не пускать особо корявые символы в урл (тег), если очень приспичит - и потом всю обработку одним LIKE-ом делать без извращений.

show must go on !!!...
Mik Foxi
На сайте с 02.03.2011
Offline
1076
#10

урл делать в обычном урленкоде, страницы тегов закрыть от индексации.

Антибот, антиспам, веб файрвол, защита от накрутки поведенческих: https://antibot.cloud/ + партнерка, до 40$ с продажи.
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий