プロジェクト

全般

プロフィール

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. 修正内容 

 #3365 によって @openpne.baseUrl@ を追加した上で、Cookie 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 の値が有効となるようにする。 の値が有効となる。

戻る