20-10-2010, 16:20 Посмотрели: 12249 Добавил: Alex V

Как вставить Iframe в новость DLE? [Способ 1]


Сегодня на одном сайте пришлось вставлять видео с вконтакте. Кто помнит изначально его можно было вставлять через [ video=http:// ] без всяких проблем, однако сейчас не все так просто.

Вконтакте начал использовать свободную вставку любого своего видео на любой сайт. Однако CMS DLE не поддерживает iframe и с этим нужно, что-то делать. Полазив по сети, нашел один вариант.

Отлично работает на линейках начиная с 8.х.

Для начала открываем /engine/classes/parse.class.php

1. Находим:

$source = preg_replace( "#\[youtube=([^\]]+)\]#ies", "\$this->build_youtube('\\1')", $source );


После добавляем:

$source = preg_replace( "#\[vk=([^\]]+)\]#ies", "\$this->build_vk('\\1')", $source );


Далее находим:

$txt = preg_replace( "#<!--dle_youtube_begin:(.+?)-->(.+?)<!--dle_youtube_end-->#is", '[youtube=\\1]', $txt );


После вставляем:

$txt = preg_replace( "#<!--dle_vk_begin:(.+?)-->(.+?)<!--dle_vk_end-->#is", '[vk=\\1]', $txt );



2. Все опять же в этом файле находим:

function build_url($url = array()) {


И перед вставляем:

function build_vk($url) {
        $url = $this->clear_url( urldecode( $url ) );
        $url = str_replace("&amp;","&", $url ); 
        if( $url == "" ) return;
        $source = @parse_url ( $url );
        $source['host'] = str_replace( "www.", "", strtolower($source['host']) );
        if ($source['host'] != "vk.com" AND $source['host'] != "vkontakte.ru") return "[vk=".$url."]";
        if ($source['host'] == "vk.com")
            return '<!--dle_vk_begin:'.$url.'--><center><iframe src=\"'.$url.'\" width=\"585\" height=\"360\" frameborder=\"0\"></iframe></center><!--dle_vk_end-->';
        else
            return '<!--dle_vk_begin:'.$url.'--><center><iframe src=\"'.$url.'\" width=\"585\" height=\"360\" frameborder=\"0\"></iframe></center><!--dle_vk_end-->';
    }


Width и height поменяйте на ту которую Вам нужны.

3. В шапке main.tpl вашего шаблона добавьте этот код:

<script language="javascript" type="text/javascript"> 
/*<![CDATA[*/
document.onmouseup = function(){
var t =  document.getElementsByTagName('textarea');
for (var i=0; i<t.length; i++)  {
  t[i].value=t[i].value.replace(/<iframe src="(.*?)".*?<\/iframe>/gim, '[vk=$1]');
}
}
/*]]>*/
</script>


И добавляем ещё один JS:

<script language="javascript" type="text/javascript">
/*<![CDATA[*/
document.onmouseup = function(){
    
    var t =  document.getElementsByTagName('textarea');
    var short_scrollTop = document.getElementById('short_story').scrollTop;
    var short_scrollLeft = document.getElementById('short_story').scrollLeft;
    var full_scrollTop = document.getElementById('full_story').scrollTop;
    var full_scrollLeft = document.getElementById('full_story').scrollLeft;

    for (var i=0; i<t.length; i++)  {
      t[i].value=t[i].value.replac

e(/<iframe src="(.*?)".*?<\/iframe>/gim, '[vk=$1]');
    }
    
    document.getElementById('short_story').s

crollLeft = short_scrollLeft;
    document.getElementById('short_story').s

crollTop = short_scrollTop;
    document.getElementById('full_story').sc

rollLeft = full_scrollLeft;
    document.getElementById('full_story').sc

rollTop = full_scrollTop;
}
/*]]>*/
</script>



4. Для корректной работы хака в админке, добавьте в файл /engine/skins/default.skin.php этот код перед /body :

<script language="javascript" type="text/javascript">
/*<![CDATA[*/
document.onmouseup = function(){
    
    var t =  document.getElementsByTagName('textarea');
    var short_scrollTop = document.getElementById('short_story').scrollTop;
    var short_scrollLeft = document.getElementById('short_story').scrollLeft;
    var full_scrollTop = document.getElementById('full_story').scrollTop;
    var full_scrollLeft = document.getElementById('full_story').scrollLeft;

    for (var i=0; i<t.length; i++)  {
      t[i].value=t[i].value.replac

e(/<iframe src="(.*?)".*?<\/iframe>/gim, '[vk=$1]');
    }
    
    document.getElementById('short_story').s

crollLeft = short_scrollLeft;
    document.getElementById('short_story').s

crollTop = short_scrollTop;
    document.getElementById('full_story').sc

rollLeft = full_scrollLeft;
    document.getElementById('full_story').sc

rollTop = full_scrollTop;
}
/*]]>*/
</script>


Агентство маркетинговых решений mart-agency.ru - агентство Март.
Производство и поставка мебели для ванных комнат atollgroup.ru - группа Атолл.
Детский морской центр имени Вилкова kumvlg.ru в Волгограде.
Рубрика записи: Хаки

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

№ 1. 20-10-2010 19:20 Alex V из групы: Администраторы сказал :
Не знаю как у других, многие писали что на 8.5 у них отлично работает... но у меня не заработало sad

Возможно на более ранних версиях будет работать.

Коллектив WebNine Young (w9y)

Информация

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

Юзер панель
Я тебя не знаю!
Зарегистрируйся, либо

войди под своим логином!

Fuck, я забыл свой пароль!

Восстановить данные =0
Новое на сайте
Известная социальная сеть Instagram приступила к тестированию новой...
Недавно, в приложения для Android и iOS социальной сети Twitter была...
Недавно, в Google "Мой бизнес" разработчики добавили новейший способ, как...
Недавно стало известно о том, что соцсеть Facebook по упоминанию в русских...
Недавно, представитель корпорации Google, Джон Мюллер (John Mueller)...
Голосуем

Ваша любимая CMS?


DataLife Engine
WordPress
Joomla
Drupal
LiveStreet
UCOZ
Самопис
Php+Includ
Статика