Навигация
Главная
Бесплатные шаблоны dle
Платные шаблоны dle
Бесплатные модули dle
Хаки dle
Скачать DataLife Engine
Заработок для Web мастеров
Контакты
Rss
Вход на сайт
  Логин
  Пароль
Популярные новости
Реклама

Хак - добавление видео с "вконтаке" в новость.

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

В сети нашел только одно решение, связано оно было с добавлением 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('/\<iframe src=\\\"http\:\/\/vkontakte\.ru\/video_ext.php\?oid=.*?&id=.*?&hash=.*?\\\" width=\\\".*?\\\" height=\\\".*?\\\" frameborder=\\\".*?\\\"\>\<\/iframe\>/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('/\<iframe src=\\\"http\:\/\/vkontakte\.ru\/video_ext.php\?oid=.*?&id=.*?&hash=.*?\\\" width=\\\".*?\\\" height=\\\".*?\\\" frameborder=\\\".*?\\\"\>\<\/iframe\>/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}", "<center>".$vk_match[1]."</center>", $short_story);
    
    $allow_br = 0;

}
else
{
    preg_match('/\<iframe src=\\\"http\:\/\/vkontakte\.ru\/video_ext.php\?oid=.*?&id=.*?&hash=.*?\\\" width=\\\".*?\\\" height=\\\".*?\\\" frameborder=\\\".*?\\\"\>\<\/iframe\>/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}", "<center>".$vk_match[1]."</center>", $full_story);
    
    preg_match('/\<iframe src=\\\"http\:\/\/vkontakte\.ru\/video_ext.php\?oid=.*?&id=.*?&hash=.*?\\\" width=\\\".*?\\\" height=\\\".*?\\\" frameborder=\\\".*?\\\"\>\<\/iframe\>/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}", "<center>".$vk_match[1]."</center>", $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('/\<iframe src=\\\"http\:\/\/vkontakte\.ru\/video_ext.php\?oid=.*?&id=.*?&hash=.*?\\\" width=\\\".*?\\\" height=\\\".*?\\\" frameborder=\\\".*?\\\"\>\<\/iframe\>/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('/\<iframe src=\\\"http\:\/\/vkontakte\.ru\/video_ext.php\?oid=.*?&id=.*?&hash=.*?\\\" width=\\\".*?\\\" height=\\\".*?\\\" frameborder=\\\".*?\\\"\>\<\/iframe\>/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}", "<center>".$vk_match[1]."</center>", $full_story);
        $short_story = $db->safesql($parse->BB_Parse($short_story));
        $short_story = str_replace("{vk_video}", "<center>".$vk_match[1]."</center>", $short_story);

    } else {

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

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

12 июля 2010 добавил emissar
     просмотров 5877   комментариев (5)

написал k28887    25 июля 2010 15:06   



 Группа: Гости
 Регистрация: --
 Публикаций: 0
 Комментариев: 0
Кто устанавливал себе?



kachaem-tut.ru


        

написал sm0ke16    28 июля 2010 12:06   



 Группа: Гости
 Регистрация: --
 Публикаций: 0
 Комментариев: 0
Цитата: k28887
Кто устанавливал себе?

А самому лень да? :DDDD


        

написал sexygerls    28 июля 2010 21:53   



 Группа: Гости
 Регистрация: --
 Публикаций: 0
 Комментариев: 0
нихера не работает пытался на 8,5


        

написал Rtootik    3 октября 2010 21:33   



 Группа: Гости
 Регистрация: --
 Публикаций: 0
 Комментариев: 0
Все нормально работает на 8.5, убил минуты 2!!!!


        

написал adesel    10 октября 2010 18:46   



 Группа: Гости
 Регистрация: --
 Публикаций: 0
 Комментариев: 0
ИМХО через доп. поля куда проще, при том что они как раз для подобных задач и предусмотрены


        

Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.














Rambler's Top100

Яндекс цитирования