Bug(バグ) #2984
完了
スマホ版において,PC版のスキンプラグインを変更するとスマホ版でスキンプラグインのCSSが読み込まれてしまう
Shouta Kashiwagi さんが12年以上前に追加.
7年以上前に更新.
説明
スマホ版において,PC版のデフォルトスキンプラグイン(opSkinBasicPlugin)から別のスキンプラグイン(opSkinBootstrapPluign等)に変更すると
変更したスキンプラグインのCSSがスマホ版においても読み込まれてしまう
発生バージョン: OpenPNE 3.8beta1, OpenPNE3.8RC1
理由としては,スマホ版テンプレートに以下のようなコードの記述がなされていて,
opSkinBasicPluginに依存するような書き方がされているからである.
- apps/pc_frontend/templates/smtLayoutHome.php
1. <?php use_helper('Javascript') ?>
2. <?php $sf_response->removeStylesheet('/opSkinBasicPlugin/css/main.css') ?>
3.
修正内容¶
opSkinBasicPlugin以外におけるスキンプラグインのmain.cssを,スマホ版でロードされないようにする
関連するチケット
1 (0件未完了 — 1件完了)
- ステータス を New(新規) から Accepted(着手) に変更
変更対象ファイル群.
apps/pc_frontend/templates/smtLayoutMember.php
2:<?php $sf_response->removeStylesheet('/opSkinBasicPlugin/css/main.css') ?>
apps/pc_frontend/templates/smtLayoutHome.php
2:<?php $sf_response->removeStylesheet('/opSkinBasicPlugin/css/main.css') ?>
apps/pc_frontend/templates/smtLayoutSns.php
2:<?php $sf_response->removeStylesheet('/opSkinBasicPlugin/css/main.css') ?>
apps/pc_frontend/templates/smtLayoutGroup.php
2:<?php $sf_response->removeStylesheet('/opSkinBasicPlugin/css/main.css') ?>
修正方針¶
response に addStylesheet() している部分は view.yml のキャッシュ部分であるため直接追加部分のソースの変更を行うことはできない.
よって修正方針としては以下の3つが考えられる.
- ビュー部分で不必要な css や js をすべて $response->removeStylesheet() や $response->removeJavascript() などで使用しないようにする
- include_stylesheet() や include_javasript() のスマートフォンを対象とした処理を追加して不必要な css や js を読み込まないようにする
- view.yml のキャッシュ生成時に不必要な css や js を読み込まないようにする.
1 の方法だと,各ビューで同じような処理を追加する必要があり,そうでなくても不必要なファイルを読み込んでから削除するという処理が発生する無駄があるので取りうるべきではない.
2 の方法も無難ではあるが,Symfony の作法とは別に OpenPNE での作法となるため,カスタマイズなどでスマートフォン対応をする際に実装ミスの原因となる可能性がある.また,PC版と共通のファイルを読み込みたい場合などであっても,PC版とスマートフォン版でそれぞれ読み込む処理を追加しなければならない.これらはすべてソースコードで設定を行わなければならないため,PC版のように view.yml から設定を行うことができない.
3 の方法が最も適切であると思うが,PC版と同じアプリケーションで実装されているためキャッシュがPC版と混在してしまう.これを避けるため,2のようにスマートフォンで必要な css や js を得る手段が必要であると考えられる.
2 または 3 の方法を選択する場合にはいずれにせよスマートフォン用のファイルを得る手段が必要なため,今回は実装が簡単な 2 の方法を選択することにする. 3 の方法は今後の改善要求として 別チケットで作成しておくこととする.( #3043 )
その他¶
本チケットではPC版のスキンプラグインが読み込まれてしまうという問題であるが, 管理画面で設定したカスタマイズCSSもPC版用として設定されたものが適用されてしまう.この問題については別チケットで対応する.( #3040 )
- ステータス を Accepted(着手) から Pending Review(レビュー待ち) に変更
- 進捗率 を 0 から 50 に変更
- ステータス を Pending Review(レビュー待ち) から Rejected(差し戻し) に変更
sfWebResponse のいくつかのメソッドで stylesheets/javascripts プロパティは対応しているが、 smtStylesheets/smtJavascripts プロパティは対応できていないものがあります。
- initialize() で smt* のプロパティが初期化されない(array_combine() 使っているところ)
- copyProperties() / merge() で smt* のプロパティが反映されない
- serialize() / unserialize() で smt* のプロパティが保存・復元されない
また、使用されていないプロパティ displayMember/displayCommunity が残っていますが、これについては別チケットで扱うということでこのチケットでのレビュー対象とはしませんでした。
- ステータス を Rejected(差し戻し) から Accepted(着手) に変更
- 進捗率 を 50 から 0 に変更
「使用されていないプロパティ displayMember/displayCommunity が残っていますが、これについては別チケットで扱う」としていましたが,対象チケットがなく,影響範囲もないということで本チケットで同時に修正を行います.
- ステータス を Accepted(着手) から Pending Review(レビュー待ち) に変更
- 進捗率 を 0 から 50 に変更
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
- 進捗率 を 50 から 70 に変更
- 3.8 で発生するか を Unknown (未調査) にセット
- ステータス を Pending Testing(テスト待ち) から Won't fix(対応せず) に変更
- 進捗率 を 70 から 0 に変更
OpenPNE 3.8.0 にて対応済みであったため、対応せずとします。
他の形式にエクスポート: Atom
PDF