Дисклеймер
Данная статья не в коем разе не создана ради холивара, а преследует строго противоположную цель: показать разработчикам MODX Revolution, что ее старший/младший (смотря с какой стороны посмотреть) брат evolutionCMS не так и далеко от вас и содержит ответы на вопросы, которые я часто получал от ревистов. И да, данную статью меня побудило написать увеличение таких вопросов. Поэтому если вы ревист и вам необходимо иногда работать с Эво (подчеркиваю, что я не в коем разе не агитирую за ту или иную ветку) рекомендую пробежаться глазками по этой статье, возможно она вам поможет избежать ненужной траты времени.Данная статья не является научным трудом. А также разбита на две части для лучшего восприятия.
Последняя версия (используйте 1.4.5)
Забано слышать сравнения MODX Revolution 2.5.7 и MODX Evolution 1.0.6))Уважаемые коллеги, на момент написания данной статьи последняя актуальная версия evolutionCMS — 1.4.5 (Обязателен PHP 5.3+)
По словам разработчиков это последний релиз в ветке 1.x, так что можно считать эту версию последней.
О ней дальше и будет речь.
Если вам в руки попалась менее свежая версия, то настоятельно рекомендую обновиться. Делается это не сложно: записывается дистрибутив поверх существующего проекта, запускается установка, а после всех процедур стоит прислушаться к рекомендациям которые предложит сама система. Пример рекомендаций на картинке.
В последней версии более дружелюбный интерфейс, много различных приятных плюсов и фишек, закрыты различные дыры. В большинстве случаев, если на сайте не используются кастомных решений содержащих в себе прямые вызовы myqsl вида mysql_query(), mysql_fetch_row() и т.п. то все проходит хорошо. Если такие решения встречаются, то далее есть два варианта:
- Найти подобные конструкции и переписать их на DBAPI (не myqsl_query(), а $modx->db->query(); не mysql_fetch_row() а $modx->db->getRow())
- В конфигурационном файле MGR_DIR/includes/config.inc.php заменить $database_type c 'mysqli' на 'mysql'. На одном проекте у меня после этого сайт взлетел, на другом нет. Так что обещать не могу, и нужно идти первым путем, но и второй тоже может прокатить.
Во время написания статьи пришла рекомендация от Мисс MODX REVO рассказать в целом об установке… Ну не знаю… Тыкаете далее-далее-далее-далее-сохранить)) На самом деле «коробка» сделана таким образом что лишнего там практически нет. Из рекомендуемых настроек там тоже все нормально выстроено. Единственное, я например ставлю схему в виде только черной шапки и отрубаю глобальные вкладки. Но это уже чисто на любителя.
Устаревшие сниппеты и сниппеты которые нужно использовать
Часть используемых сниппетов берет свое начало аж с 2006-го года. Эти пенсионеры выполняют свои задачи, тем не менее это не отменяет их пенсионного возраста. Их следует заменить более молодыми, благо проходит это все достаточно просто и безболезненно.
Первый «дедушка» — Ditto, аналог getResources.
Ditto это тот сниппет, из-за которого я и начал заниматься MODX))) Тем не менее он достаточно ресурсоемкий и приходится достаточно сильно костылять при работе с ним.
Замена ему и всем сниппетам, которые связаны с ресурсами -DocLister (аналог pdoResources). Все скрипты которые имеют префикс DL (DLCrumbs, DLMenu, etc) — созданы на его основе, собственно как пакет pdoTools.
Помимо скорости DL обладает следующими плюсами (полный список смотрите в документации).
- Умеет работать с любыми таблицами, а не только с site_content
- SplitPagination (который добавляет три точки в пагинации) включен по умолчанию
- имеет параметр prepare. Обалденная штука, которая позволяет обрабатывать данные перед выводом.
- умеет четные шаблоны, нечетные шаблоны, шаблоны n и т.д
- Конфигурацию можно задавать в файлик и потом ее дополнять
- Куча других интересных плюшек и фишек.
Важное отличие от Ditto. Для того, чтобы использовать ТВ-параметры их обязательно нужно перечислить в параметре &tvList, а также указать префикс для них (по умолчанию используется tv, если вы не хотите использовать префикс, то явно это задайте — &tvPrefix=``)
eForm — FormLister — он создан с использованием DL, имеет кучу разнообразных настроек и возможностей.
WayFinder — громоздкая я глючная хрень, меняется на DLMenu
Breadcrumbs — DLCrumbs
AjaxSearch — evoSearch (который умеет в морфологию)
evoGallery (она в последнее время отваливается) — simpleGallery. (http://modx.im/blog/fast-solution/5247.html — вот тут описан переезд с EG на SG)
Дополнения и Extrats.
Одним из аргументов против Эво часто слышал то, что в нем нет магазина дополнений. Хотя существует он года с 2013-го вроде. Его не было в официальной версии MODX Evolution 1.0.15, тем не менее с момента его появления он всегда был в сборке от Dmi3yy и содержится в «коробке» evolutionCMS.
В новой версии 2.0 по слухам предполагается несколько измененная логика работы магазина дополнений, но на данный момент Extrats предоставляет более ста различных дополнений (134 если быть точным) плюс к этому существует возможность установки их из архива, а также создание своего собственного репозитария. По последнему — это уже не столь актуально, ибо в ближайшее время будет переписана логика установки дополнений.
Устанавливаются дополнения кликом по кнопке установить (автоматическое удаление пока не предусмотренно, но в процессе).
Ниже список нескольких важных и полезных дополнений, которые не входят в «коробку».
Sitemap — аналог pdoSitemap
ClientSettings (http://docs.evo.im/04_extras/clientsettings.html) — создает вкладку глобальных настроек
eFilter (http://docs.evo.im/04_extras/efilter.html) — формирование фильтров, работает в связке с DocLister
optimizeJPG (http://docs.evo.im/04_extras/optimizejpg.html) — плагин для оптимизации jpeg
PageBuilder (http://docs.evo.im/04_extras/pagebuilder.html) — управление блоками на странице
Composer — да, да, вы не ослышались! И под ним подразумевается именно composer!)
EvoBlade, EvoTwig — шаблонизаторы Blade и Twig соответственно
Seo4Evo и seoPuck (https://modx.ru/novosti-i-stati/article/385/) — пакеты для СЕО, в последний в ближайшее время будет внесено еще несколько полезных настроек и оптимизации.
Много полезной и нужной информации по работе с дополнениями можно посмотреть тут — http://docs.evo.im/04_extras.html
Работа с библиотеками (замена getServices)
В Revolution для расширения используется метод $modx->getService.
В Evolutiion такого метода нет (хотя может в 2.0 и будет), тем не менее никто нам не запрещает использовать классический вид подключения класса. например:
include_once(MODX_BASE_PATH."assets/lib/MODxAPI/modUsers.php");
$user = new modUsers($modx);
И да. В Evolution нет xPDO, тем не менее есть есть ряд очень интересных и полезных библиотек, которые расширяют MODX и упрощают работу с объектами вида доументов, пользователей и т.д. Хранятся они в папочке /assets/lib/
Загляните, там интересно)
Следующая часть.
Шинкарь Александр 15.08.2018 11:05 #
Алексей Либер 15.08.2018 11:10 #
Евгений 12.10.2018 03:24 #
Алексей Либер 12.10.2018 11:47 #
И кстати. Вполне себе реальная ситуация. Ко мне за эту неделю обратилось двое клиентов с сайтами на Рево, которым разработчики сделали «90% работы» (по сути просто раскидали верстку по чанкам и запилили стандартные компоненты), а дальше не могут. Потому что дальше идут кастомные вещи: переработать модуль ШК, сделать нестандартную логика фильтра, генерацию Word-овского файла и т.д. И обращаясь к ревистам получали ответы то что это либо невозможно, либо очень дорого. При этом я вполне себе за разумные деньги предложил перекинуть на эво и сделать все полностью… Вот тебе и «успокоительное»…
Андрей 13.10.2018 20:45 #
Всё то же самое можно сделать и на рево, и за разумные деньги, не верю что не нашлось разработчика на подобную мелочь, благо толковых специалистов хватает.
Дело далеко не в системе, большинство заказчиков хотят получить работу чуть ли не бесплатно и нанимают непонятно кого за 5 копеек, и рево тут совершенно не причём.
Алексей Либер 13.10.2018 21:02 #
То что можно сделать — я как бы и не отрицал. Я и сам могу такое сотворить. Но трудозатрат на Рево мне видится больше. Хотя возможно я и не прав. Но не потому что я неахти как знаю систему. А в силу специфики. Но с тем, что не в системе дело согласен абсолютно! Дело в умении пользоваться этой системой) И когда «со знанием дела» пишет человек, проработавший пять лет в студиях, о которых нигде кроме его профиля не сказано — вот это, если честно, напрягает)
Евгений 12.10.2018 03:27 #
Алексей Либер 12.10.2018 11:49 #