MobileConverter  【解決済み】

質問全般・改善要望
返信する
tbkb
メンバー
メンバー
記事: 16
登録日時: 2010年4月14日(水) 00:57

MobileConverter

投稿記事 by tbkb »

こんにちは。基本的なことかもしれませんが色々調べたんですが上手く動かなくて困ってます。宜しくお願いします。
MobileConverter(2.0)を使用時にPC用ドキュメントにテンプレート変数でMobile用のテキスト欄を設けているのですが
docomoのテンプレートでCSSが反映されません。MODxのバージョンは1.0.2j。docomoのテンプレートは下記です。

   <?xml version="1.0" encoding="Shift_JIS"?>
   <!DOCTYPE html PUBLIC "-//i-mode group (ja)//DTD XHTML i-XHTML(Locale/Ver.=ja/2.3) 1.0//EN" "i-xhtml_4ja_10/dtd">
   <html xmlns="http://www.w3c.org/1999/xhtml" lang="ja" xml:lang="ja">
   <head>
   <title>[(site_name)] | [*pagetitle*]</title>
   <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=Shift_JIS" />
   <meta http-equiv="Content-Style-Type" content="text/css" />
   </head>
   <body>
   [*mobile*]
   </body>
   </html>

docomoなのでCSSはインラインで指定しています。
例えば、<div style="background-color:#665544;">あああ</div>とかです。
コンテントタイプを追加してtext/htmlをapplication/xhtml+xmlとすればCSSは反映されます。
ですがその場合は、PC側から見れなくなります。
.htaccessにAddType application/xhtml+xml .htm .htmlを入れても変化はありません。
結構探したのですが良い手が見つかりません。
リソースをPC用とMobile用に分けるしかないんですかね。

宜しくお願いします。
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: MobileConverter

投稿記事 by yama »

コード: 全て選択

$type= !empty ($this->contentTypes[$this->documentIdentifier]) ? $this->contentTypes[$this->documentIdentifier] : "text/html";
header('Content-Type: ' . $type . '; charset=' . $this->config['modx_charset']);
document.parserに上記のような記述があるので、この$this->contentTypes[$this->documentIdentifier]をプラグインで上書きするとよさそうですね。phpを書けるならモバイルコンバーターを改造するとよいと思いますが。作者のそうしさんに相談してみます。
tbkb
メンバー
メンバー
記事: 16
登録日時: 2010年4月14日(水) 00:57

Re: MobileConverter  【解決済み】

投稿記事 by tbkb »

yamaさん ご返信ありがとうございます。
とりあえずPHPは触ったこともなかったのでプラグインの内容は見たこともありませんでしたが
仰るとおり下記の部分をapplication/xhtml+xmlに変更したらCSSが反映されました。
すごく勉強になります。ありがとうございました。またご質問させてもらいます。本当にありがとうございました。


   $type= !empty ($this->contentTypes[$this->documentIdentifier]) ? $this->contentTypes[$this->documentIdentifier] : "text/html";
   header('Content-Type: ' . $type . '; charset=' . $this->config['modx_charset']);
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: MobileConverter

投稿記事 by yama »

コア改造でよければ

コード: 全て選択

$ua=$_SERVER['HTTP_USER_AGENT'];
if(stristr($ua,'DoCoMo')!==false) $type='application/xhtml+xml';
というコードをheader関数の直前に置くとよさそうに思います。(コア改造しなくても、たぶんプラグインで書き換えできると思いますが)
soushi
管理人
記事: 224
登録日時: 2009年7月30日(木) 01:59

Re: MobileConverter

投稿記事 by soushi »

呼ばれたみたいなので 8-)

ContentTypesの影響による動作の違いはまったく想定していませんでした。
この設定もMobileConverter側で持ったほうがよさそうですね。
どういう風に実装しようかなぁ。

なるべく早く出したいですが、ちょっと本業が忙しくて少し先のリリースになると思います…。

あと、とりあえずはyamaさんの案で問題はしのげるとは思います。
tbkb
メンバー
メンバー
記事: 16
登録日時: 2010年4月14日(水) 00:57

Re: MobileConverter

投稿記事 by tbkb »

yamaさん soushiさん お忙しい中、ご返信ありがとうございます。
すみません。プラグインやPHPについて全く知識がないです。

$type= !empty($modx->contentTypes[$modx->documentIdentifier]) ? $modx->contentTypes[$modx->documentIdentifier] : "text/html";
header('Content-Type: ' . $type . '; charset=' . $mcConf['charset'],true);

これを

$type= !empty($modx->contentTypes[$modx->documentIdentifier]) ? $modx->contentTypes[$modx->documentIdentifier] : "text/html";
$ua=$_SERVER['HTTP_USER_AGENT'];
if(stristr($ua,'DoCoMo')!==false) $type='application/xhtml+xml';

header('Content-Type: ' . $type . '; charset=' . $mcConf['charset'],true);

ということで宜しいんですかね?
これでちゃんと動いています。
お忙しい中すみませんが宜しくお願いします。
返信する