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 の値が有効となる。 修正内容を記入