プロジェクト

全般

プロフィール

Bug(バグ) #3364

Youichi Kimuraほぼ11年前に更新

h3. 現象

スマートフォン端末で、メンバー検索 (/member/search) やフレンドリスト (/friend/list) のようにURLのパスが2階層以上のページで「PC表示に切り替え」ボタンを押すと、PC向け画面に切り替わらずにホーム画面に移動する。また、「PC表示に切り替え」ボタンを押したページの階層以下でのみPC向け画面で表示される。

h4. 例

# スマートフォン端末から、コミュニティ検索 (/community/search) を開く
# 「PC表示に切り替え」ボタンを押す
# ホーム画面に移動するが、スマートフォン向け画面のまま表示される
# メンバー検索 (/member/search) など異なる階層のページでもスマートフォン向け画面となる
# コミュニティ検索 (/community/search) やコミュニティ作成 (/community/edit) ではPC向け画面に切り替わっている

h3. 原因

source:web/js/smt_main.js の「PC向け表示」ボタンに関するコードは下記のようになっている。

<pre><code class="php">
$('#smt-switch')
.show()
.click(function() {
document.cookie = "disable_smt=1";
location.href = $(this).attr('href');
});
</code></pre>

@document.cookie@ によって Cookie を設定しているが path が指定されていない。path が指定されていない場合のデフォルト値は、表示中のページのパスとなる。つまり、コミュニティ検索 (/community/search) ページの場合は /community/ が path にセットされる。よって、この場合は /community/ 以下の階層のページで disable_smt の値が有効となり、それ以外のページでは依然としてスマートフォン向け画面が表示されることになる。

h3. 修正内容

source:apps/pc_frontend/templates/_layout.php の

<pre><code class="php">
$jsonData = array(
'apiKey' => $sf_user->getMemberApiKey(),
'apiBase' => app_url_for('api', 'homepage'),
);

echo javascript_tag('
var openpne = '.json_encode($jsonData).';
');
</code></pre>

に baseUrl の項目を追加して JavaScript コードから OpenPNE が設置されている URL を取得できる状態にする。

その上で、Cookie 設定時の path に @openpne.baseUrl@ を指定することによって SNS 内の全てのページで disable_smt の値が有効となる。
修正内容を記入

戻る