Зміна HTML, створеного панелями: чи це можливо?


15

Мені подобається використовувати панелі, однак панелі - це біль в стилі стилю через велику кількість дивів, які він генерує. Крім того, класи, які застосовуються до цих дівок, не мають сенсу і теж занадто громіздкі. Викликаючи плутанину серед моїх колег передовиків.

Щоб показати вам результат, який вони генерують:

Виведення панелями

Проблема полягає в тому, що я використовую 960.gs та панелі додає власні класи та об'ємну структуру div, що змушує мене переосмислювати їхні класи. Це те, що я не хочу робити, я хочу прибрати діви. Чи можна це зробити?

Редагувати:

Що я зробив, щоб прибрати деякі диви, які я вважав марними:

Починаючи з рядка №388 у гнучкий.inc (панелі / плагіни / макети / гнучкі)

$output = '';     
//$output = "<div class=\"panel-flexible " . $renderer->base['canvas'] . " clearfix\" $renderer->id_str>\n";
    //  $output .= "<div class=\"panel-flexible-inside " . $renderer->base['canvas'] . "-inside\">\n";

      $output .= panels_flexible_render_items($renderer, $settings['items']['canvas']['children'], $renderer->base['canvas']);

      // Wrap the whole thing up nice and snug
      //$output .= "</div>\n</div>\n";

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

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

Відповіді:


19

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

Підсумок: продумайте гнучкі макети панелей як інструмент прототипування . Використовуйте його для випробування та складання ідей у ​​розробці, постановці, тестуванні користувачів тощо. Потім, коли ви підписали ідеальний макет, реалізуйте його для виробництва з чистим, чітким, вручну оптимізованим HTML як власний макет панелей (докладніше на наведених нижче).

Ось короткий підсумок того, чому це саме так, на основі цього питання, з яким я пов’язаний:

  • Вихід HTML на панелі потребує усієї такої шаленої розмітки, щоб вміти вміщувати найвиразніші гнучкі макети, які кожен міг би захотіти створити - подумайте, навантаження вкладеної рідини та фіксованих регіонів поруч.
  • Нічого, що автоматично створюється, не буде достатньо хорошим для пуристів HTML, тому хлопці з Панелі не намагалися підтримувати їх щасливими в рамках функції гнучких макетів . Таким чином, не існує алгоритму оптимізації HTML, який намагається звести HTML, сформований вашим макетом, до мінімального рівня, адже як би він не був хорошим, він все одно не буде найкращим стандартом HTML.
  • Щось вони не згадують: якби був такий оптимізатор, певні зміни в макеті призвели б до зникнення зайвих дівок та класів. Якщо ви відключили CSS, вам доведеться переписувати свій CSS більшість разів, коли ви внесете невеликі зміни у гнучку компоновку панелей. Це означає, що якби вони спробували (і не змогли) перетворити гнучкі макети панелей у найкращий стандарт виробничого інструменту, вони також послабили б її як інструмент для створення прототипів.
  • Ви можете отримати чистий, натягнутий вихідний код панелі HTML . Очікуваний робочий процес, читаючи між рядками, я вважаю, що щось подібне:
    • Ви використовуєте панелі гнучких макетів під час ранньої розробки, а також випробовуєте ідеї.
    • Отримавши певний макет, якщо ви хочете очистити HTML, ви реалізуєте його за допомогою власного макета, використовуючи лише точну кількість розмітки HTML, яка потрібна компоновці за допомогою правильних класів, семантики тощо для вашого сайту (інструкція нижче ).

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

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


Як створити власні макети панелей? У документації є докладний посібник, як це зробити . Ось короткий основний підсумок:

  1. Скопіюйте існуючий макет від, /sites/all/modules/panels/plugins/layoutsщоб стати/sites/all/themes/[your_theme_name]/layouts/[new_unique_layout_machine_name]
  2. Перейменуйте файли в новій копії, щоб відповідати їх новій назві папки. Зауважте, що у .tpl.phpфайлі повинні бути дефіси замість підкреслення.
  3. Додайте рядок до файлу інформації про тему: plugins[panels][layouts] = layoutsЦе повідомляє Панелям про те, що у вас є власні макети в цій темі та де вони знаходяться (замініть рядок, layoutsякщо це не шлях від вашої теми до вашої власної папки макетів)
  4. Редагуйте файли за допомогою ідеальних, витончених, мінімальних, семантичних найкращих стандартів HTML та CSS.

    • Не забудьте також оновити .incфайл інформацією про ваш макет, як-от ім’я, категорії, назви файлів тощо.
    • themeу файлі .inc має відповідати імені .tpl.phpфайлу, без розширення. Будь-які підкреслення, які ви введете тут у themeзначення, перетворяться на дефіси.
    • Також розгляньте можливість редагування .pngпіктограми, щоб краще відобразити ваш фактичний макет.
  5. Очистити кеш. Ваш новий макет відображається як параметр у Панелях із вказаним у .incфайлі ім'ям, категорією тощо . Використай це.

1
Thnx man !, це займе решту дня вдень для мене ... Але це можна зробити без "злому", щоб трохи полегшити мій розум. Btw: Я сподіваюся, що ця публікація якось з’являється в Google, тому що я не зміг знайти жодних публікацій щодо проблеми: S.
thecodeassassin

@Stephen Я здивований тим, як часто я шукаю щось 6 місяців + після того, як я задаю питання і закінчуюся своїми питаннями. Або те саме питання SE ...
WernerCD

Я вважаю, що це питання і відповідь дуже корисні, тому я запропонував змінити його назву, яку прийняли. Я там же задав те саме питання: drupal.stackexchange.com/questions/69807/theming-panels-html, який є дублікатом
Джордж Катсанос

5

Ви також можете розглянути модуль Clean Markup Drupal 7 для контролю виводу розмітки для панелей.

Я шукав цю сторінку в браузері і вже не знайшов згадки про неї, в тому числі в дійсно гарній вичерпній відповіді, наданій користувачем568458.

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