Перейти к публикации

Глобальные теги для мобильных устройств и для компьютера


Рекомендованные сообщения

В разработке очередного адаптивного сайта возникла необходимость в выводе информации на основном сайте только для мобильных устройств и наоборот.

Для этого я решил добавить два новых глобальных тега на основе проверки используемого посетителем устройства.

В движке уже предусмотрена функция проверки мобильного устройства - check_smartphone() - возвращающая true если посетитель использует какое-либо мобильное устройство.

Вот небольшой туториал по установке:

Открываем файл engine/classes/templates.class.php и находим функцию check_tag. После нее добавим новую функцию check_mobile()


	function check_mobile( $matches=array() ) {

		$block = $matches[2];

		if ($matches[1] == "mobile") $action = true; else $action = false;

		if( $action ) {

			if( !check_smartphone() ) return "";

			else return $block;

		}

		else {

			if( check_smartphone() ) return "";

			else return $block;

		}

	}

Полдела сделано. Едем дальше. В этом же файле находим функцию load_template(). После условия

		if (strpos ( $this->template, "[not-news=" ) !== false) {

			$this->template = preg_replace_callback ( "#\\[(not-news)=(.+?)\\](.*?)\\[/not-news\\]#is", array( &$this, 'check_tag'), $this->template );

		}

добавляем след. код

		if (strpos ( $this->template, "[mobile]" ) !== false) {

			$this->template = preg_replace_callback ( "#\\[(mobile)\\](.*?)\\[/mobile\\]#is", array( &$this, 'check_mobile'), $this->template );

		}

		if (strpos ( $this->template, "[not-mobile]" ) !== false) {

			$this->template = preg_replace_callback ( "#\\[(not-mobile)\\](.*?)\\[/not-mobile\\]#is", array( &$this, 'check_mobile'), $this->template );

		}

Далее в функции sub_load_template() после условия

		if (strpos ( $template, "[not-news=" ) !== false) {

			$template = preg_replace_callback ( "#\\[(not-news)=(.+?)\\](.*?)\\[/not-news\\]#is", array( &$this, 'check_tag'), $template );

		}

вставляем код

		if (strpos ( $template, "[mobile]" ) !== false) {

			$template = preg_replace_callback ( "#\\[(mobile)\\](.*?)\\[/mobile\\]#is", array( &$this, 'check_mobile'), $template );

		}

		if (strpos ( $template, "[not-mobile]" ) !== false) {

			$template = preg_replace_callback ( "#\\[(not-mobile)\\](.*?)\\[/not-mobile\\]#is", array( &$this, 'check_mobile'), $template );

		}

Вот, в общем-то, и все телодвижения. Теперь в любом файле шаблона есть возможность вывода информации только для мобильного устройства либо только для ПК.

[mobile] текст [/mobile] - для девайсов

[not-mobile] текст [/not-mobile] - для ПК

С разделом немного промахнулся. Владимир, если посчитаете нужным, перенесите в Хаки.

Изменено пользователем Critical Error
Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...