+ Ответить в теме
Показано с 1 по 6 из 6
- 19.04.2010 10:23 #1Administrator
- Регистрация
- 04.12.2009
- Адрес
- Moscow, Russia
- Сообщений
- 3,712
[VB4 mod] Lang bbcode
Возникла необходимость выводить сообщения пользователям в зависимости от их языка, самое простой детект - язык интерфейса форума, хотите читать на своем родном языке - один раз поставьте свой язык!
Что правим (сделано все под ручную правку)
1. Добавляем универсальную функцию getElementsByClassName
Сохраняем ее в файле, например uservb4script.jsКод:/* Developed by Robert Nyman, http://www.robertnyman.com Code/licensing: http://code.google.com/p/getelementsbyclassname/ */ var getElementsByClassName = function (className, tag, elm){ if (document.getElementsByClassName) { getElementsByClassName = function (className, tag, elm) { elm = elm || document; var elements = elm.getElementsByClassName(className), nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null, returnElements = [], current; for(var i=0, il=elements.length; i<il; i+=1){ current = elements[i]; if(!nodeName || nodeName.test(current.nodeName)) { returnElements.push(current); } } return returnElements; }; } else if (document.evaluate) { getElementsByClassName = function (className, tag, elm) { tag = tag || "*"; elm = elm || document; var classes = className.split(" "), classesToCheck = "", xhtmlNamespace = "http://www.w3.org/1999/xhtml", namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null, returnElements = [], elements, node; for(var j=0, jl=classes.length; j<jl; j+=1){ classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]"; } try { elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null); } catch (e) { elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null); } while ((node = elements.iterateNext())) { returnElements.push(node); } return returnElements; }; } else { getElementsByClassName = function (className, tag, elm) { tag = tag || "*"; elm = elm || document; var classes = className.split(" "), classesToCheck = [], elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag), current, returnElements = [], match; for(var k=0, kl=classes.length; k<kl; k+=1){ classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)")); } for(var l=0, ll=elements.length; l<ll; l+=1){ current = elements[l]; match = false; for(var m=0, ml=classesToCheck.length; m<ml; m+=1){ match = classesToCheck[m].test(current.className); if (!match) { break; } } if (match) { returnElements.push(current); } } return returnElements; }; } return getElementsByClassName(className, tag, elm); };
Файл загружаем на сервер в папку yourforum/clientscript/
2. Добавим возможность загрузки данного скрипта
в шаблон: headinclude
добавим: <script type="text/javascript" src="clientscript/spoiler.js"></script>
3. Добавим вызов данной функции
в шаблон: footer
после:
добавить:Код:<script type="text/javascript"> <!-- // Main vBulletin Javascript Initialization vBulletin_init(); //--> </script>
4. Добавляем новый bbcodeКод:<script type="text/javascript"> <!-- // support show diff languages var lklang = getElementsByClassName("lkln-{vb:stylevar languagecode}", "div"); var i = 0; while (lklang_cur = lklang[i++]) { lklang_cur.style.display = ""; } //--> </script>
- заголовок: lang_only
- название BB: lang
- замена:- пример:Код:<div class="lkln-{option}" style="display:none;">{param}</div>- использовать опцию: ДаКод HTML:[lang=ru]Это только в русском интерфейсе[/lang][lang=en]This is in English only[/lang]
остальное по умолчанию, если хотите, можно добавить кнопку, но я все ввожу ручками
Как используем:
Чтобы увидели пользователи с русским интерфейсом:Для английского:Код HTML:[lang=ru]Только для русских[/lang]
Таким методом собираюсь сделать весь FAQ, надеюсь пользователям будет удобно.Код HTML:[lang=en]Only for English[/lang]
Если есть предложения, замечания, вопросы - готов выслушать.Twitter | Devices: Samsung Spica i5700 - SamdroidMod 2.0.1 Froyo | Nexus One - Android 2.2 Froyo | Nexus S CyanogenMod 7.1
If you like my stuff, buy me a beer!
-
- 19.04.2010 14:22 #2Member
- Регистрация
- 19.03.2010
- Адрес
- Санкт-Петербург
- Сообщений
- 44
Возможно, еще есть смысл добавить тег [QR] , который заенкодит содерживое в баркод. Не помню, есть на орге готовые или нет. Можно в панели управления прописать, но не уверен что там правильно кавычки заэкранируются.
- 19.04.2010 14:43 #3Administrator
- Регистрация
- 04.12.2009
- Адрес
- Moscow, Russia
- Сообщений
- 3,712
Спасибо за идею

Код HTML:[QR]http://forum.samdroid.net[/QR]
Twitter | Devices: Samsung Spica i5700 - SamdroidMod 2.0.1 Froyo | Nexus One - Android 2.2 Froyo | Nexus S CyanogenMod 7.1
If you like my stuff, buy me a beer!
-
- 19.04.2010 16:04 #4Member
- Регистрация
- 19.03.2010
- Адрес
- Санкт-Петербург
- Сообщений
- 44
Реализацию-то покажи
- 19.04.2010 16:08 #5Administrator
- Регистрация
- 04.12.2009
- Адрес
- Moscow, Russia
- Сообщений
- 3,712
Twitter | Devices: Samsung Spica i5700 - SamdroidMod 2.0.1 Froyo | Nexus One - Android 2.2 Froyo | Nexus S CyanogenMod 7.1
If you like my stuff, buy me a beer!
- 23.09.2010 07:52 #6Junior Member
- Регистрация
- 23.09.2010
- Адрес
- USA
- Сообщений
- 12
Thinx
I have benefited greatly
منتدى بنات
Информация о теме
Пользователи, просматривающие эту тему
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)


LinkBack URL
About LinkBacks
Ответить с цитированием


Социальные закладки