レスポンシブテーマのブロックの管理


15

Omegaをベースにしたレスポンシブテーマを始めたばかりで、最初はモバイルレイアウトに集中しています。

モバイルレイアウトに含めるには「重すぎる」と思われる特定のブロックや、そのレイアウトに特化して導入する必要がある他のブロックがあります(縮小メニュー、縮小ユーザーバーなど)。

CSSを使用してモバイルレイアウト上の不要なブロックを簡単に非表示にし、デフォルトのレイアウトにモバイル固有のブロックを含めて非表示にすることができます(したがって、モバイルにのみ表示されます)が、それはかなり逆の考え方のようですそれ。ブロックが表示されない場合、それらが発生する余分なオーバーヘッドは実際には許容できません(特に、非表示のブロックのコンテンツが追加する余分なdbクエリの数を考慮して)。

私は、ページ構築の早い段階でブロックの意思決定プロセスをインターセプトし、いくつかのOS検出に基づいてブロックを除外/含める素敵なきれいな方法がなければならないと考えていますが、それがどのようになる可能性があるかについて空白を描いています可能。

また、ワニスがこのサイトの前で実行されているという事実を投入するつもりです。

これに役立つモジュール/既知の戦略はありますか?

Contextモジュールを使用することはオプションではなく、サイトは既に本格的であり、この時点でContextモジュールをContextに移動することは大仕事です。


4
パネルと関連するユーザーエージェントアクセスプラグインを使用したことは間違いありません。コンテキストでもおそらく同じことができますが、既に述べたように、それはオプションではありません。もちろん、ブロックの可視性を評価する恐ろしい可能性はありますが、...一方、Varnishを前もって使用すると、これらのブロックが実行する追加のdbクエリはそれほど問題になりませんか?
レサリオン

@Letharionええ、それが思考です。ワニスに緊張を取り除いてもらいましょう。ただし、このサイトには数十万人のアクティブユーザーがおり、Varnishは匿名トラフィックのみに関与しています。私たちはESIでかなりすぐに遊んでいますが、それでも私は問題を考えることができます... SEOの観点から、余分なマークアップ/メニューは重く、潜在的に混乱します。モバイルユーザー。難しいものです!
クライブ

1
おそらく最も重いページに、よりインテリジェントなブロックハンドラー(パネル/コンテキスト/その他)を追加して、サイト全体をやり直すことなく、そこからいくらかの利益を得ることができますか?
レサリオン

1
私はそれが質問を馬鹿にしている、または完全なゲームチェンジャーにすることに同意しません。Varnishは問題をうまく処理するように設定できますが、すぐに使用できる設定ではどうなるかわかりません。
レサリオン

2
@Clive:「馬鹿げた質問のようなものはなく、馬鹿げた答えしかありません!」という古い格言があります!;-)
AjitS

回答:


4

ページ構築の早い段階でブロックの意思決定プロセスをインターセプトし、OS検出に基づいてブロックを除外/含める

ワニスはこのサイトの前で実行されています

すでにコメントで述べたように、これにはリクエストURLだけでなく、ユーザーエージェントもキャッシュするようにニスを構成する必要があります。ワニスwikiに関連する例VCLExampleNormalizeUserAgentがあります。

リクエストが実際にサイトに到達たら、表示するブロックと表示しないブロックを決定する必要があります。evalを使用してこれを行うことは、災害にほかならないと考えます。そのため、残っている最も一般的なオプションはContextPanelsです。

サイトがすでに構築されている状態。いずれかのモジュールですべてのページ/ブロックの配置をやり直すことはおそらくオプションではありませんが、プロファイラーで80-20を適用すると、特定のページのみをやり直すことでパフォーマンスを大幅に向上させることができます。


それは本当に興味深い感謝です。問題のサイトは「理論的には1がこれをどのように行うだろう」私はニスを設定することはオプションではないと思いますが、これは、より一般的になっているので、パンテオンにあるタイプの質問は今、これは非常に便利です
クライヴ

パンテオンはあなたのセットアップSTYXKEYクッキーを(の終わりに向かって可能にhelpdesk.getpantheon.com/customer/portal/articles/425726)、そして、彼らはアノンユーザーに役立つものをワニスはキャッシュ/セグメントにあなたを可能にします。
ジマジャマ

この賞金に完全に隔てられて、私はそれを両方の答えに分けたいと思いますが、人生はそういうものではありません。システムは賞金を与えるためにチャパブを選択したため、小さな緑色のカチカチがあなたの仲間に行きます:)
クライブ

10

私は長い間どちらのモジュールも使用していないため、多くの詳細に進むことはできません(私はすべてのサイトをgoからContextで構築し、私は一方、私は以前にこの問題に遭遇したことはありません)が、モバイルツールとスペースで何かを組み合わせることができるはずです。

スペース

Spacesは、構成オプションを一般的にサイト全体レベルでのみ使用可能にして、Drupalサイトの個々の「スペース」でオーバーライドできるようにすることを目的としたAPIモジュールです。次のように説明されています。

  • 1つのDrupalサイトを複数のサイトのように機能させる方法
  • はるかに設定可能なフル機能のオーガニックグループまたはユーザーホームページを提供する方法
  • コンテキスト設定用の汎用API

モバイルツール

モバイルツールモジュールは、訪問者のデバイスに基づいてサイトを調整するのに役立ついくつかのツールをDrupal開発者に提供します。

MTのプロジェクトページには、実稼働の準備が整っていないという問題があります。これは、最後のコミットが今月であったため、最終更新日によって異なります。

*編集

私はこれらについて完全に忘れました!

ブロウズキャップ

Browscapは、PHPのget_browser()関数の改良バージョンを提供します。

Browscapブロック

Browscap Blockは、可視性オプションをブロック構成設定に追加して、モバイルデバイスでブロックを非表示または表示できるようにします。

Browscapはサーバーのセットアップに依存しますが、使用できる場合、2番目のモジュールはブロック編集ページの各ブロックに追加の可視性設定を提供します。

ここに画像の説明を入力してください


Browscap Blockは本当に有望な感謝のようです。今後数日でチェックしてお知らせします
Clive

おっと、これは私から完全に逃げました、半分の賞金でごめんなさい!
クライブ

0

jQueryクロスブラウザサポートを使用して画面解像度を取得できます。

var browserWidth  = $(window).width();
var browserHeight = $(window).height();

簡単なPHPスクリプトを追加して、関連するブロックの設定を表示します。


ありがとう、しかしそれはブロックにAJAXを使用するようにサイト全体を変換することを意味しないのでしょうか?可能であれば、このサーバー側を実行したいと考えています
クライブ

0

モバイル検出ブロックを使用できますが、現在、ウィンドウの幅とAdaptiveThemeBreakpointsモジュールのメディアクエリで動作するソリューションを探しています。そのコードを複製してエンドユーザーのダウンロードをそれ以上に重くしないようにします。また、テストしたデバイスの1つでMobile Detectが認識されないという結果が混在していたため、信頼できる結果が得られない場合、Browscapのように使い物になりません。

いくつかの議論では、何らかの理由でBrowscapから逃れたいと考えている人がいるため、Mobile Detectに移行しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.