Backport(バックポート) #2438
Minoru Takai さんが約13年前に更新
h3. 概要 Overview (現象) OpenPNE にはグローバルナビ、ローカルナビがある。これは3系と2系両方に存在するが、3系と2系では項目が異なっている。 opSkinClassicPlugin は、3系で2系のデザインを模倣するスキンだが、これを用いると2系のナビ項目の名称が表示されてしまい、次の問題が生じる。 * (P1) 2系にしか存在しない(3系で実装されていない)ナビ項目が機能しない(クリックできない項目が表示されている) 2.14.x から 3.6.x へのバージョンアップし,ログイン後のホーム画面でグローバルナビにカーソルを合わせても色が変わりません. * (P2) 3系にしか存在しないナビ項目が表示できない(項目名が2系で用いている画像で表示されているため) 但し,「マイホーム」と「最新日記」は色が変わりクリック可能です. これとは別に、次の問題が生じている。 h3. 再現バージョン * (P3) 3系に存在するナビ項目のほとんどが機能していない(クリックできない) OpenPNE3.6.x このチケットでは (P3) を扱う。 h3. 補足 再現手順 opSkinClassicPlugin を用いなければよいという話ではあるが、2系からのコンバートを行ったSNSはデフォルトで opSkinClassicPlugin が使われる。これを加味するとこの問題がどれほど重大であるかが考えやすいかもしれない。 2.14.x から 3.6.x へのバージョンアップ ログイン後のグローバルナビにカーソルを合わせる h3. バージョン Causes (原因) * OpenPNE-3.6.x で生じている(ログアウトなど基本機能がクリックできない) バグ発見時のチャットログより転載 ** stable-3.6.x ブランチ ** master ブランチ OpenPNE-3.4.x では、ログアウトなどの基本機能はクリックできる。しかし 3.4.x でも、実装されているがクリックできないナビ項目が存在するかもしれない(後述の原因を参照)。 h3. 原因 この問題は主に次の 3 つの原因によるものである。 * (C1) <pre> 17:46:53 takai: opSkinClassicPlugin の CSS に記述されているセレクタと、実際に出力される HTML 上の id 値が一致していない(3.6.x 以降) の実装不備(バグ)の可能性が高いです * (C2) 3系で新たに実装された機能(バンドルされたプラグインで実装された機能)に対応するナビ項目について、そのナビ項目を機能させるために opSkinClassicPlugin の // 原因自体は CSS を書き換える(追記する)必要があるが、それを行なっていない(3.6.x 以降、もしかしたら 3.4.x でもあるかもしれない) に書かれているグローバルナビに関するIDセレクタと、HTMLに出力されているグローバルナビのIDが一致していない(アンダースコアの個数がまちまち)なことですが、たぶんバグが放置されている状況だと想います * (C3) ナビゲーション項目の id 値を決定するための op_url_to_id() 関数が URL の記述の仕方(member/search か @member_search かの違い)によって、出力される値が異なっている( #257 時点からで、これは 3.3.0 対象なので、 3.4.x 以降) </pre> h3. 修正方針 Way to fix (修正内容) 原因の (C2) については CSS に追記する対応をする。 (C1) について、 3.6.x 以降で生じているが 3.4.x では生じていない点については #1004 の修正(3.5.2 対象)がきっかけであり、この問題の根本的な原因は #257 の commit:3da8aa22 で定義されている "op_url_to_id() の定義":http://redmine.openpne.jp/projects/op3/repository/revisions/3da8aa22c389233af40028edacf5633b4f8edf24/diff/lib/helper/opUtilHelper.php か使い方 ( "glovalNav":http://redmine.openpne.jp/projects/op3/repository/revisions/3da8aa22c389233af40028edacf5633b4f8edf24/diff/apps/pc_frontend/modules/default/templates/_globalNav.php / "localNav":http://redmine.openpne.jp/projects/op3/repository/revisions/3da8aa22c389233af40028edacf5633b4f8edf24/diff/apps/pc_frontend/modules/default/templates/_localNav.php ) が誤っていることである。 (C1) については次のいずれかの方針で修正する。 * (S1): HTML 側の出力は修正せずに CSS 側のセレクタを修正する * (S2): HTML 側の出力(恐らく op_url_to_id() 関数の定義)を修正する ** この場合、既に CSS ( 3.4.x および 3.6.x 以降)に _foo と __bar のように (C3) の問題を受けた記述が存在するため、 CSS も併せて修正する必要がある 修正内容を記入