[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
добавление видео с "вконтаке" в новость.
-==S_k_i_F==- [ Offline ] Дата: Среда, 14.07.2010, 14:58:42 | Сообщение # 1
.::Smallville::.
Сообщений: 632
[ 168 ]
Награды: 12  
Доброго времени суток.
Думаю, многие знают, что если в DLE при создании новости в описание вставить код видео из соц. сети вконтакте, он полностью обрежется чекером движка и соответственно роликом в новости и пахнуть не будет.. (Как получить код видно на изображении ниже).

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

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;

}

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

Code

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 строке начался:

Code

     $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));
     }

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

Code

     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

Источник: http://php-ucoz.ru/



 
  • Страница 1 из 1
  • 1
Поиск:
 
 
Последние темы Популярные темы Лучшие флудеры Новые пользователи

Конкурс "Угадай автомобиль"

(78)

Порно С Юной Девкой _952P

(2)

Скачать Трах Пэрис Хилтон _686O

(3)

Баги, ошибки на сайте

(21)

Сделано так как у вас.

(1)

FAQ по uCoz

(6)

Конверты на выписку весна лето от компании Baby Goldfinch

(0)

Здесь заказываем программы,ключи,keygen,patch

(5)

Ваш оператор

(6)

Какую трубу вы бы хотели?

(7)

Общение

(993)

GOLD-аккаунты к другим файлообменникам

(383)

GOLD-аккаунты к Letitbit.net

(233)

GOLD-аккаунты к Vip-file.com

(156)

Поиграем в смайлики

(115)

GOLD-аккаунты к другим файлообменникам

(93)

8-знак

(86)

Конкурс "Угадай автомобиль"

(78)

считаем до 100 и обратно

(77)

Раздача ICQ-номеров!

(61)

SToRm1k

(2948)

-==S_k_i_F==-

(632)

k1ngSD

(608)

mimonetut

(412)

SmaileS

(400)

Kojin

(387)

Rmk

(370)

adrefefex

(357)

}{0TT@БЬ)Ч

(341)

Aldo

(306)

gtaleteljd

(16:47:55)

staletmhfr

(12:49:05)

btaletkokj

(08:58:29)

ukvartirachink

(12:11:40)

etaletcxbm

(07:46:24)

leifwoolnug

(09:15:37)

ytaletiomo

(01:19:02)

Allainsor

(20:33:34)

xtaletipoh

(19:24:46)

Васон

(17:48:19)

Новых сегодня:0

 
 
Владельцы и создатели данного сайта не несут ответственность за использование и содержание ссылок и информации, представленных на этом сайте.
Переделка шаблона by SToRM.Сайт оптимизирован для просмотра с разрешением
1024x768, 1280x800, 1280x1024 и 1600x1200 браузером Opera.
PR-CY.ru