Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   Общие вопросы (http://forum.typo3.ru/forumdisplay.php?f=12)
-   -   Кто нибудь делал мобильную версию сайта по статье Дмитрия Дулепова? Работает? (http://forum.typo3.ru/showthread.php?t=7695)

ov.lovyannikov 20.05.2009 12:04

Кто нибудь делал мобильную версию сайта по статье Дмитрия Дулепова? Работает?
 
Никак не могу понять в чём проблема: всё делаю по инструкции, а сайт не меняет тип страницы, во время просмотра эмулятором мобильного телефона? Вот статья:
http://dmitry-dulepov.com/article/cr...-web-site.html

void 20.05.2009 13:43

User-agent определяется правильно? На templavoila патч наложили?

ov.lovyannikov 20.05.2009 13:59

Цитата:

Сообщение от void (Сообщение 24412)
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

void 20.05.2009 22:26

Очень оригинально вы файл подключаете:
Код:

include (PATH_site.'http://192.168.0.152/rada/fileadmin/user_mobile.php');
Очевидно, что вы ошиблись как минимум один раз.

ov.lovyannikov 20.05.2009 23:05

Цитата:

Сообщение от void (Сообщение 24417)
Очень оригинально вы файл подключаете:
Код:

include (PATH_site.'http://192.168.0.152/rada/fileadmin/user_mobile.php');
Очевидно, что вы ошиблись как минимум один раз.

http://typo3.toaster-schwerin.de/typ.../msg00328.html - вот оригинал переписки Дулепова с человеком у которого была такая же проблема как и у меня

void 21.05.2009 03:43

Прямо такая же? И, собсно, при чём тут это? Исправьте вашу очевидную ошибку, и будем говорить дальше. Если не видите в чём ошибка - заплатите Дулепову, он вам всё сделает.

ov.lovyannikov 21.05.2009 10:38

include 'http://192.168.0.152/rada/fileadmin/user_mobile.php'; - исправил

void 21.05.2009 12:15

А надо было
Код:

require(PATH_site.'fileadmin/user_mobile.php');
Когда вы пишете в include('http://..') - будет произведён GET-запрос к вашему же серверу. Понятно, что при этом код, находящийся в файле, будет интерпретирован

ov.lovyannikov 21.05.2009 16:42

Цитата:

Сообщение от void (Сообщение 24431)
А надо было
Код:

require(PATH_site.'fileadmin/user_mobile.php');
Когда вы пишете в include('http://..') - будет произведён GET-запрос к вашему же серверу. Понятно, что при этом код, находящийся в файле, будет интерпретирован

после добавления данной строки - сайт во front end не отображается (белая страница).

void 21.05.2009 20:22

Не белая страница, а вывод ошибок отключен. Или включите вывод ошибок, или посмотрите в error.log вашего апача.

ov.lovyannikov 22.05.2009 15:04

Цитата:

Сообщение от void (Сообщение 24444)
Не белая страница, а вывод ошибок отключен. Или включите вывод ошибок, или посмотрите в 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;
}
}

?>

void 22.05.2009 20:08

Приведённый код верен, однако Fatal error имеет место быть. Либо вы показываете не тот файл, который у вас реально есть, либо вы делаете два раза include() ему.

ov.lovyannikov 22.05.2009 23:42

Цитата:

Сообщение от void (Сообщение 24466)
Приведённый код верен, однако Fatal error имеет место быть. Либо вы показываете не тот файл, который у вас реально есть, либо вы делаете два раза include() ему.

Если же использовать require_once, то ошибок нет, но и версия для мобильного тоже не отображается :(

void 23.05.2009 00:50

Ну ошибок нет - уже хорошо, можно идти дальше.


Часовой пояс GMT +4, время: 08:51.

Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot