Создание URL блога для людей

Опубликую идею которую в идеале стоило бы допинать полностью, но я надеюсь, что она будет услышана Ort-ом и реализована в виде родной возможности. А суть очень проста — избавить пользователей от написания URL при создании общего блога.

Эта штука постоянно кучу вопросов вызывает — «как писать», «что писать» и т.д. Давайте облегчим участь пользователей.

Для этого нам просто понадобится функция JS, которая переводит русский текст в транслит. Немного порыв в интернете я ее наше и, буквально немного модифицировав, применил.

Пишем в файл main.js:

function setTranslitName() {
	text = document.getElementById('blog_title').value;
	document.getElementById('blog_url').value = translate(text); 
}

var lat=new Array("-","-","","","","a","b","v","g","d","e","e","j","z","i","y","k","l","m","n","o","p","r","s","t","u","f","h","c","ch","sh","shch","y","e","yu","ya","","");
var cyr=new Array(" - "," ",",",".",'"',"а","б","в","г","д","е","ё","ж","з","и","й","к","л","м","н","о","п","р","с","т","у","ф","х","ц","ч","ш","щ","ы","э","ю","я","ъ","ь");   
  
function translate(tex) {   
	var buf=tex;   
	var i;

	for (i=0;i<lat.length;i++) {   
		buf=replace(buf,cyr[i],lat[i],0,0);   
	}   
	
	tex=buf;   
	return tex;   
}   

function replace(target,oldTerm,newTerm,caseSens,wordOnly) {   
	var work = target;   
	var ind = 0;   
	var next = 0;   
	
	oldTerm = oldTerm.toLowerCase();   
	work = target.toLowerCase();   
	
	while ((ind = work.indexOf(oldTerm,next)) >= 0) {   
		if (wordOnly) {   
			var before = ind - 1;   
			var after = ind + oldTerm.length;   
			if (!(space(work.charAt(before)) && space(work.charAt(after)))) {   
				next = ind + oldTerm.length;   
				continue;   
			}   
		}   
		target = target.substring(0,ind) + newTerm +   
		target.substring(ind+oldTerm.length,target.length);   
		work = work.substring(0,ind) + newTerm +   
		work.substring(ind+oldTerm.length,work.length);   
		next = ind + newTerm.length;   
		if (next >= work.length) { break; }   
	}   
	return target;   
}


А затем в шаблоне actions/ActionBlog/add.tpl ищем поле:
<input type="text" id="blog_title" name="blog_title" value="{$_aRequest.blog_title}" />

И добавляем туда:
onkeyup="setTranslitName()"


Таблица перевода вроде должна полностью поддерживаться Гуглом и Яндексом. Соответственно для проекта будет еще и бонус ;-)

8 комментариев

avatar
честно говоря идея не очень,
представляете что напишет транслитер на блог «Конкурсные работы в номинации „Дизайн проекта Live Street по умолчанию“» :)
а достаточно просто написать livestreet_design_competition
avatar
Напишет вот это: konkursnye-raboty-v-nominacii-dizayn-proekta-Live-Street-po-umolchaniyu

И это можно вполне доредактировать руками, а можно оставить и так. Заодно вполне можно предложить пользователю сократить этот кусок, чтобы он попадал в какую-то норму. :-)
avatar
может быть :) кстати, по поводу яндекса и гугла… вообще не понятно на каких стандартах транслитерации они работают, я так и не нашел, особено по гуглу.
avatar
Я точно не интересовался этим, но точно во всяком случае такая таблица Гуглу достаточно понятна. То есть я на практике видел много раз, что Гугл распознавал так слово.
avatar
а вот по поводу доредактировать, так это врядле :) ведь после создания блога на редактирование урла стоит запрет. Представте если блогу год, его проиндексировали кучи поисковиков а тут автора перемкнуло и он сменил урл блога :)
avatar
ЛОра, он имел ввиду, что отредактировать до нажатия кнопки «создать блог» ;)
avatar
старуха, зрение ни к чёрту :)
avatar
Верно :-)
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.