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

О сниппетах в MODx и на нашем сайте


Сниппеты, наряду с шаблонами и чанками - один из основных видов ресурсов в MODx. Сниппет - самодостаточный код на PHP, выболняющий что-то полезное, как правило с отображением на страницах сайта.

В сборку MODx включено несколько основных сниппетов, сотни дополнительных можно найти на сайтах и написать самостоятельно. Здесь мы приведем несколько примеров использования сниппетов на нашем сайте.

Вызов любого сниппета возможен в двух вариантах:

[ [имя_сниппета] ]  - для некэшируемых страниц

[ !имя_сниппета! ]  - для кэшируемых страниц.

Как именно вызывать конкретный сниппет - обычно написано в документации. 

Какие сниппеты применять?

Скользкий вопрос. В MODx есть очень мощные универсальные сниппеты, такие как Ditto, Wayfinder. С ними можно выполнить множество вариантов отображения текстов страниц. Но мощь и универсальность таких сниппетов имет другую сторону - они требуют много ресурсов, делают лишние запросы. Всё это сказывается на производительности сайтов. Многие гуру MODx избегают применения таких сниппетов и пишут свои - маленькие, быстрые, узкоспециализированные. Однако такой путь не всем подходит - правильно написать хороший сниппет могут не все. Кроме того, "базовые" сниппеты регулярно обновляются разработчиками.

Мы избираем средний путь - применяем и "монстров MODx" и свои сниппеты делаем. Свои, естественно, там где это нам по силам - простенькие. Кое-что заимствуем и из Etomite.

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

В базовой сборке MODx 0.9.6.3  имеется 16 сниппетов. Их мы оставляем для своего сайта, даже если что-то не применяем пока. Иногда мы "от добра добра искали" и устанавливали сторонние сниппеты, аналогичные по функциональности. Теперь, набравшись опыта, стремимся от таких сниппетов избавиться.

Например, в базовой сборке есть сниппет BreadCrumbs, выводящий горизонтальную линейку. Вместо него мы применяли сниппет MolioBreadCrumbs  - скорее из-за того, что вообще нам многое из MolioXXX нравится. Но вот BreadCrumbs обновился уже с версии 0.9b до 1.0.1 (и наверняка не просто так), а MolioBreadCrumbs остался без изменений. В такой ситуации стоит от MolioBreadCrumbs и отказаться, что мы и делаем.

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

Сниппеты нашего сайта

 Сниппет  Описание Пояснения 
AjaxSearch 1.8.1 Поиск с подсветкой результатов.  Система поиска, работающая на нашем сайте. Вывод результатов сделан на отдельную страницу. Найденные слова подсвечиваются и при переходе на страницу из результатов поиска
Breadcrumbs 1.0.1 Навигационная линейка в верхней части контента страницы
 Используем
Ditto 2.0.2 Мощнейший сниппет для создания списков страниц  Используем
eForm 1.4.4 Robust form parser/processor with validation, multiple sending options, chunk/page support for forms and reports, and file uploads.  Пока не используем, не было необходимости
Jot 1.1.4  Ведение и модерирование комментариев к страницам сайта  Используем
ListIndexer 1.0.1 Отображение списка последних документов.  Периодически используем
MemberCheck 1.0 Selectively show chunks based on logged in Web User' group memberships.  Пока не используем
NewsPublisher 1.4 Publish news articles directly from the web.  Пока не используем
Personalize 2.0 Basic personalization for web users.  Пока не используем
Reflect 2.1 Used with Ditto, creates archives of articles, blog entries, image galleries and more.  Пока не используем
UltimateParent 2.0 beta - Travels up the document tree from a specified document and returns the  Используем
Wayfinder 2.0 Completely template-driven menu builder that's simple and fast to configure.  Используем для бокового и нижнего меню
WebChangePwd 1.0 Web User Change Password Snippet.  Пока не используем
WebLogin 1.0 Web User Login Snippet. Используем для входа веб-пользователей
WebSignup 1.1 Web User Signup Snippet.  Пока не используем
MollioMenu    Наше основное меню
ru_AuthorAndDate Вывод автора и даты публикации
 Используем, если надо показать автора и дату на отдельных страницах и в разделах
NewsParser2 Вывод RSS из Etomite  Используем для публикации чужих RSS на нашем сайте
ru_ShowDoc Встраивание содержимого другого документа  Применяем, если надо вставить в контент одного документа содержимое другого документа
ru_download Ссылка на закачки со счетчиком  Простая ссылка на закачки для применения внутри контента
ru_LinkAncor Ссылка на документ по ID  Улучшенная ссылка на документ. Используется, в основном, в чанках - там нет возможности выбора, как в TinyMCE
dwgru_print_snippet Версия для печати  Формирует версию для печати
ru_LoggedUser Имя зарегистрированного пользователя  Выводит имя залогиненного веб-пользователя на странице для входа на сайт и ссылку на выход
ru_DateTime Вывод даты и времени  Просто вывод в заданном формате. Используется в версии для печати.
ru_WebUserNameAndLink Имя зарегистрированного веб-пользователя, логин и ссылка на вход или выход  Выводит имя залогиненного веб-пользователя, а если он не зарегистрирован - ссылку на страницудля входа на сайт с логином
MaxiGallery Галерея картинок  Применяем
cad_LongTitleOrDescription Строка заголовка или пояснения  Выводит LongTitle или Description страницы

  Постепенно мы будем публиковать здесь и материалы по конкретным сниппетам.

24-01-2009 21:49:10



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

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


 
Комментарии с 1 по 10 из 16 | Пред | Начало
Adolfban
Комментарий

Реплика №16: 23.10.2009, 08:23:05
Денис
Комментарий
Любопытно
Реплика №15: 23.10.2009, 03:54:20
Не совсем уловил некоторые моменты, но вообще интересно :)
Николай
Комментарий
Re: О сниппетах в MODx и на нашем сайте
Реплика №14: 11.10.2009, 22:24:37
Опа.. камент. Тестируемс Jot
Ярослав Филатов
Комментарий
Интересно
Реплика №13: 15.09.2009, 18:36:03
Интересно. Вообще чтение вашего блога это не просто глупое пролистывание разных тем или чтениебреда про то, чем человек сегодня занимался, а нахождение реально интересной информации.
Виктор
Комментарий
Увлекательно
Реплика №12: 26.08.2009, 20:37:10
А если это не большой секрет;), автор блога откуда родом?
Bилям
Комментарий
Познавательно
Реплика №11: 24.08.2009, 15:55:15
Да уж. Спасибо, что заставили задуматься :)
ShaggyDoc
Комментарий
вы где проживаете
Реплика №10: 23.08.2009, 08:20:51
Курган
Никита
Комментарий
Жесть
Реплика №9: 22.08.2009, 23:58:18
Давно хотел у вас спросить, автор, вы где проживаете? В смысле города? Если не серкет, конечно:)
Роман Морозов
Комментарий
Занятно
Реплика №8: 21.08.2009, 07:38:03
А кому от этого легче станет?
Гарри
Комментарий
Действительно интересно
Реплика №7: 29.07.2009, 12:03:33
Тема старая конечно же, но прочитал с удовольствием :)
Комментарии с 1 по 10 из 16 | Пред | Начало