|
|
Хак - добавление видео с "вконтаке" в новость![]() Думаю, многие знают, что если в 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('/\\/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, но, уверен, будет работать и на других. |
|


Просмотров: 435
