Как создать пользовательскую функцию Smarty 3 с существующей библиотекой - PullRequest
0 голосов
/ 06 ноября 2019

Для создания адаптивных шаблонов веб-дизайна я использую простое, но безупречное определение рабочего устройства. Для этого я использую следующую библиотеку:

class Mobile_Detect {

function isMobile() {
    $uagent = $_SERVER['HTTP_USER_AGENT'];
    $mobile_device = false;
    if (preg_match("/(android|mobile|silk|ipad|iphone|ipod)/i", $uagent)) {
        $mobile_device = true;
    }
    return $mobile_device;
}

public function isTablet() {
    $uagent = $_SERVER['HTTP_USER_AGENT'];
    $tablet = false;
    if (!preg_match("/(mobile)/i", $uagent)) {
        if (preg_match("/(android|silk|touch)/i", $uagent)) {
            $tablet = true;
        }
    }
    if (preg_match("/(mac|ipad)/i", $uagent)) {
        if (!preg_match("/(iphone|ipod)/i", $uagent)) {
            $tablet = true;
        }
    }
    return $tablet;
}

}

Чтобы заставить его работать в шаблоне Smarty, я добавляю определения Smarty в каждый файл PHP, который имеет вывод html.

$detect = new Mobile_Detect;
$default_smarty->assign('MOBILE', $detect->isMobile());
$default_smarty->assign('TABLET', $detect->isTablet());

и в файлах шаблонов:

{if $MOBILE}
{if $TABLET}
    {include file="speed1/default/tablet.html"}
{else}
    {include file="speed1/default/mobile.html"} 
{/if}
{else}
{include file="speed1/default/desktop.html"} 
{/if}

Это прекрасно работает, но нужно изменить все затронутые файлы PHP, но это не хорошо, если приложение получает обновления. Лучшим решением будет плагин / функция SMARTY, и я уже попробовал его несколькими способами, но я всегда терплю неудачу. Кто-нибудь может помочь мне создать плагин SMARTY?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...