Я только начинаю адаптивную тему, основанную на Omega, вначале концентрируясь на мобильном макете.
Существуют определенные блоки, которые, вероятно, будут считаться слишком «тяжелыми» для включения в мобильную компоновку, а также другие блоки, которые необходимо будет ввести специально для этой компоновки (расширенные меню, тонированная пользовательская панель и т. Д.).
Я мог бы легко скрыть ненужные блоки в макете для мобильных устройств с помощью CSS и включить блоки, специфичные для мобильных устройств, в макет по умолчанию и скрыть их (так, чтобы они отображались только для мобильных устройств), но это выглядит как довольно отсталый способ мышления Это. Если блоки не показаны, дополнительные накладные расходы, которые они несут, будут действительно неприемлемы (особенно с учетом количества дополнительных запросов к базе данных, которые добавит контент в скрытых блоках).
Я думаю, что должен быть хороший чистый способ перехватить процесс принятия решения о блоке на ранней стадии сборки страницы и исключить / включить блоки на основе некоторого обнаружения ОС, но я рисую пробел о том, как это может быть возможно.
Я также собираюсь добавить тот факт, что Varnish работает перед этим сайтом, что должно сделать вещи более веселыми :)
Существуют ли модули / известные стратегии, которые могут помочь с этим?
Я должен добавить, что использование модуля Context не является вариантом, так как сайт уже полностью создан, и перемещение его в Context было бы огромным делом на данном этапе.
Ответы:
Как уже отмечалось в комментариях, для этого необходимо настроить лак, чтобы он не кэшировался только в URL-адресе запроса, но также зависел от пользовательского агента. Соответствующий пример есть в вики, VCLExampleNormalizeUserAgent .
После того , как запрос на самом деле действительно попал на сайт, вам необходимо определить , какие блоки , чтобы показать и не показывать. Я бы посчитал, что сделать это с помощью eval - это не что иное, как катастрофа , поэтому наиболее распространенные варианты - это Контекст и Панели .
С сайта уже построен. повторное размещение всех страниц / размещение блоков с помощью любого модуля, вероятно, не вариант, но с помощью профилировщика и применения 80-20 можно было бы добиться существенного прироста производительности, только переделывая определенные страницы.
источник
Я не могу вдаваться в много деталей, так как я не использовал ни модуль для возрастов (я строй всех своих сайтов с Context от слова идти , и я не взял в ответ на то , что я не построен для в то время как у меня не было этой проблемы раньше), но я думаю, что вы должны быть в состоянии соединить что-то вместе с Mobile Tools и Spaces.
пространства
Мобильные инструменты
На странице проекта для MT написано, что она еще не готова к производству, что может быть проблемой - это зависит от того, когда она последний раз обновлялась, так как последний коммит был в этом месяце.
*РЕДАКТИРОВАТЬ
Я ПОЛНОСТЬЮ ЗАБЫЛ ОБ ЭТОМ!
Browscap
Блок Browscap
Browscap зависит от настроек вашего сервера, но если вы можете использовать его, тогда второй модуль дает вам дополнительные настройки видимости для каждого блока на странице редактирования блока.
источник
Вы можете использовать кросс-браузерную поддержку jQuery для получения разрешения экрана:
Добавьте простой PHP-скрипт для отображения настроек соответствующего блока.
источник
Вы можете использовать Mobile Detect Block, но в настоящее время я ищу решение, которое работает с шириной окна и
AdaptiveTheme
медиа запросами модуля Breakpoints, чтобы не дублировать этот код и не загружать конечного пользователя больше, чем он есть. У меня также были смешанные результаты, когда Mobile Detect не обнаруживал ни одного устройства, на котором я его тестировал, что делает его довольно бесполезным, как Browscap, если он не может обеспечить надежные результаты.В некоторых дискуссиях есть люди, которые по тем или иным причинам хотят уйти из Browscap, и, следовательно, перейти на Mobile Detect .
источник