31.08.14, 12:19
1 комментарий
  DLE Хаки

Mobile detect for DLE 10.2

В новом релизе Dle 10.3 появилось довольно интересное новшество, а именно автоматическое определение устройств, с которого просматривается сайт. И в зависимости от устройства, может выводиться или скрываться определенный контент. Для этого введены новые теги [smartphone] текст [/smartphone] и [not-smartphone] текст [/not-smartphone], [tablet] текст [/tablet] и [not-tablet] текст [/not-tablet], а так же [desktop] текст [/desktop] и [not-desktop] текст [/not-desktop].
Попытаемся применить это новшество к версии 10.2.



Установка:

1. Скачать ниже архив с файлом mobile.detect.php и распаковать его в папку /engine/classes/.

2. Открыть файл index.php и найти:

require_once ENGINE_DIR . '/init.php';


Добавить ниже:

require_once ENGINE_DIR . '/classes/mobile.detect.php';
$detect = new Mobile_Detect;


Далее найти:

if (stripos ( $tpl->copy_template, "{custom" ) !== false) {
	$tpl->copy_template = preg_replace_callback ( "#\{custom(.+?)\}#i", "custom_print", $tpl->copy_template );
}


Добавить ниже:

if (stripos ( $tpl->copy_template, "[smartphone" ) !== false) {
	$tpl->copy_template = preg_replace_callback ( "#\[(smartphone)\](.*?)\[/smartphone\]#is", "check_smartphone", $tpl->copy_template );
}
if (stripos ( $tpl->copy_template, "[not-smartphone" ) !== false) {
	$tpl->copy_template = preg_replace_callback ( "#\[(not-smartphone)\](.*?)\[/not-smartphone\]#is", "check_smartphone", $tpl->copy_template );
}
if (stripos ( $tpl->copy_template, "[tablet" ) !== false) {
	$tpl->copy_template = preg_replace_callback ( "#\[(tablet)\](.*?)\[/tablet\]#is", "check_tablet", $tpl->copy_template );
}
if (stripos ( $tpl->copy_template, "[not-tablet" ) !== false) {
	$tpl->copy_template = preg_replace_callback ( "#\[(not-tablet)\](.*?)\[/not-tablet\]#is", "check_tablet", $tpl->copy_template );
}
if (stripos ( $tpl->copy_template, "[desktop" ) !== false) {
	$tpl->copy_template = preg_replace_callback ( "#\[(desktop)\](.*?)\[/desktop\]#is", "check_desktop", $tpl->copy_template );
}
if (stripos ( $tpl->copy_template, "[not-desktop" ) !== false) {
	$tpl->copy_template = preg_replace_callback ( "#\[(not-desktop)\](.*?)\[/not-desktop\]#is", "check_desktop", $tpl->copy_template );
}



3. Открыть файл engine/classes/templates.class.php и найти:

		if (strpos ( $this->template, "[aviable=" ) !== false) {
			$this->template = preg_replace_callback ( "#\[(aviable)=(.+?)\](.*?)\[/aviable\]#is", array( &$this, 'check_module'), $this->template );
		}


Добавить выше:

		if (strpos ( $this->template, "[smartphone" ) !== false) {
			$this->template = preg_replace_callback ( "#\[(smartphone)\](.*?)\[/smartphone\]#is", array( &$this, 'check_smartphone'), $this->template );
		}
		
		if (strpos ( $this->template, "[not-smartphone" ) !== false) {
			$this->template = preg_replace_callback ( "#\[(not-smartphone)\](.*?)\[/not-smartphone\]#is", array( &$this, 'check_smartphone'), $this->template );
		}
		
		if (strpos ( $this->template, "[tablet" ) !== false) {
			$this->template = preg_replace_callback ( "#\[(tablet)\](.*?)\[/tablet\]#is", array( &$this, 'check_tablet'), $this->template );
		}
		
		if (strpos ( $this->template, "[not-tablet" ) !== false) {
			$this->template = preg_replace_callback ( "#\[(not-tablet)\](.*?)\[/not-tablet\]#is", array( &$this, 'check_tablet'), $this->template );
		}
		
		if (strpos ( $this->template, "[desktop" ) !== false) {
			$this->template = preg_replace_callback ( "#\[(desktop)\](.*?)\[/desktop\]#is", array( &$this, 'check_desktop'), $this->template );
		}
		
		if (strpos ( $this->template, "[not-desktop" ) !== false) {
			$this->template = preg_replace_callback ( "#\[(not-desktop)\](.*?)\[/not-desktop\]#is", array( &$this, 'check_desktop'), $this->template );
		}


Далее найти:

		if (strpos ( $template, "[aviable=" ) !== false) {
			$template = preg_replace_callback ( "#\[(aviable)=(.+?)\](.*?)\[/aviable\]#is", array( &$this, 'check_module'), $template );
		}


Добавить выше:

		if (strpos ( $template, "[smartphone" ) !== false) {
			$template = preg_replace_callback ( "#\[(smartphone)\](.*?)\[/smartphone\]#is", array( &$this, 'check_smartphone'), $template );
		}
		
		if (strpos ( $template, "[not-smartphone" ) !== false) {
			$template = preg_replace_callback ( "#\[(not-smartphone)\](.*?)\[/not-smartphone\]#is", array( &$this, 'check_smartphone'), $template );
		}
		
		if (strpos ( $template, "[tablet" ) !== false) {
			$template = preg_replace_callback ( "#\[(tablet)\](.*?)\[/tablet\]#is", array( &$this, 'check_tablet'), $template );
		}
		
		if (strpos ( $template, "[not-tablet" ) !== false) {
			$template = preg_replace_callback ( "#\[(not-tablet)\](.*?)\[/not-tablet\]#is", array( &$this, 'check_tablet'), $template );
		}
		
		if (strpos ( $template, "[desktop" ) !== false) {
			$template = preg_replace_callback ( "#\[(desktop)\](.*?)\[/desktop\]#is", array( &$this, 'check_desktop'), $template );
		}
		
		if (strpos ( $template, "[not-desktop" ) !== false) {
			$template = preg_replace_callback ( "#\[(not-desktop)\](.*?)\[/not-desktop\]#is", array( &$this, 'check_desktop'), $template );
		}


Далее найти:

	function clear_url_dir($var) {
		if ( is_array($var) ) return "";
	
		$var = str_ireplace( ".php", "", $var );
		$var = str_ireplace( ".php", ".ppp", $var );
		$var = trim( strip_tags( $var ) );
		$var = str_replace( "\", "/", $var );
		$var = preg_replace( "/[^a-z0-9/_-]+/mi", "", $var );
		$var = preg_replace( '#[/]+#i', '/', $var );
		return $var;
	}


Добавить ниже:

	function check_smartphone( $matches = array() ) {
		global $detect;
		
		$action = $matches[1];
		$block  = $matches[2];
		
		if( $action == "smartphone" ) {
			if( $detect->isMobile() && !$detect->isTablet() ) {
				return $block;
			}
		} elseif( $action == "not-smartphone" ) {
			if( !$detect->isMobile() || $detect->isTablet() ) {
				return $block;
			}
		} else return "";
	}
	
	function check_tablet( $matches = array() ) {
		global $detect;
		$action = $matches[1];
		$block  = $matches[2];
		
		if( $action == "tablet" ) {
			if( $detect->isTablet() ) {
				return $block;
			}
		} elseif( $action == "not-tablet" ) {
			if( !$detect->isTablet() ) {
				return $block;
			}
		} else return "";
	}
	
	function check_desktop( $matches = array() ) {
		global $detect;
		$action = $matches[1];
		$block  = $matches[2];
		
		if( $action == "desktop" ) {
			if( !$detect->isMobile() && !$detect->isTablet() ) {
				return $block;
			}
		} elseif( $action == "not-desktop" ) {
			if( $detect->isMobile() ) {
				return $block;
			}
		} else return "";
	}


Готово!

Версия DLE: 10.2
Автор модификации: vitnet

СКАЧАТЬ

Вес файла
21.47 Kb

Реклама

Комментарии

  1. asura 31 августа 2014 20:42                    

    Здрасте! Только я перенёс и адаптировал все модули к 10.2, они уже 10.3 адаптировали. Хана! Сново искать и править под движка? Молодцы ребята.

Напишите своё мнение

  • acuteaggressiveair_kissangel
    badbbbeachbeee
    biggrinbig_bossblumblush
    boastbombboredombye
    clappingcraycrazycurtsey
    dancedashdeclarediablo
    diroldon-t_mentiondownloaddrinks
    first_moveflirtfocusfool
    friendsgive_heartgive_rosegood
    hangheartheathelp
    hihunterhystericireful
    kingkisslaughlazy
    lolmail1mambaman_in_love
    mdamega_shokmoilmosking
    musicneanegativenew_russian
    okon_the_quietpardonparting
    partypilotpioneerpleasantry
    popcormpranksterprevedpunish
    roflrtfmrussiansad
    sarcasticscarescratchsearch
    secretsensoredshokshout
    slowsmilesmokesoldier
    soldier_girlsorryspitefulspruce_up
    stinkersuicidesunsuperstition
    swoonteasetenderthanks
    thisto_pick_ones_noseto_take_umbragetreaten
    umnikunknwvampirevava
    victorywackowhistlewink
    wizardyahooyesyu
    e101e102e103e104
    e105e106e107e108
    e109e110e111e112
    e113e114e115e116
    e117e118e119e120
    e121e122e123e124
    e125e126e127e128
    e129e130e131e132
    e133e134e135e136
    e137e138e139e140
    e141e142e143e144
    e145e146e147e148
    e149e150e151e152
    e153e154e155e156
    e157e158e159e160
    e161e162e163e164
    e165e166e167e168
    e169e170e171e172
    e173e174e175e176
    e177e178e179e180
    e181e182e183e184
    e185e186e187e188
    e189e190e191e192
    e193e194e195e196
    e197e198e199e200
    e201e202e203e204