Управление блоками в адаптивной теме

15

Я только начинаю адаптивную тему, основанную на Omega, вначале концентрируясь на мобильном макете.

Существуют определенные блоки, которые, вероятно, будут считаться слишком «тяжелыми» для включения в мобильную компоновку, а также другие блоки, которые необходимо будет ввести специально для этой компоновки (расширенные меню, тонированная пользовательская панель и т. Д.).

Я мог бы легко скрыть ненужные блоки в макете для мобильных устройств с помощью CSS и включить блоки, специфичные для мобильных устройств, в макет по умолчанию и скрыть их (так, чтобы они отображались только для мобильных устройств), но это выглядит как довольно отсталый способ мышления Это. Если блоки не показаны, дополнительные накладные расходы, которые они несут, будут действительно неприемлемы (особенно с учетом количества дополнительных запросов к базе данных, которые добавит контент в скрытых блоках).

Я думаю, что должен быть хороший чистый способ перехватить процесс принятия решения о блоке на ранней стадии сборки страницы и исключить / включить блоки на основе некоторого обнаружения ОС, но я рисую пробел о том, как это может быть возможно.

Я также собираюсь добавить тот факт, что Varnish работает перед этим сайтом, что должно сделать вещи более веселыми :)

Существуют ли модули / известные стратегии, которые могут помочь с этим?

Я должен добавить, что использование модуля Context не является вариантом, так как сайт уже полностью создан, и перемещение его в Context было бы огромным делом на данном этапе.

Клайв
источник
4
Я бы без сомнения использовал Панели и соответствующий плагин доступа агента пользователя. Контекст, вероятно, может сделать то же самое, но, как вы уже сказали, это не вариант. Конечно, существует ужасная возможность оценки: видимость блока, но ... С другой стороны, если Varnish заранее, дополнительные db-запросы, выполняемые этим блоком, могут и не быть проблемой?
Летарион
@ Летарион Да, вот и все, пусть Лак снимет напряжение. На сайте есть несколько сотен тысяч активных пользователей, а Varnish участвует только для анонимного трафика. Мы довольно скоро поиграем с ESI, но даже тогда я могу думать о проблемах ... с точки зрения SEO дополнительная разметка / меню будет тяжелой и потенциально запутанной, не говоря уже о дополнительном (ненужном) весе на страницах для мобильные пользователи. Это сложный вопрос!
Клайв
1
Возможно, добавьте более интеллектуальный обработчик блоков (Panels / Context / other) к самым тяжелым страницам, чтобы вы могли получить некоторую выгоду от него без необходимости переделывать весь сайт?
Летарион
1
Я не согласен с тем, что это делает вопрос глупым или полностью меняет правила игры. Varnish может быть настроен так, чтобы справиться с проблемой, он просто не знает как с готовой конфигурацией.
Летарион
2
@Clive: есть старая поговорка: «Нет такой вещи, как глупый вопрос, только глупый ответ!» ;-)
AjitS

Ответы:

4

перехватить процесс принятия решения о блокировке на ранней стадии построения страницы и исключить / включить блоки на основе некоторого обнаружения ОС

Лак работает перед этим сайтом

Как уже отмечалось в комментариях, для этого необходимо настроить лак, чтобы он не кэшировался только в URL-адресе запроса, но также зависел от пользовательского агента. Соответствующий пример есть в вики, VCLExampleNormalizeUserAgent .

После того , как запрос на самом деле действительно попал на сайт, вам необходимо определить , какие блоки , чтобы показать и не показывать. Я бы посчитал, что сделать это с помощью eval - это не что иное, как катастрофа , поэтому наиболее распространенные варианты - это Контекст и Панели .

С сайта уже построен. повторное размещение всех страниц / размещение блоков с помощью любого модуля, вероятно, не вариант, но с помощью профилировщика и применения 80-20 можно было бы добиться существенного прироста производительности, только переделывая определенные страницы.

Letharion
источник
Это действительно очень интересно, спасибо. Рассматриваемый сайт находится на Пантеоне, поэтому я не думаю, что настройка Varnish является опцией, но сейчас это превратилось в более общий вопрос типа «как бы это сделать теоретически», так что это очень полезно
Clive
Pantheon позволяет вам настроить файлы cookie STYXKEY (ближе к концу helpdesk.getpantheon.com/customer/portal/articles/425726 ), и они позволяют вам сегментировать то, что Varnish кэширует / обслуживает для любых пользователей.
Джимаджамма
Я бы хотел разделить ее между обоими ответами, но жизнь не такая. Система выбрала Chapabu's, чтобы отдать награду, поэтому маленький зеленый тик идет к тебе, приятель :)
Клайв
10

Я не могу вдаваться в много деталей, так как я не использовал ни модуль для возрастов (я строй всех своих сайтов с Context от слова идти , и я не взял в ответ на то , что я не построен для в то время как у меня не было этой проблемы раньше), но я думаю, что вы должны быть в состоянии соединить что-то вместе с Mobile Tools и Spaces.

пространства

Пробелы - это API-модуль, предназначенный для того, чтобы параметры конфигурации, как правило, были доступны только на общедоступном уровне, чтобы их можно было настраивать и переопределять отдельными «пробелами» на сайте Drupal. Это было описано как:

  • Способ заставить один сайт Drupal действовать как несколько сайтов
  • Способ предоставления гораздо более настраиваемых, полнофункциональных органических групп или пользовательских домашних страниц
  • Обобщенный API для контекстной конфигурации

Мобильные инструменты

Модуль Mobile Tools предоставляет разработчикам Drupal некоторые инструменты, которые помогут внести коррективы в ваш сайт на основе устройства посетителя.

На странице проекта для MT написано, что она еще не готова к производству, что может быть проблемой - это зависит от того, когда она последний раз обновлялась, так как последний коммит был в этом месяце.

*РЕДАКТИРОВАТЬ

Я ПОЛНОСТЬЮ ЗАБЫЛ ОБ ЭТОМ!

Browscap

Browscap предоставляет улучшенную версию PHP-функции get_browser ().

Блок Browscap

Блок Browscap добавляет опции видимости, чтобы заблокировать настройки конфигурации, чтобы вы могли скрыть или показать блоки на мобильных устройствах.

Browscap зависит от настроек вашего сервера, но если вы можете использовать его, тогда второй модуль дает вам дополнительные настройки видимости для каждого блока на странице редактирования блока.

введите описание изображения здесь

Chapabu
источник
Блок Browscap выглядит действительно многообещающе, спасибо, я проверю его в ближайшие пару дней и сообщу
Клайв
Ой, это полностью скрылось от меня, извините за половину награды!
Клайв
0

Вы можете использовать кросс-браузерную поддержку jQuery для получения разрешения экрана:

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

Добавьте простой PHP-скрипт для отображения настроек соответствующего блока.

monymirza
источник
Спасибо, но не означает ли это, что весь сайт будет преобразован в AJAX для блоков? Я надеюсь сделать это на стороне сервера, если это вообще возможно
Клайв
0

Вы можете использовать Mobile Detect Block, но в настоящее время я ищу решение, которое работает с шириной окна и AdaptiveThemeмедиа запросами модуля Breakpoints, чтобы не дублировать этот код и не загружать конечного пользователя больше, чем он есть. У меня также были смешанные результаты, когда Mobile Detect не обнаруживал ни одного устройства, на котором я его тестировал, что делает его довольно бесполезным, как Browscap, если он не может обеспечить надежные результаты.

В некоторых дискуссиях есть люди, которые по тем или иным причинам хотят уйти из Browscap, и, следовательно, перейти на Mobile Detect .

deanflory
источник