Наши заметки о MODx
В этом разделе мы будем собирать небольшую копилку секретов по работе с системой управления контентом сайта (CMS) MODx. Эти заметки ни в коем случае не претендуют на лавры документации. На нашем сайте тема MODx вообще занимает небольшой уголок, и эти материалы мы размещаем только потому, что по роду основной работы нам приходится оказывать техническую поддержку нескольким десяткам организаций, использующих наши прототипы сайтов. В то же время кое-что может пригодиться и другим людям.
Мы не претендуем на изложение "истины в последней инстанции". Наверняка в этих заметках гуру MODx найдут неточности и ошибки. Мы будем очень благодарны, если на это нам укажут в комментариях.
В заметках мы стараемся не просто сразу приводить готовое правильное решение, но и показываем, как мы набивали шишки в процессе поиска.

Особенности использования браузеров в MODx


Лет десять назад в Сети происходила война браузеров. В основном воевали молодой тогда Internet Explorer и старый урод Netscape Navigator. Появлялись и молодые бойцы, такие, как Opera. Война велась с применением запрещенного оружия - основные вояки использовали несовместимые между собой форматы. Что же произошло через 10 лет? Кто победил?

Отголоски прежних войн слышны до сих пор. Правда уже ясно - победил здравый смысл. Netscape Navigator пытавшийся диктовать свои стандарты бесславно проиграл все сражения. Не выиграл и Internet Explorer.  Хотя доля его в Интернет достаточно велика, но это объясняется встроенностью IE в Windows.

Зато появились новые отличные браузеры - Firefox, Safari, Google Chrome. Да и Opera, хотя и растерял свои былые преимущества (прежде всего компактность), также является солидным участником соревнования. Именно соревнования, а не боев без правил, как было раньше.

Мы не собираемся разбирать, какой браузер лучше для пользователей, а какой хуже - нам это всё равно. Но для разработчиков сайта надо знать два аспекта:

1. Как различные браузеры отображают страницы сайта. В идеале - сайт должен одинаково выглядеть в любом браузере. Причем одинаково хорошо, а не одинаково плохо.

2. Как браузер работает с самой системой управления.

Отображение страниц в браузере

 

Как будут отображаться страницы в браузере - полностью зависит от дизайнера. Простая страница, сверстанная с использованием таблиц, будет более или менее прилично отображаться в любом браузере. Однако современные сайты построены сложнее. Широко используются каскадные таблицы стилей (CSS). Верстка страниц выполняется с использованием слоев, на страницах используется динамический HTML, меню различных видов и прочие новинки.

CSS мы используем очень давно. Но десять лет назад приходилось писать что-то наподобие:

Для Internet Explorer
margin-left: 0; margin-right: 10; margin-top: 0; font-family:"arial cyr", "arial", "helvetica"; font-size: 10pt; fontsize: 10pt; text-align:justify;
Для Netscape Navigator
fontfamily:"arial cyr, arial, helvetica"; textalign:justify; leftmargin: 0; rightmargin: 10; topmargin: 0;
 

Видите, как отличаются одни и те же понятия? Исключительно, чтобы "назло".

К счастью, "времена мерзопакостные",  когда доминировали два несовместимых между собой браузера давно прошли. Все современные браузеры достаточно хорошо поддерживают  Javascript, спецификации HTML 4 и CSS. Однако, как всегда, "есть нюансы".

В настоящее время хуже всего страницы отображает Internet Explorer, по крайней мере 6-й и 7-й версии. Все остальные ведущие браузеры (Firefox, Orera, Safari, Chrome) отображают страницы одинаково хорошо. С очень небольшими нюансиками. 

Под "хорошо" и "плохо" мы не имеем ввиду скорость загрузки или безопасность браузеров - это отдельные темы. Здесь мы говорим только о поддержке браузерами стандартов HTML и CSS. Страницы этого сайта полностью сверстаны с использованием CSS. Если посмотреть CSS-файлы, то в них имеются множество ненужных добавок, предназначенных для исправления "багов" Internet Explorer.

Вот фрагмент одного из CSS-файлов, полностью предназначенного для исправления глюков IE:

 html {height: auto; margin-bottom:0;} .news_box {height: 160px;}/* в IE min-height не работает, для него надо height*/ *html textarea { overflow:scroll; overflow-x: hidden; } * html input { overflow: hidden; } body { position:relative; }  /* Essential in IE7 for correct layout scaling ... */ * html body { position:static; }  /* ... but not for IE5.x and IE6 */ #main { position: relative; } /* helpful for several problems in older IE versions*/ .clearfix { display: inline-block; }  /* ... especial for IE7 */ .clearfix { display: block; }      /* ... für IE5,IE6,IE7 */ * html .clearfix { height: 1%; }   /* ... für IE5 + IE6/Win | hasLayout aktivieren */ * html .floatbox { width:100%; } .slidebox {position:relative; margin-right: -1000px; height: 1%;} * html #col1,  * html #col2,  * html #col3 { position:relative; } * html #col_one { position:relative; } body { height: 1%; } #page_margins, #page, #header,  #main, #footer {width: 1200px; zoom:1; } /* IE6 & IE7*/ #page_margins, #page { height: 1%; }  /* IE 5.x       */* html #header,  * html #main, * html #footer { width: 100%; }  /* IE 5.x & IE6 */ * html #header,  * html #main, * html #footer { wid\th: auto; } /* IE 6         */* html ul, * html ol, * html dl { position: relative; } body ol li { display:list-item; } #ie_clearing {    /* (en) Only a small help for debugging */    position:static;    /* (en) Make container visible in IE */    display:block;    /* (en) No fix possible in IE5.x, normal clearing used instead */    \clear:both;    /* (en) forcing clearing-like behavior with a simple oversized container in IE6 & IE7*/    width: 100%;  font-size:0px; margin: -2px 0 -1em 1px;  } 

  В этой таблице стилей всё кажется не нужным, но без неё страницы нашего сайта не будут правильно отображаться в Internet Explorer!

  Следовательно отображение страниц нужно прежде всего проверять в IE. При этом особое внимание нужно обращать на:

а) изменение ширины окна браузера

б) изменение высоты текста

в) изменение длины текста в боковых и средних колонках.

У IE есть еще одна подлая особенность (правда более при табличной верстке) - этот браузер может скрывать ошибки верстки, например, незакрытые теги элементов таблиц. "Шибко умный" (где не надо) IE как бы сам исправляет ошибки и может показать страницу примерно так как задумал дизайнер. Но в других браузерах это не пройдет - если уж они показывают неправильную верстку, то это непременно вина дизайнера, а не браузера.

Отсюда вывод - проверять вид страницы в разных браузерах - в IE и Firefox. А почему именно в Firefox, а не в Opera, например?

Во-первых, если страницу правильно показывает Firefox, то и в остальных хороших браузерах она будет тоже показана правильно.

Во-вторых, в Firefox всегда можно просмотреть исходный код страницы с подсветкой синтаксиса HTML.

В-третьих, для Firefox имеется замечательное дополнение Web Developer имеющее кучу превосходных инструментов для дизайнера. Вот пример использования инструмента CSS Style Information:

CSS Style Information

CSS Style Information

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

Влияние отключения Javascript 

В современных браузерах есть возможность отключить Javascript. MODx широко использует Javascript. Естественно, что при отключении Javascript работа в системе управления невозможна. Естественно, что редактор сайта отключать Javascript в браузере, работающем с админкой не будет. А вот у посетителей сайта Javascript может быть отключен. И это не страшно!

Браузеры Firefox, Safari, Opera показывают front-end и при отключении Javascript, в том числе работает и самое критичное место - главное меню. А вот в Internet Explorer при устаноке Запретить сценарии в главном меню работает только верхний уровень, падающие меню не раскрываются.

  Везде, где мы упоминаем Internet Explorer, речь идет и о других браузерах, созданных на основе движка IE - Avant Browser, Maxton и т.п. В этих надстройках имеются только дополнительные прибамбасы улучшающие интерфейс браузера, а "сердце - пламенный мотор" всё равно остаётся от Internet Explorer.

Работа в системе управления - "админке" 

 

Кто и как портит код страниц

Вот пример того, что лишнего вставил браузер - фрагмент HTML-кода этой страницы:

<p>Отголоски прежних войн слышны до сих пор. Правда уже ясно - победил здравый смысл.
<span class="Apple-style-span" style="font-weight: bold">Netscape Navigator</span>
пытавшийся диктовать свои стандарты бесславно проиграл все сражения. Не выиграл и
<span class="Apple-style-span" style="font-weight: bold">Internet Explorer</span>.
Хотя доля его в Интернет достаточно велика, но это объясняется встроенностью IE в Windows./p>

 

Выделенное жирным без спроса написал браузер Chrome, в котором мы для пробы начали писать эту страницу. При этом после сохранения страницы и последующей перегрузки вылетело сообщение, что страница не найдена и в дереве она не появилась! Пришлось даже залезть напрямую в базу данных, чтобы найти её. Сразу можно сделать вывод - для работы в админке Chrome непригоден. Конечно это еще очень молодой браузер, для учёта его особенностей разработчикам ещё придется поработать. Поэтому оговоримся - непригоден пока, для этой версии MODx, для этой версии TinyMCE.

Но такие же теги вставил в код и более "пожилой" браузер - Safari. Сохранять-то страницы он сохраняет, но во вставке в разные места тегов <span class="Apple-style-span">  с различными добавками мы его уличали неоднократно. И это при том, что особенности Safari явно учитывались разработчиками TinyMCE - упоминание о нем встречается в коде множество раз. Но козни Safari полностью преодолеть видимо не удалось. Поэтому мы с сожалением (Safari вообще-то нам очень нравится), вынуждены отказаться от работы в нем с админкой.

А вот так этот абзац записал Firefox:

<p>Отголоски прежних войн слышны до сих пор. Правда уже ясно - победил здравый смысл.
<strong>Netscape Navigator</strong>
пытавшийся диктовать свои стандарты бесславно проиграл все сражения. Не выиграл и
<strong>Internet Explorer</strong>.
Хотя доля его в Интернет достаточно велика, но это объясняется встроенностью IE в Windows.</p>


В обоих случаях слова Netscape Navigator и Internet Explorer мы выделяли жирным, нажимая кнопку Ж редактора TinyMCE. Но Firefox написал правильные теги <strong></strong>, а Chrome и Safari вставили какие-то левые <span class="Apple-style-span" style="font-weight: bold"></span>.

Чем это грозит? Внешне вылядит-то одинаково? 

В действительности это очень плохо. Тег strong является стандартным. При необходимости мы можем его переопределить, например сделать выделение не жирностью шрифта, а курсивом или цветом. Тогда у нас изменится и оформление всех страниц. Класса "Apple-style-span" в наших таблицах нет. Даже если бы мы его ввели, всё равно в конкретном месте записано собственное определение font-weight: bold. Оно замещает все предыдущие свойства класса и мы никогда не сможем сделатьтакие тексты "не жирными".

Особенности Safari

Помимо вставки "левых" тегов класса "Apple-style-xxx" выяснилось, что при выборе ссылки при работе в Safari возвращается в диалог правильное имя файла, но уже в TinyMCE записывается "#mce_temp_url#". Вообще-то это предусмотрено сценарием, но такая временная метка должна заменяться на реальную ссылку. Оказалось, что это особенность Safari - не заменять эту временную метку. Очень плохо. Пахнет смертным приговором Safari. Двух глюков в стратегических местах достаточно.

 А что же Opera?

Теги strong этот браузер, по крайней мере, не заменяет. Стили из таблиц Opera рендерит замечательно. Но у этого браузера давно известный недостаток - неправильная работа с Javascript. В админке же MODx многое держится на Javascript, а TinyMCE вообще только на Javascript построен.

Сразу бросилось в глаза, что список Стили Opera не показывает, а для нас это является одним из решающих факторов при проверке браузера. Хотя бы только поэтому мы не можем этот браузер использовать для админки. Но появляются всё новые версии, поэтому - "будем посмотреть".

Internet Explorer в системе управления

Честно говоря, влезать с ним в админку мы как-то просто не любим. Явных глюков, вроде бы, не замечено. Скорость загрузки, конечно, значительно меньше чем у Firefox, Safari или Chrome. Может из-за этого душа не лежит - всё-таки на наших сайтах есть деревья с более чем 6000 страниц. Вообще впечатление какое-то нехорошее - окна файлового менеджера прыгают в разные стороны, кнопки прячутся за рамку и её каждый раз надо растягивать. Всё мелочи (явно связанные с упоминавшимися выше багами работы с CSS), но мелочи неприятные. Нет, с таким мы "в разведку не пойдем".

 

  Вывод

 

В настоящее время наиболее удобным браузером для работы с MODx является Firefox - как для работы внутри системы управления, так и для тестирования страниц.
Что будет дальше - пока неизвестно. Совершенствуются браузеры, совершенствуется MODx, совершенствуются плагины к ней.

 

19-01-2009 11:17:56



    Содержание раздела «MODx и браузеры»:
Комментарии любых посетителей

Написать комментарий