Регистрация

Добавление видео с "вконтаке" в новость

victor200 12-07-2010, 13:03 3284 Хаки DLE

Добавление видео с "вконтаке" в новость


Доброго времени суток.
Думаю, многие знают, что если в DataLife Engine при создании новости в описание вставить код видео из соц. сети вконтакте, он полностью обрежется чекером движка и соответственно роликом в новости и пахнуть не будет.. (Как получить код видно на изображении).

В сети нашел только одно решение, связано оно было с добавлением xfields, изменением шаблона, вырезанием вручную из кода видео непонятно какого куска и т.п.
Так вот, как же сделать, чтобы видео успешно добавилось без всяких "танцев"?
Для этого нам нужно подредактировать два файла, отвечающие за загрузку новости на сайт.(Один административный, другой - для пользователей).
Конечно, можно было бы изменить класс фильтрации данных, но это было бы дольше и не хотелось заморачиваться, разбираться в его коде, а сделать нужно было как можно быстрее.
Итак, начнем.

Для начала открываем файл engine/modules/addnews.php и находим в нем следующий код(у меня он на 92 строке начинается):

if ($config['allow_site_wysiwyg'] == "yes"){

$full_story = $db->safesql($parse->BB_Parse($parse->process($_POST['full_story'])));
$short_story = $db->safesql($parse->BB_Parse($parse->process($_POST['short_story'])));
$allow_br = 0;

} else {

$full_story = $db->safesql($parse->BB_Parse($parse->process($_POST['full_story']), false));
$short_story = $db->safesql($parse->BB_Parse($parse->process($_POST['short_story']), false));
$allow_br = 1;

}


Заменяем его на следующий:

if ($config['allow_site_wysiwyg'] == "yes")
{
preg_match('/\\/si', $_POST['full_story'], $vk_match);
$vk_match[1] = str_replace('\\', '', $vk_match[0]);
$full_story = str_replace($vk_match[0], "{vk_video}", $_POST['full_story']);
$full_story = $db->safesql($parse->BB_Parse($parse->process($full_story)));
$full_story = str_replace("{vk_video}", $vk_match[1], $full_story);

preg_match('/\\/si', $_POST['full_story'], $vk_match);
$vk_match[1] = str_replace('\\', '', $vk_match[0]);
$short_story = str_replace($vk_match[0], "{vk_video}", $_POST['short_story']);
$short_story = $db->safesql($parse->BB_Parse($parse->process($short_story)));
$short_story = str_replace("{vk_video}", "
".$vk_match[1]."
", $short_story);

$allow_br = 0;

}
else
{
preg_match('/\\/si', $_POST['full_story'], $vk_match);
$vk_match[1] = str_replace('\\', '', $vk_match[0]);
$full_story = str_replace($vk_match[0], "{vk_video}", $_POST['full_story']);
$full_story = $db->safesql($parse->BB_Parse($parse->process($full_story), false));
$full_story = str_replace("{vk_video}", "
".$vk_match[1]."
", $full_story);

preg_match('/\\/si', $_POST['full_story'], $vk_match);
$vk_match[1] = str_replace('\\', '', $vk_match[0]);
$short_story = str_replace($vk_match[0], "{vk_video}", $_POST['short_story']);
$short_story = $db->safesql($parse->BB_Parse($parse->process($short_story), false));
$short_story = str_replace("{vk_video}", "
".$vk_match[1]."
", $short_story);


$allow_br = 1;

}


Далее отредактируем файл админ-панели(engine/inc/addnews.php).
Ищем в нем код(у меня на 401 строке начался:

$full_story = $parse->process($_POST['full_story']);
$short_story = $parse->process($_POST['short_story']);
$title = $parse->process($_POST['title']);

if ($config['allow_admin_wysiwyg'] == "yes" OR $allow_br != '1'){

$full_story = $db->safesql($parse->BB_Parse($full_story));
$short_story = $db->safesql($parse->BB_Parse($short_story));

} else {

$full_story = $db->safesql($parse->BB_Parse($full_story, false));
$short_story = $db->safesql($parse->BB_Parse($short_story, false));
}


Заменяем его на:

preg_match('/\\/si', $_POST['full_story'], $vk_match);
$vk_match[1] = str_replace('\\', '', $vk_match[0]);
$full_story = str_replace($vk_match[0], "{vk_video}", $_POST['full_story']);
$full_story = $parse->process($_POST['full_story']);

preg_match('/\\/si', $_POST['full_story'], $vk_match);
$vk_match[1] = str_replace('\\', '', $vk_match[0]);
$short_story = str_replace($vk_match[0], "{vk_video}", $_POST['short_story']);
$short_story = $parse->process($_POST['short_story']);
$title = $parse->process($_POST['title']);

if ($config['allow_admin_wysiwyg'] == "yes" OR $allow_br != '1'){

$full_story = $db->safesql($parse->BB_Parse($full_story));
$full_story = str_replace("{vk_video}", "
".$vk_match[1]."
", $full_story);
$short_story = $db->safesql($parse->BB_Parse($short_story));
$short_story = str_replace("{vk_video}", "
".$vk_match[1]."
", $short_story);

} else {

$full_story = $db->safesql($parse->BB_Parse($full_story, false));
$full_story = str_replace("{vk_video}", "
".$vk_match[1]."
", $full_story);
$short_story = $db->safesql($parse->BB_Parse($short_story, false));
$short_story = str_replace("{vk_video}", "
".$vk_match[1]."
", $short_story);
}


Все, готово. Тестил на версии 7.2, но, уверен, будет работать и на других.
P.S.: этот Хак будет обрабатывать только первое видео с "вконтакте" в краткой и полной новости. Т.е. второе и последующие так же вырежутся чекером. Думаю, для рядового программиста не составит труда переделать под все видеоссылки за 5 минут. Я не делал, т.к. не нужно, если кому надо - пишите, сделаю, как будет время.
P.P.S.:В самом начале была идея сделать, чтобы видео добавлялось через тег [video], путем добавления в него ссылки на страницу с видео, но вконтакте нужен еще некий восьмибитный хеш, который из чего сделан - мне непонятно.

Похожие новости

Хак вывод просмотры и комментари в похожих новостях

Хак для вывода дополнительной информации такой. как вывод количества просмотров и количества

29.04.14 Хаки DLE
Запрет на вывод категории на главной странице

Хак запрещает вывод определённой категории на главной странице сайта.

11.02.11 Хаки DLE
Хак Автоматическое добавление тегов из заголовка новости

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

08.11.09 Хаки DLE

Комментарии (2)

avatar
#1 LAPRICON
ХАК не работает !!!!
avatar
#2 painkiller
recourse
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Powered by Dleshka.org. Сайт предназначен для выбора шаблонов и дополнений с использованием CMS DataLife Engine.
Закрыть