スマホとPCのエントリーのデザインを分けたい

Simplicityの特徴 フォーラム Simplicity2に関する話題何でも スマホとPCのエントリーのデザインを分けたい

4件の返信スレッドを表示中
  • 投稿者
    投稿
    • #46385
      パズル
      ゲスト

      どうも、こんにちは。Simplicityにお世話になっているものです。
      早速ですが、エントリーのデザインをPCの時だけサムネイル大、スマホの時だけデフォルト、と使い分けることはできますでしょうか?
      できればやり方まで教えていただけないでしょうか。
      よろしくお願いします。

    • #46386
      hidekichi
      ゲスト

      テンプレートやらを読み込む方法はわいひらさんとかがまた答えてくれるだろうと思いますが、jQueryでやる方法としては以下のサンプルのような感じです。

      サンプル: PCとモバイルで表示を変える | codepen
      ※モバイルの方は完全に再現してません。PCのエントリーのスタイルをそのまま持っていってるのでさてどうなることかは不明です。
      ※ cssはscssで書いてますのでcss欄の下向き三角からview compiledでcssに変換したものをご利用ください

      どういうことをしているかといいますと、カスタマイザーの設定は、デフォルトのリストです。なのでおそらくはモバイル時には勝手にモバイルの表示になるだろうと思うんですが、どうなるかは試してないのでわかりません。

      デフォルトのリストをPCの時にはサムネイル大の時のcssに部分的に変換しておいて、モバイルの時にはbodyタグに.mobileと言うクラスを入れ、.mobileの子要素に対してスタイルを行っています。

      つまり、仮のcssですが、本来であれば、

      #list .entry {
        border: 1px solid red;
      }

      このようにスタイルされる所を、モバイル時にはbodyタグに.mobileと入るので、

      .mobile #list .entry {
        border: 1px solid blue;
      }

      このようにすることでPCの時はリストの各エントリーに赤のボーダー、モバイルの時は青のボーダーが入るようにできると言うことです。
      bodyタグにmobileと言うクラスが入るので、モバイルで表示するページ内は全て、

      .mobile なんちゃらセレクタ {
        プロパティ: 値;
      }

      と言う感じでスタイルできます。また.mobileと言うクラスから始まるセレクタの指定は他にないために重複しないことから、テーマデフォルトのスタイル以外に独自のスタイルを当てることもできます。

      .mobileを挿入する条件は端末のユーザーエージェントで調べているために、実機で見てみないとその違いがわからないと思います。chromeのデベロッパーツールで携帯エミュレーションがあるので、それでも確認できます。PCとスマホやらでどう見えるかを確認してみてください。

      またその際に、サンプルのアドレスの/pen/の部分を/full/に変えればhtml、css、jsの欄がないページが見れますので、それでどのような挙動となるかを確認してみてください。
      PCとモバイルで表示を変える(fullページビュー) | codepen

      切り替え自体はこれで出来るので、後はcssを適度にお好きなようにいじれば良いだけです。

    • #46398
      アバター画像わいひら
      キーマスター

      テンプレートファイルをカスタマイズする場合は、子テーマで手軽にやる方法は、ちょっとないかもしれません。

      親テーマを変更するのであれば、以下の部分を

      //一覧リストのスタイルが大きなサムネイル表示かどうか
      function is_list_style_large_thumb_cards(){
        return ( get_list_style() == 'large_thumb' );
      }

      以下のように変更すれば、いけるかもしれません。

      //一覧リストのスタイルが大きなサムネイル表示かどうか
      function is_list_style_large_thumb_cards(){
        return !is_mobile();
      }

      あとは、テーマカスタマイザーの設定で、「一覧リストのスタイル」の設定を「サムネイル大」に変更してください。
      ただし、完全に動作確認したわけではないので、カスタマイザー自己責任でお願いします。
      あと、この方法だと、バージョンアップごとに修正する必要があります。

    • #46419
      technote
      ゲスト

      theme_mod_list_styleをフィルタするとよさそうです。
      子テーマのfunctions.phpなどにコードを記述します(PHP5.3以上必須)

      add_filter('theme_mod_list_style', function(){
      	return is_mobile() ? 'cards' : 'large_thumb';
      });

      mobileのときはエントリーカード表示(cards)、その他のときは大きなサムネイル表示(large_thumb)になります。
      large_cards(大きなエントリーカード表示)
      large_card_just_for_first(最初だけを大きなエントリーカード表示)
      bodies(本文表示)
      などに変更すれば、指定したものになります。
      指定できるものはlib/customizer.phpでget_list_styleを検索すると見つかります。

    • #46450
      アバター画像わいひら
      キーマスター

      そうやってフックする方法もあるんですね!
      良い方法があるのを知って僕も勉強になりました。
      ありがとうございます!

4件の返信スレッドを表示中
  • このトピックに返信するにはログインが必要です。
スポンサーリンク
アドセンス(大)
アドセンス(大)