Сегодня я решил на халяву пользователям выложить скрипт, с помощью которого можно спокойно пользователям разрешить добавление видео с Вконтакте в комментариях или сообщениях. Реализовал кратко на jQuery на регулярных выражениях (а то некоторые предлагали на split/join, что смотрится ужасно (да и работает несуразно)).
Настройки скрипта:
Обнесите в виде материалов текст комментария/поста в класс cmessages. Например, так:
vk_width и vk_height - ширина и высота плеера, vk_align - выравнивание плеера (left, center, right).
Также добавлено преобразование ссылки после добавления нового комментария. На форуме так и так произойдёт редирект.
Если кому-то нужна ещё кнопка бб-кода, то вот она:
Разбор кода:
Как работает данный скрипт? На самом деле регулярные выражения - очень мощная вещь, если понимать как они работают. Функция .replace()
принимает 2 аргумента (на самом деле не 2 :D), первый - регулярное выражение, второе - шаблон вывода. В нашем случае регулярное выражение такое: /\[vk\](.*)\[\/vk\]/g.
Разберём его по частям:
/регулярное выражение/ - само объявление регулярки;
g - параметр регулярного выражения - глобальный поиск, то есть заменятся все совпадения, а не только первое;
\[vk\] - начало бб-кода, а обратные слеши используем для экранизации квадратных скобок (они являются спецсимволами регулярок);
(.*) - содержимое бб-кода, круглые скобки означают искомое значение, точка - содержится хотя бы один символ, звезда - любое количество символов;
\[\/vk\] - закрытие бб-кода, слеш также является спецсимволов регулярок, поэтому экранизируем и его.
$1 - номер возращаемого искомого значения, в нашем случае мы искали содержимое бб-кода и круглые скобки возвращают его значение.
На этом всё. Думаю, что объяснять значение .each() бессмысленно.
Заключение:
На этом всё. Писал скрипт для продажи, но слишком умные пользователи u-сайтов посчитали это нечестным, ну что ж, на вашей совести это. Пользуйтесь, а я пойду ещё искать способ оплатить интернет...
Код
<script>
var vk_width = 607, vk_height = 360, vk_align = 'center';
function vk_parse() {
$('.cmessages').each(function() {
$(this).html($(this).html().replace(/\[vk\](.*)\[\/vk\]/g, '<div align="' + vk_align + '"><iframe src="$1" width="' + vk_width + 'px" height="' + vk_height + 'px" frameborder="0"></iframe></div>'))
});
}
$(function() {
vk_parse()
});
$('#addcBut').click(function() {
setTimeout(function(){vk_parse()}, 1000)
});
</script>
var vk_width = 607, vk_height = 360, vk_align = 'center';
function vk_parse() {
$('.cmessages').each(function() {
$(this).html($(this).html().replace(/\[vk\](.*)\[\/vk\]/g, '<div align="' + vk_align + '"><iframe src="$1" width="' + vk_width + 'px" height="' + vk_height + 'px" frameborder="0"></iframe></div>'))
});
}
$(function() {
vk_parse()
});
$('#addcBut').click(function() {
setTimeout(function(){vk_parse()}, 1000)
});
</script>
Настройки скрипта:
Обнесите в виде материалов текст комментария/поста в класс cmessages. Например, так:
Код
<div class="cmessages">$MESSAGE$</div>
vk_width и vk_height - ширина и высота плеера, vk_align - выравнивание плеера (left, center, right).
Также добавлено преобразование ссылки после добавления нового комментария. На форуме так и так произойдёт редирект.
Если кому-то нужна ещё кнопка бб-кода, то вот она:
Код
<input type="button" title="VK Video" value="vk" onclick="simpletag('vk','','','message','')" class="codeButtons" id="vk" />
Разбор кода:
Как работает данный скрипт? На самом деле регулярные выражения - очень мощная вещь, если понимать как они работают. Функция .replace()
принимает 2 аргумента (на самом деле не 2 :D), первый - регулярное выражение, второе - шаблон вывода. В нашем случае регулярное выражение такое: /\[vk\](.*)\[\/vk\]/g.
Разберём его по частям:
/регулярное выражение/ - само объявление регулярки;
g - параметр регулярного выражения - глобальный поиск, то есть заменятся все совпадения, а не только первое;
\[vk\] - начало бб-кода, а обратные слеши используем для экранизации квадратных скобок (они являются спецсимволами регулярок);
(.*) - содержимое бб-кода, круглые скобки означают искомое значение, точка - содержится хотя бы один символ, звезда - любое количество символов;
\[\/vk\] - закрытие бб-кода, слеш также является спецсимволов регулярок, поэтому экранизируем и его.
$1 - номер возращаемого искомого значения, в нашем случае мы искали содержимое бб-кода и круглые скобки возвращают его значение.
На этом всё. Думаю, что объяснять значение .each() бессмысленно.
Заключение:
На этом всё. Писал скрипт для продажи, но слишком умные пользователи u-сайтов посчитали это нечестным, ну что ж, на вашей совести это. Пользуйтесь, а я пойду ещё искать способ оплатить интернет...
Ctrl
Enter
Заметили ошЫбку
Выделите текст и нажмите Ctrl+EnterКомментарии (0)
Добавить