Керування блоками у чуйній темі


15

Я тільки починаю чуйну тему, засновану на Omega, спочатку зосереджуючись на мобільному макеті.

Є певні блоки, які, ймовірно, вважатимуться занадто важкими, щоб їх можна було включити в мобільний макет, та інші блоки, які потрібно буде ввести спеціально для цього макета (напоєні меню, тонована панель користувачів тощо).

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

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

Я також хочу накинутись на те, що перед цим сайтом працює Varnish, що повинно зробити речі веселішими :)

Чи є модулі / відомі стратегії, які можуть допомогти у цьому?

Варто додати, що використання модуля контексту не є варіантом, оскільки сайт вже є повноцінним, і переміщення його в контекст було б величезним завданням на даний момент.


4
Я б, без сумніву, використовував панелі та відповідний плагін доступу до агента користувача. Контекст, ймовірно, міг би зробити те саме, але, як ви вже сказали, це не варіант. Звичайно, існує жахлива можливість оцінювання: видимість блоку, але ... З іншого боку, якщо Varnish на передній панелі, додаткові запити db, які цей блок виконує, можуть не викликати особливих проблем?
Летаріон

@Letharion Так, це мислення, нехай Варніш зніме напругу. Хоча на сайті є кілька сотень тисяч активних користувачів, а Varnish залучається лише для анонімного трафіку. Ми будемо грати з ESI досить скоро, але навіть тоді я можу подумати про проблеми ... з точки зору SEO додаткові розмітки / меню будуть важкими та потенційно заплутаними, не кажучи вже про зайву (непотрібну) вагу на сторінках для користувачів мобільних пристроїв. Це важко!
Клайв

1
Можливо, додати до найважчих сторінок більш розумний обробник блоків (Панелі / Контекст / інше), щоб ви могли отримати певний прибуток від цього, не потребуючи переробляти весь сайт?
Летаріон

1
Я не погоджуюся з тим, що це робить питання дурним, або тотальним зміною гри. Лак можна налаштувати, щоб добре вирішити проблему, він просто не знатиме, як з конфігурацією поза коробкою.
Летаріон

2
@Clive: є стара приказка: "Не існує такого поняття, як дурне запитання, лише дурна відповідь!" ;-)
AjitS

Відповіді:


4

перехопити процес прийняття рішень щодо блоків на початку створення сторінки та виключити / включити блоки, засновані на деякому детектуванні ОС

Перед цим сайтом працює лак

Як вже зазначалося в коментарях, для цього потрібно налаштувати лак, щоб він не кешував лише URL-адресу запиту, але також мінявся залежно від користувача-агента. Є відповідний приклад лаку вікі, VCLExampleNormalizeUserAgent .

Після того , як запит на насправді дійсно потрапив на сайт, вам необхідно визначити , які блоки , щоб показати і не показувати. Я вважаю, що це не менше, ніж катастрофа, щоб зробити це з eval , тому найпоширенішими варіантами, які залишаються тоді, є контекст і панелі .

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


Це дійсно дуже цікаво дякую. Веб-сайт, про який йде мова, знаходиться на Pantheon, тому я не думаю, що налаштування лаку не є варіантом, але це перетворилося на більш загальне питання "як би це зробити теоретично", а зараз це дуже корисно
Clive

Pantheon дозволяє налаштувати файли cookie STYXKEY (наприкінці helpdesk.getpantheon.com/customer/portal/articles/425726 ), і вони дозволяють сегментувати, що Varnish кешує / служить для користувачів.
Jimajamma

Я повністю хотів би розділити її між обома відповідями, але життя не таке. Система вибрала Чапабу для того, щоб подарувати прибутковість, тому маленький зелений тик піде вам на пару :)
Клайв

10

Я не можу вникати в багато деталей, так як я не використовував жоден модуль протягом століть (я створюю всі свої сайти з контекстом із слова go, і я не підбирав відгуки на те, що я не створив для поки, тому раніше у мене не було цієї проблеми), але я думаю, ви повинні вміти щось поєднувати з мобільними інструментами та просторами.

Пробіли

Spaces - це модуль API, призначений для того, щоб зробити параметри конфігурації загальнодоступними лише на загальнонаціональному рівні, щоб їх можна було налаштувати та змінити окремими "пробілами" на сайті Drupal. Це було описано як:

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

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

Модуль мобільних інструментів надає розробникам Drupal деякі інструменти, які допомагають вносити коригування вашого сайту на основі пристрою відвідувача.

Сторінка проекту для MT говорить, що вона не готова до виробництва, але це може бути проблемою - це залежить від того, коли вона востаннє оновлювалася, оскільки останній зобов’язання було цього місяця.

* EDIT

Я ЦІЛЬКО ЗАБУТИ ПРО ЦЕ!

Веб-карта

Browscap надає вдосконалену версію функції get_browser () PHP.

Блок браузера

Блок Browscap Block додає параметри видимості для блокування налаштувань конфігурації, щоб дозволяти ховати або показувати блоки на мобільних пристроях.

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

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


Блок Browscap виглядає справді багатообіцяючим дякую, я перевірю це в найближчі пару днів і повідомляю вас
Clive

На жаль, це цілком відійшло від мене, вибачте за напівфабрикат!
Клайв

0

ви можете використовувати перехресну підтримку браузера jQuery, щоб отримати дозвіл екрана:

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

Додайте простий скрипт PHP для відображення налаштування відповідного блоку.


Дякую, але чи це не означатиме перетворення всього сайту на використання AJAX для блоків? Я хочу зробити це на стороні сервера, якщо це можливо
Clive

0

Ви можете використовувати мобільний блок виявлення, але в даний час я шукаю рішення, яке працює з шириною вікна та будь-яким AdaptiveThemeабо медіа-запитами модуля Breakpoints, щоб не дублювати цей код і зважувати завантаження кінцевим користувачем більше, ніж це є. Я також мав змішані результати з програмою Mobile Detect, яка не збирається на одному пристрої, з яким я тестував, що робить його досить марним, як Browscap, якщо він не може забезпечити надійних результатів.

У деяких дискусіях деякі люди хочуть відійти від Browscap з тієї чи іншої причини, звідси перехід до мобільного детектування .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.