Verwalten von Blöcken in einem ansprechenden Thema


15

Ich beginne gerade mit einem responsiven Thema, das auf Omega basiert, und konzentriere mich zunächst auf das mobile Layout.

Es gibt bestimmte Blöcke, die wahrscheinlich zu umfangreich sind, um sie in das mobile Layout aufzunehmen, und andere Blöcke, die speziell für dieses Layout eingeführt werden müssen (verwässerte Menüs, reduzierte Benutzerleiste usw.).

Ich könnte die unerwünschten Blöcke im mobilen Layout mit CSS leicht ausblenden und die mobilspezifischen Blöcke in das Standardlayout einbeziehen und diese ausblenden (so dass sie nur für Mobilgeräte angezeigt werden), aber das scheint eine ziemlich rückständige Denkweise zu sein es. Wenn die Blöcke nicht angezeigt werden, ist der zusätzliche Aufwand für sie inakzeptabel (insbesondere angesichts der Anzahl zusätzlicher Datenbankabfragen, die der Inhalt in ausgeblendeten Blöcken hinzufügen würde).

Ich denke, es muss eine saubere Möglichkeit geben, den Blockentscheidungsprozess zu Beginn des Seitenaufbaus abzufangen und Blöcke, die auf einer Betriebssystemerkennung basieren, auszuschließen / einzuschließen möglich.

Ich werde auch die Tatsache einwerfen, dass Varnish vor dieser Seite läuft, was die Dinge unterhaltsamer machen sollte :)

Gibt es Module / bekannte Strategien, die dabei helfen können?

Ich sollte hinzufügen, dass die Verwendung des Context-Moduls keine Option ist, da die Site bereits voll funktionsfähig ist und das Verschieben in den Context zu diesem Zeitpunkt ein gewaltiges Unterfangen wäre.


4
Ich hätte ohne Frage Panels und ein entsprechendes User-Agent-Access-Plugin verwendet. Der Kontext könnte wahrscheinlich dasselbe tun, aber wie Sie bereits sagten, ist dies keine Option. Es gibt natürlich die schreckliche Möglichkeit, die Sichtbarkeit des Blocks zu überprüfen, aber ... Andererseits sind die zusätzlichen Datenbankabfragen, die dieser Block ausführt, bei Varnish im Vorfeld möglicherweise kein großes Problem?
Letharion

@ Letharion Ja, das ist der Gedanke, lassen Sie Lack die Belastung entfernen. Die Site hat jedoch einige hunderttausend aktive Benutzer, und Varnish wird nur für anonymen Datenverkehr verwendet. Wir werden ziemlich bald mit ESI spielen, aber selbst dann kann ich mir Probleme vorstellen ... Aus SEO-Sicht wären die zusätzlichen Markups / Menüs schwer und möglicherweise verwirrend, ganz zu schweigen von dem zusätzlichen (unnötigen) Gewicht auf den Seiten für mobile Benutzer. Es ist eine schwierige Frage!
Clive

1
Fügen Sie den schwersten Seiten möglicherweise einen intelligenteren Block-Handler (Panels / Context / other) hinzu, damit Sie einen gewissen Gewinn daraus ziehen können, ohne die gesamte Site wiederholen zu müssen?
Letharion

1
Ich bin nicht einverstanden, dass es die Frage dumm macht oder einen totalen Game Changer. Firnis kann so konfiguriert werden, dass es das Problem gut bewältigt. Es wird einfach nicht wissen, wie es mit einer Out-of-the-Box-Konfiguration ist.
Letharion

2
@Clive: Es gibt ein altes Sprichwort: "Es gibt keine blöde Frage, nur eine blöde Antwort!" ;-)
Ajits

Antworten:


4

Fangen Sie den Blockentscheidungsprozess zu Beginn des Seitenaufbaus ab und schließen Sie Blöcke basierend auf einer OS-Erkennung aus / ein

Vor dieser Seite läuft Lack

Wie bereits in den Kommentaren erwähnt, müssen Sie den Lack so konfigurieren, dass er nicht nur auf der Anforderungs-URL zwischengespeichert wird, sondern auch auf dem Benutzeragenten variiert. Es gibt ein relevantes Beispiel im Lack-Wiki, VCLExampleNormalizeUserAgent .

Sobald die Anfrage tatsächlich auf die Site gelangt ist , müssen Sie festlegen, welche Blöcke angezeigt und welche nicht. Ich würde es nicht weniger als eine Katastrophe betrachten, dies mit eval zu tun , daher bleiben als häufigste Optionen dann Context und Panels .

Mit der Website bereits gebaut. Das Wiederherstellen aller Seiten / Blockplatzierungen mit beiden Modulen ist wahrscheinlich keine Option, aber mit einem Profiler und der Verwendung von 80-20 ist es möglich, signifikante Leistungssteigerungen zu erzielen, indem nur bestimmte Seiten wiederholt werden.


Das ist wirklich sehr interessant, danke. Die fragliche Seite befindet sich im Pantheon, daher denke ich nicht, dass die Konfiguration von Varnish eine Option ist, aber dies hat sich zu einer allgemeineren Art der theoretischen Fragestellung entwickelt, sodass dies sehr hilfreich ist
Clive

Mit Pantheon können Sie STYXKEY-Cookies einrichten (gegen Ende von helpdesk.getpantheon.com/customer/portal/articles/425726 ) und segmentieren, welche Varnish-Caches / -Serves für einen Benutzer verwendet werden.
Jimajamma

Ich hätte es gerne auf beide Antworten verteilt, aber das Leben ist nicht so. Das System hat Chapabus ausgewählt, um das Kopfgeld zu geben, also geht das kleine grüne Häkchen an dich, Kumpel :)
Clive

10

Ich kann nicht auf viele Details eingehen, da ich beide Module seit Ewigkeiten nicht mehr verwendet habe Ich hatte dieses Problem zwar noch nicht, aber ich denke, Sie sollten in der Lage sein, mit Mobile Tools and Spaces etwas zusammenzustellen.

Räume

Spaces ist ein API-Modul, das Konfigurationsoptionen generell nur auf der gesamten Site-Ebene verfügbar machen soll, damit sie von einzelnen "Spaces" auf einer Drupal-Site konfiguriert und überschrieben werden können. Es wurde beschrieben als:

  • Eine Möglichkeit, eine Drupal-Site wie mehrere Sites zu verhalten
  • Eine Möglichkeit, konfigurierbare, voll funktionsfähige organische Gruppen oder Benutzerhomepages bereitzustellen
  • Eine verallgemeinerte API für die kontextbezogene Konfiguration

Mobile Tools

Das Modul "Mobile Tools" bietet Drupal-Entwicklern einige Tools, die Sie bei der Anpassung Ihrer Website an das Gerät des Besuchers unterstützen.

Auf der Projektseite für MT heißt es jedoch, dass es nicht für die Produktion bereit ist, was möglicherweise ein Problem darstellt. Dies hängt davon ab, wann es zuletzt aktualisiert wurde, da das letzte Commit in diesem Monat erfolgte.

*BEARBEITEN

ICH VERGESSE VOLLSTÄNDIG DIESES!

Browscap

Browscap bietet eine verbesserte Version der PHP-Funktion get_browser ().

Browscap-Block

Browscap Block fügt Sichtbarkeitsoptionen zu Blockkonfigurationseinstellungen hinzu, damit Sie Blöcke auf Mobilgeräten ausblenden oder anzeigen können.

Browscap hängt von Ihrer Serverkonfiguration ab. Wenn Sie es jedoch verwenden können, erhalten Sie im zweiten Modul zusätzliche Sichtbarkeitseinstellungen für jeden Block auf der Blockbearbeitungsseite.

Bildbeschreibung hier eingeben


Browscap Block sieht wirklich vielversprechend aus, danke. Ich werde es in den nächsten Tagen überprüfen und dich wissen lassen
Clive

Ups, das ist mir total entgangen, sorry für das halbe Kopfgeld!
Clive

0

Sie können eine Browser-übergreifende jQuery-Unterstützung verwenden, um die Bildschirmauflösung zu erhalten:

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

Fügen Sie ein einfaches PHP-Skript hinzu, um die Einstellung des zugehörigen Blocks anzuzeigen.


Vielen Dank, aber würde das nicht bedeuten, die gesamte Site für die Verwendung von AJAX für Blöcke zu konvertieren? Ich versuche, dies serverseitig zu tun, wenn dies überhaupt möglich ist
Clive

0

Sie könnten Mobile Detect Block verwenden, aber ich bin derzeit auf der Suche nach einer Lösung, die mit Fensterbreite und AdaptiveThemeMedienabfragen des Breakpoints-Moduls zusammenarbeitet, um diesen Code nicht zu duplizieren und den Endbenutzer-Download nicht mehr zu belasten, als er ist. Ich hatte auch gemischte Ergebnisse mit Mobile Detect, das auf einem Gerät, mit dem ich es getestet habe, nicht erkannt wurde, was es wie Browscap ziemlich nutzlos macht, wenn es keine zuverlässigen Ergebnisse liefern kann.

In einigen Diskussionen möchten sich einige Leute aus dem einen oder anderen Grund von Browscap entfernen, weshalb sie auf Mobile Detect umsteigen .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.