EC-CUBEの携帯サイトをXHTML仕様にする

NO IMAGE

http://bton.papalabs.com/wp-trackback.php?p=847
こちらの記事を参考にxhtml化したところ携帯サイトをPCから見れなくなってしまった。

どうやら&が悪いってことはわかったんだけどどうやって付与されてるのかさっぱりわからない…

悩むこと2日、よーーーやくわかりました。

html/mobile/.htaccess

~~~
php_flag session.use_trans_sid 1
~~~

こいつが原因ですね。
http://manual.xwd.jp/ref.session.html

session.use_trans_sid boolean

session.use_trans_sidは、透過的なセッション IDの付加をするかどうかを指定します。 デフォルトは、0(無効)です

PHPには、透過的にリンクを変換する機能を有しています。 PHP 4.2以降を使用していない場合、PHP構築時にこの機能を有効にして おく必要があります。UNIX環境では、 –enable-trans-sidをconfigureに指定して ください。この構築オプションと実行時オプション session.use_trans_sidが有効な場合、 相対URIは自動的にセッションIDを含むように変換されます。

注意: arg_separator.output php.ini ディレクティブにより、引数セパレータをカスタマイズする ことができます。XHTMLに完全準拠するためには、ここに & を指定してください。

な、なんだってー
マニュアルにちゃんと書いてあるじゃん…

というわけで
html/mobile/require.phpに2行ほど追加

~~~
sfMobileInit();
}
~~~

これでPCからでも見えるように!

ところが、今度は携帯からカートに物が入らないようになりました。
今度はNet_URLが悪さをしている模様。
data/module/Net?Url.php 286行目付近

~~~
querystring)) {
foreach ($this->querystring as $name => $value) {
if (is_array($value)) {
foreach ($value as $k => $v) {
$querystring[] = $this->useBrackets ? sprintf(‘%s[%s]=%s’, $name, $k, $v) : ($name . ‘=’ . $v);
}
} elseif (!is_null($value)) {
$querystring[] = $name . ‘=’ . $value;
} else {
$querystring[] = $name;
}
}
$querystring = implode(ini_get(‘arg_separator.output’), $querystring);
} else {
$querystring = ”;
}

return $querystring;
}
~~~

ここでさっき決めたarg_separator.outputを使っているためにおかしくなってしまうようです
なので

~~~