Просмотр полной версии : Кто нибудь делал мобильную версию сайта по статье Дмитрия Дулепова? Работает?
ov.lovyannikov
20.05.2009, 12:04
Никак не могу понять в чём проблема: всё делаю по инструкции, а сайт не меняет тип страницы, во время просмотра эмулятором мобильного телефона? Вот статья: 
http://dmitry-dulepov.com/article/creating-a-mobile-version-of-a-web-site.html
User-agent определяется правильно? На templavoila патч наложили?
ov.lovyannikov
20.05.2009, 13:59
User-agent определяется правильно? На templavoila патч наложили?
1. Патч наложил и проверил файл class.tx_templavoila_pi1.php там добавились вот эти строки:
		// Initialize rendering type:
				if ($this->conf['childTemplate'])	{
					$renderType = $this->conf['childTemplate'];
					if (substr($renderType, 0, 9) == 'USERFUNC:') {
						$conf = array(
							'conf' => is_array($this->conf['childTemplate.']) ? $this->conf['childTemplate.'] : array(),
							'toRecord' => $row
						);
						$renderType = t3lib_div::callUserFunction(substr($renderType, 9), $conf, $this);
					}
				} else {	// Default:
					$renderType = t3lib_div::GPvar('print') ? 'print' : '';
				}
2. В TS прописал:
page = PAGE
page.10 < plugin.tx_templavoila_pi1
page.10.userFunc = tx_templavoila_pi1->main_page
[userFunc = user_isMobile]
plugin.tx_templavoila_pi1.childTemplate = USERFUNC:user_mobile->getChildTemplate
plugin.tx_templavoila_pi1.childTemplate.value = mobile
[global]
3. Файл добавил через localconf.php, предварительно поместив его в fileadmin:
include (PATH_site.'http://192.168.0.152/rada/fileadmin/user_mobile.php');
4. Строку к странице TCEFORM.tx_templ ... добавил
5. TO создал и выбрал тип: Mobile version, но в TemplaVoilà Control Center 
Render Type не отобразился.
4. Для проверки мобильной версии использую:
Addon Firefox (User Agent Switcher), 
User Agent: OPERA MINI K610i.
Агент работает, я проверял на m.ya.ru
Очень оригинально вы файл подключаете:
include (PATH_site.'http://192.168.0.152/rada/fileadmin/user_mobile.php');
Очевидно, что вы ошиблись как минимум один раз.
ov.lovyannikov
20.05.2009, 23:05
Очень оригинально вы файл подключаете:
include (PATH_site.'http://192.168.0.152/rada/fileadmin/user_mobile.php');
Очевидно, что вы ошиблись как минимум один раз.
http://typo3.toaster-schwerin.de/typo3_english/2009_04/msg00328.html - вот оригинал переписки Дулепова с человеком у которого была такая же проблема как и у меня
Прямо такая же? И, собсно, при чём тут это? Исправьте вашу очевидную ошибку, и будем говорить дальше. Если не видите в чём ошибка - заплатите Дулепову, он вам всё сделает.
ov.lovyannikov
21.05.2009, 10:38
include 'http://192.168.0.152/rada/fileadmin/user_mobile.php'; - исправил
А надо было 
require(PATH_site.'fileadmin/user_mobile.php');
Когда вы пишете в include('http://..') - будет произведён GET-запрос к вашему же серверу. Понятно, что при этом код, находящийся в файле, будет интерпретирован
ov.lovyannikov
21.05.2009, 16:42
А надо было 
require(PATH_site.'fileadmin/user_mobile.php');
Когда вы пишете в include('http://..') - будет произведён GET-запрос к вашему же серверу. Понятно, что при этом код, находящийся в файле, будет интерпретирован
после добавления данной строки - сайт во front end не отображается (белая страница).
Не белая страница, а вывод ошибок отключен. Или включите вывод ошибок, или посмотрите в error.log вашего апача.
ov.lovyannikov
22.05.2009, 15:04
Не белая страница, а вывод ошибок отключен. Или включите вывод ошибок, или посмотрите в error.log вашего апача.
Fatal error: Cannot redeclare user_ismobile() (previously declared in /var/www/rada/fileadmin/user_mobile.php:4) in /var/www/rada/fileadmin/user_mobile.php on line 5
Сам файл user_mobile.php:
<?php
function user_isMobile() {
    return preg_match('/(IEMobile|Windows CE|NetFront|PlayStation|PLAYSTATION|like Mac OS X|MIDP|UP\.Browser|Symbian|Nintendo)/', $_SERVER['HTTP_USER_AGENT']);
}
class user_mobile {
    /**
     * Checks if current browser is a mobile phone. If yes, checks that
     * child template given in 'value' of the configuration exists for the
     * current template object. If it does, returns corresponding
     * child template name
     *
     * @param    array    $conf    Configuration for this function (parameters: conf and toRecord)
     * @param    tx_templavoila_pi1    $pObj    Parent object
     */
    public function getChildTemplate(array $conf, tx_templavoila_pi1& $pObj) {
        $result = '';
        if ($conf['conf']['value'] && user_isMobile()) {
            // We got a mobile browser! Check if we have a mobile TO
            $toRec = $pObj->markupObj->getTemplateRecord($conf['toRecord']['tx_templavoila_to'], $conf['conf']['value'], $GLOBALS['TSFE']->sys_language_uid);
            if (is_array($toRec))    {
                $result = $conf['conf']['value'];
            }
        }
        return $result;
    }
}
?>
Приведённый код верен, однако Fatal error имеет место быть. Либо вы показываете не тот файл, который у вас реально есть, либо вы делаете два раза include() ему.
ov.lovyannikov
22.05.2009, 23:42
Приведённый код верен, однако Fatal error имеет место быть. Либо вы показываете не тот файл, который у вас реально есть, либо вы делаете два раза include() ему.
Если же использовать require_once, то ошибок нет, но и версия для мобильного тоже не отображается :(
Ну ошибок нет - уже хорошо, можно идти дальше.
Работает на vBulletin® версия 3.8.1. Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot